如何将linux bash脚本文件添加到terraform代码中?
我的需求是我需要使用terraform创建3个aws实例并在其中运行3个不同的bash脚本。所有文件都在同一台服务器上。如何将linux bash脚本文件添加到terraform代码中?
我已经有terraform代码来创建一个基础架构和3 bash脚本准备使用。
resource "aws_instance" "master" { instance_type = "t2.xlarge"
ami = "${data.aws_ami.ubuntu.id}"
key_name = "${aws_key_pair.auth.id}"
vpc_security_group_ids = ["${aws_security_group.public.id}"]
subnet_id = "${aws_subnet.public1.id}"
}
这是我terraform代码来创建一个AWS实例
,但我不知道我怎么可以整合两者。
我也可以使用Aws实例IP值作为Linux bash脚本中的变量值吗?如果是的话,我该如何将这个ip值传递给我的一个linux bash脚本变量? 谢谢
回答:
如果您只需要运行脚本一次;那么与AWS'user-data scripts搭配就完美了。
将您的脚本放入文件templates/user_data.tpl
,使用template provider来创建模板。然后,您只需要将呈现的脚本传递给aws_instance
资源的user_data参数。
根据需要进行修改。
模板/ user_data.tpl
#!/bin/bash echo ${master_ip}
terraform_file.tf
resource "aws_instance" "master" { instance_type = "t2.xlarge"
ami = "${data.aws_ami.ubuntu.id}"
key_name = "${aws_key_pair.auth.id}"
vpc_security_group_ids = ["${aws_security_group.public.id}"]
subnet_id = "${aws_subnet.public1.id}"
}
resource "aws_instance" "slave" {
instance_type = "t2.xlarge"
ami = "${data.aws_ami.ubuntu.id}"
key_name = "${aws_key_pair.auth.id}"
vpc_security_group_ids = ["${aws_security_group.public.id}"]
subnet_id = "${aws_subnet.public1.id}"
user_data = "${data.template.user_data.rendered}"
}
data "template" "user_data" {
template = "${file("templates/user_data.tpl")}"
vars {
master_ip = "${aws_instance.master.private_ip}"
}
}
以上是 如何将linux bash脚本文件添加到terraform代码中? 的全部内容, 来源链接: utcz.com/qa/259344.html