2017-06-15 3 views
0

で作業していない私は現在、カスタムAWS AMIイメージを持っているとテラフォームはuser_dataをセクション内のスクリプトまたはインラインコードを実行することはできません。これはAWS AMIイメージでは機能しますが、自分自身を使用しているときには機能しません。はテラフォームAWSのuser_dataカスタムAMI画像

data "template_file" "user_data" { 
template = "${file("sample")}" 
} 


resource "aws_launch_configuration" "test" { 
image_id = "ami-xxxxxx" 
instance_type = "t2.medium" 
security_groups = ["xxxxx", "xxxxxxx"] 
key_name = "xxxxxxx" 
} 



resource "aws_instance" "ZC1" { 
    ami = "ami-xxxxxxx" #ZC AMI IMAGE 
    instance_type = "t2.medium" 
    subnet_id = "subnet-xxxxx" 
    private_ip = "x.x.x.x" 
    key_name = "xxxxxx" 
    vpc_security_group_ids = ["xxxxx", "xxxxxxx"] 
    user_data = "${data.template_file.user_data.rendered}" 
    tags { 
    "Name" = "Terraform Script Test" 
     } 
} 
+4

あなたは「user_dataのセクションでスクリプトまたはインラインコード」と言うあなたは '#クラウド-config'をスニペットを意味するのですか?この種の設定は通常 'cloud-init'パッケージで処理され、イメージにインストールして設定する必要があります(ほとんどの一般的なAMIではデフォルトで利用可能です)。あなたの質問を編集して、AMIがどのようにビルドされているか、どこから来たのか、そしてuser_dataがどのようになっているかについての詳細を提供できますか? –

+0

試すhttps://stackoverflow.com/questions/33690287/how-to-install-aws-cfn-bootstrap-cfn-init-package-in-redhat-using-cloudformation – Gangaraju

答えて

0

EC2インスタンス上user_dataを設定し、AWSはちょうどthe metadata API経由でインスタンスにこのデータを利用できるようになります。 AMI内にインストールされたソフトウェアは、このデータを取得し、それをどうするかを決定する必要があります。

あなたが利用可能curlを持っていると仮定すると、あなたのインスタンスにログインし、次のようなコマンドを実行して、実際には、これを見ることができます:

curl http://169.254.169.254/latest/user-data 

期待通りに動作している場合、あなたはここにあなたが指定した値が表示されるはずですuser_data

ユーザデータを処理する最も一般的な方法は、を取得し、見つかったものに応じてさまざまな処理を実行するインスタンスブート(たとえばsystemd、initなど)によって実行されるように設計されたプログラムであるcloud-init経由ですそこ。たとえば、取得したデータが普通のシェルスクリプトのように見える場合は、cloud-initがそのスクリプトを実行します。

などCoreOS Ignitionなどcloud-initに他の選択肢があります。独自のニーズがある場合は、ブート時設定に対処する独自のプログラムを自由に作成することもできます。

ここで起動する最も簡単な方法は、cloud-initがAMI作成の一部としてインストールされ、起動時に実行されるように設定することです。次に、Amazon LinuxまたはUbuntuのAMIの使い慣れたブート時の設定動作が表示されます。

関連する問題