いろいろ調べてみましたが、これを簡単に行う方法を説明した一貫したリソースを見つけることができませんでした。次のようなプロジェクトがあります:
./
|-src/
|--..
|--Dockerfile
|-docker-compose.yaml
次のような terraform 構成ファイル:
variable "do_token" {}
# Configure the DigitalOcean Provider
provider "digitalocean" {
token = "${var.do_token}"
}
# Create a web server
resource "digitalocean_droplet" "web" {
# ...
}
こんなことができるようになりたい
provider "digitalocean" {
ip = <my-ip>
# docker-compose up ?
}
私の作成ファイルは、アプリケーション アーキテクチャを適切に設定します。私は、それを Digital Ocean のどこかの特定のボックスに (できれば IP 経由で) デプロイして実行する方法が欲しいだけですdocker-compose up
。どうすればいいでしょうか?
ベストアンサー1
供給業者
テラフォームは供給者これにより、リソース作成時にファイルをコピーしたりスクリプトを実行したりできるようになります。
resource "digitalocean_droplet" "web" {
# ...
provisioner "file" {
source = "compose-app/"
destination = "/app"
}
provisioner "remote-exec" {
inline = [
"cd /app",
"docker-compose up",
]
}
}
のシェフプロビジョナーと一緒に使うこともできます料理本を作成する
ドッカー
テラフォームには平野があるDockerプロバイダーしかし、ComposeやSwarmの定義をそのままでは管理できないので、Compose環境を一つずつ定義する必要があります。ボリューム、ネットワーク、画像、コンテナ)。
provider "docker" {
host = "tcp://droplet:2375/"
}
resource "docker_image" "myapp" {
name = "me/myapp:1.0.0"
}
resource "docker_container" "myapp" {
name = "myapp"
image = "${docker_image.myapp.latest}"
ports {
internal = 1234
external = 1234
}
}
クベネフィット
実際のアプリケーションをTerraformでデプロイするには、Kubernetes プロバイダー設定できるようになりますレプリケーション コントローラ走るポッドアクセスされるのはサービスDocker上でKubernetesクラスタを実行し、Kubernetes定義を記述する必要があります。作成するDocker Compose からの変換に役立ちます。