如何将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}"
}

这是我创建AWS实例

的Terraform代码

,但我不确定如何将两者集成。

我还可以将AWS实例IP值用作Linux Bash脚本中的变量值吗?如果是,如何将该IP值传递给我的Linux Bash脚本变量之一?谢谢

如果您只需要运行一次脚本;然后与AWS的用户数据脚本配对非常适合此。

将您的脚本扔到文件templates/user_data.tpl中,使用模板提供商然后创建模板。然后,您只想将渲染的脚本传递到您的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_file.user_data.rendered}"
}
data "template_file" "user_data" {
  template = "${file("templates/user_data.tpl")}"
  vars {
    master_ip = "${aws_instance.master.private_ip}"
  }
}

最新更新