在启动ec2时,我可以在user_data字段中包含一个带有参数的脚本文件吗?例如: user_data =" $ {file(" install_software.sh"),user_name pass_word}"
此外,我可以在user_data字段中包含多个脚本文件吗?例如: user_data =" $ {file(" install_software1.sh"," install_software2.sh")}"
我还没有看到它们的任何例子,所以我不知道该格式是什么。如果我无法使用user_data做到这一点,该怎么做?我应该使用遥控器或STH。否则?
==============感谢Koe回应我。在这里,我在SB时发布完整的答案。其他需要。我已经测试了它们。
如何在User_data字段中包括参数:
userdata_arguments_test.tf:
data "template_file" "user_data_test" {
template = "${file("userdata_arg_test.tfl")}"
vars {
myuser = "${var.myuser}"
mypassword = "${var.mypassword}"
}
}
resource "aws_instance" "user_data_test" {
......
user_data = "${data.template_file.user_data_test.rendered}"
}
userdata_arg_test.tfl
#!/bin/bash
echo ${myuser}, ${mypassword} >/tmp/my_info.log
如何在User_data字段中包含多个文件:
userdata_mfiles_test.tf:
data "template_file" "user_data_common" {
template = "${file("userdata_arg_test.tfl")}"
vars {
myuser = "${var.myuser}"
mypassword = "${var.mypassword}"
}
}
data "template_file" "user_data_master" {
template = "${file("userdata_arg_test2.tfl")}"
vars {
myuser2 = "${var.myuser}"
mypassword2 = "${var.mypassword}"
}
}
data "template_cloudinit_config" "master" {
gzip = true
base64_encode = true
part {
content_type = "text/x-shellscript"
content = "${data.template_file.user_data_common.rendered}"
}
part {
content_type = "text/x-shellscript"
content = "${data.template_file.user_data_master.rendered}"
}
}
resource "aws_instance" "user_data_test" {
....
user_data = "${data.template_cloudinit_config.master.rendered}"
}
userdata_arg_test.tfl
#!/bin/bash
echo ${myuser}, ${mypassword} >/tmp/my_info.log
userdata_arg_test2.tfl
#!/bin/bash
echo ${myuser2} + ${mypassword2} >/tmp/my_info2.log
您要使用的是template_file
data "template_file" "user_data" {
template = "${file("script1.sh.tpl")}"
vars {
var1 = "foo"
var2 = "bar"
}
}
如果要在USE_DATA中使用多个脚本,则需要遵循云 - 内部多部分格式,然后将其放入一个或几个文件 *.tpl中,然后使用Terraform标准插值或Inline模板组合它们。
。参考:
https://www.terraform.io/docs/providers/template/d/file.htmlhttp://cloudinit.readthedocs.io/en/latest/topics/format.html#mime-multi-part-archivehttps://github.com/ukayani/cloud-init-example/blob/master/sampleuserdata
感谢Koe回应我。在这里,我在SB时发布完整的答案。其他需要。我已经测试了它们。
如何在User_data字段中包括参数
userdata_arguments_test.tf:
data "template_file" "user_data_test" {
template = "${file("userdata_arg_test.tfl")}"
vars {
myuser = "${var.myuser}"
mypassword = "${var.mypassword}"
}
}
resource "aws_instance" "user_data_test" {
......
user_data = "${data.template_file.user_data_test.rendered}"
}
userdata_arg_test.tfl
#!/bin/bash
echo ${myuser}, ${mypassword} >/tmp/my_info.log
如何在USER_DATA字段中包含多个文件
userdata_mfiles_test.tf:
data "template_file" "user_data_common" {
template = "${file("userdata_arg_test.tfl")}"
vars {
myuser = "${var.myuser}"
mypassword = "${var.mypassword}"
}
}
data "template_file" "user_data_master" {
template = "${file("userdata_arg_test2.tfl")}"
vars {
myuser2 = "${var.myuser}"
mypassword2 = "${var.mypassword}"
}
}
data "template_cloudinit_config" "master" {
gzip = true
base64_encode = true
part {
content_type = "text/x-shellscript"
content = "${data.template_file.user_data_common.rendered}"
}
part {
content_type = "text/x-shellscript"
content = "${data.template_file.user_data_master.rendered}"
}
}
resource "aws_instance" "user_data_test" {
....
user_data = "${data.template_cloudinit_config.master.rendered}"
}
userdata_arg_test.tfl
#!/bin/bash
echo ${myuser}, ${mypassword} >/tmp/my_info.log
userdata_arg_test2.tfl
#!/bin/bash
echo ${myuser2} + ${mypassword2} >/tmp/my_info2.log