新しいDocker Terraformプロバイダ:自動化、保護、拡張が容易

このたび、Docker Terraform Provider のリリースを発表できることを嬉しく思います。これは、ユーザーや組織が Docker でホストされるリソースを自動化し、安全に管理できるように設計されています。 これには、リポジトリ、チーム、組織の設定などが含まれ、すべて Terraform の infrastructure-as-code アプローチを使用します。 このプロバイダーは、単一のリポジトリを管理している場合でも、大規模な組織を管理している場合でも、Dockerリソースを自動的に管理するための、統一されたスケーラブルで安全なソリューションを提供します。

2400x1260 evergreen docker ブログ

Docker Hub の新しい操作方法

Docker Terraform Providerは、 Docker Hubとの新しい連携方法を導入し、クラウドネイティブ環境ですでに広く採用されているInfrastructure-as-Codeのベストプラクティスを可能にします。 Docker HubをTerraformと統合することで、組織はリソース管理の合理化、セキュリティの向上、より効果的なコラボレーションを実現しながら、Dockerリソースと他のインフラストラクチャコンポーネントとの同期を確保できます。

問題を

Docker Hubのリソースを手動で管理することは、特にチームが成長し、プロジェクトが拡大するにつれて、煩雑になり、エラーが発生しやすくなります。 構成を維持すると、一貫性がなくなったり、セキュリティが低下したり、合理化されたバージョン管理されたシステムがないとチーム間のコラボレーションが欠如したりする可能性があります。 Docker Terraform Providerは、他のクラウドリソースを管理するのと同じ方法でDocker Hubリソースを管理できるようにすることでこれを解決し、一貫性、監査可能性、および自動化を全面的に確保します。

ソリューション

Docker Terraform Provider は、以下を提供します。

  • 統合管理: このプロバイダーを使用すると、環境間で同じコードと構造を使用して、Docker リポジトリ、チーム、ユーザー、および組織を一貫したワークフローで管理できます。
  • バージョン管理: Docker Hubリソースへの変更はTerraform構成に取り込まれ、Dockerインフラストラクチャを管理するためのバージョン管理された監査可能な方法が提供されます。
  • コラボレーションと自動化: チームはシームレスにコラボレーションできるようになり、Terraform を使用して Docker Hub リソースのプロビジョニングと管理を自動化し、生産性を向上させ、ベスト プラクティスが確実に守られるようになりました。
  • スケーラビリティ: 少数のリポジトリを管理している場合でも、組織全体を管理している場合でも、このプロバイダーはニーズに合わせて簡単に拡張できます。

Docker では、Docker Hub のリソース管理、特に所有者の権限なしにリポジトリを追加する場合、手作業でイライラするプロセスという課題に直面していました。 Terraform プロバイダーを使用すると、社内の誰でも、昇格された Docker Hub のアクセス許可がなくても新しいリポジトリを作成できます。 すべてのレベルの従業員が、同僚を追跡するのではなく、コードを書く権限を与えられるようになりました。 これにより、使い慣れたツールで開発者のワークフローが効率化され、従業員の権限が削減されます。 セキュリティと開発者は満足しています!

リポジトリ、組織チーム、作成されたリポジトリのアクセス許可、PAT トークンを管理している例を次に示します。

terraform {
  required_providers {
    docker = {
      source  = "docker/docker"
      version = "~> 0.2"
    }
  }
}

# Initialize provider
provider "docker" {}

# Define local variables for customization
locals {
  namespace        = "my-docker-namespace"
  repo_name        = "my-docker-repo"
  org_name         = "my-docker-org"
  team_name        = "my-team"
  my_team_users    = ["user1", "user2"]
  token_label      = "my-pat-token"
  token_scopes     = ["repo:read", "repo:write"]
  permission       = "admin"
}

# Create repository
resource "docker_hub_repository" "org_hub_repo" {
  namespace        = local.namespace
  name             = local.repo_name
  description      = "This is a generic Docker repository."
  full_description = "Full description for the repository."
}

# Create team
resource "docker_org_team" "team" {
  org_name         = local.org_name
  team_name        = local.team_name
  team_description = "Team description goes here."
}

# Team association
resource "docker_org_team_member" "team_membership" {
  for_each = toset(local.my_team_users)

  org_name  = local.org_name
  team_name = docker_org_team.team.team_name
  user_name = each.value
}

# Create repository team permission
resource "docker_hub_repository_team_permission" "repo_permission" {
  repo_id    = docker_hub_repository.org_hub_repo.id
  team_id    = docker_org_team.team.id
  permission = local.permission
}

# Create access token
resource "docker_access_token" "access_token" {
  token_label = local.token_label
  scopes      = local.token_scopes
}

今後の取り組み

Docker Terraform Providerは始まったばかりですが、今後さらに多くの機能が追加される予定です。 今後の作業では、 Docker ScoutDocker Build CloudTestcontainers Cloud など、Docker のスイート内の他の製品にサポートを拡大する予定です。 新しい機能と統合により、プロバイダーを進化させ、強化し続けるので、ご期待ください。

フィードバックと問題の追跡については、公式の Docker Terraform Provider リポジトリ にアクセスするか、 問題トラッカーからフィードバックを送信してください。

この新しいプロバイダーは、チームがDocker Hubを使用する方法を強化し、インフラストラクチャの管理、保護、スケーリングを容易にすると同時に、最も重要なこと、つまり優れたソフトウェアの構築に集中できると確信しています。

さらに詳しく