このたび、Docker Terraform Provider のリリースを発表できることを嬉しく思います。これは、ユーザーや組織が Docker でホストされるリソースを自動化し、安全に管理できるように設計されています。 これには、リポジトリ、チーム、組織の設定などが含まれ、すべて Terraform の infrastructure-as-code アプローチを使用します。 このプロバイダーは、単一のリポジトリを管理している場合でも、大規模な組織を管理している場合でも、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 Scout、 Docker Build Cloud、 Testcontainers Cloud など、Docker のスイート内の他の製品にサポートを拡大する予定です。 新しい機能と統合により、プロバイダーを進化させ、強化し続けるので、ご期待ください。
フィードバックと問題の追跡については、公式の Docker Terraform Provider リポジトリ にアクセスするか、 問題トラッカーからフィードバックを送信してください。
この新しいプロバイダーは、チームがDocker Hubを使用する方法を強化し、インフラストラクチャの管理、保護、スケーリングを容易にすると同時に、最も重要なこと、つまり優れたソフトウェアの構築に集中できると確信しています。
さらに詳しく
- 公式の Docker Terraform Provider リポジトリにアクセスしてください。
- フィードバックは Issue Tracker から送信してください。
- Docker Newsletter を購読してください。
- Docker デスクトップの最新リリースを入手します。
- 質問がありますか? Docker コミュニティがお手伝いします。
- ドッカーは初めてですか? 始めましょう。