回答:
Cloud-initファイルは基本的にブートストラップコードであり、各起動前に実行され、ファイルの変更、サービスのセットアップ、ユーザーの作成などを行うことができます。
すべての種類のドロップレットがcloud-initのすべての機能をサポートしているわけではありません。たとえば、CoreOSは独自の実装を使用しており、有効な値のサブセットは非常に限られています。
これをテラフォームで使用するには、液滴の作成時にcloud-initファイルを指定するだけです。
main.tf
:
resource "digitalocean_droplet" "web" {
image = "coreos-stable"
name = "web"
region = "lon1"
size = "2gb"
private_networking = true
ssh_keys = ["${digitalocean_ssh_key.dodemo.id}"]
user_data = "${file("web.conf")}"
}
web.conf
:
#cloud-config
coreos:
units:
- name: "etcd2.service"
command: "start"
- name: "fleet.service"
command: "start"
これにより、たとえば、起動時にCoreOSがetcd2およびフリートを実行するドロップレットが作成されます。
このリポジトリには、さらにいくつかの例があります。これらの構成オプションを使用して、CoreOSで簡単なdockerベースのサービスをセットアップする方法を示します。
TerraformでAuto Scalingグループを作成するときにuser_data
、このASGによって作成されたインスタンスで使用されるを指定できます。ここに文書化-https://www.terraform.io/docs/providers/aws/r/launch_configuration.html#user_data
単一のEC2インスタンスを作成し、user_data
使用するように提供することもできます-https ://www.terraform.io/docs/providers/aws/r/instance.html#user_data
AWS EC2のドキュメントでは、AWSでAMIとして利用可能なほとんどのLinuxディストリビューションで実行されuser_data
ているcloud-init
サービスに渡される方法について説明しています-http ://docs.aws.amazon.com/AWSEC2/latest/UserGuide/user-data.html#user- data-cloud-init