Dev*_*ate 5 linux bash terraform
我的要求是我需要使用terraform创建3个aws实例并在其中运行3个不同的bash脚本.所有文件都在同一台服务器上.
我已经有了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}"
}
Run Code Online (Sandbox Code Playgroud)
这是我创建AWS实例的terraform代码
但我不确定如何整合两者.
我也可以使用Aws实例ip值作为linux bash脚本中的变量值吗?如果是,我怎么能将该ip值传递给我的一个linux bash脚本变量?谢谢
TJ *_*dle 13
如果您只需要运行一次脚本; 然后与AWS的用户数据脚本配对是完美的.
将脚本放入文件templates/user_data.tpl,使用模板提供程序然后创建模板.然后,您只想将渲染的脚本传递给资源的user_data参数aws_instance.
根据需要修改.
模板/ user_data.tpl
#!/bin/bash
echo ${master_ip}
Run Code Online (Sandbox Code Playgroud)
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_file.user_data.rendered}"
}
data "template_file" "user_data" {
template = "${file("templates/user_data.tpl")}"
vars {
master_ip = "${aws_instance.master.private_ip}"
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8257 次 |
| 最近记录: |