Terraformでcloud-initを使用する方法は?


24

私はDigital OceanとTerraformで作業しており、すでにドメイン、サブドメイン、ネットワーク設定、ホストを自動化できますがUser data、次のようなセクションがあります。

ユーザーデータ

その分野の記述は言いAllows the use of Cloud-init to configure your dropletます。周りを見回して文書を見つけました。

私の質問は、Terraformを使用しながらこれをどのように活用するのですか?

回答:


21

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ベースのサービスをセットアップする方法を示します。


5

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.