如何添加linux的bash脚本文件到terraform代码?

问题描述 投票:2回答:1

我的要求是我需要创建使用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}"
}

这是我terraform代码来创建一个AWS实例

但我不知道我怎么可以整合两者。

也可以我使用AWS实例中的IP值在linux bash脚本变量的值?如果是的话我怎么能传递IP值我的Linux bash脚本变量之一?谢谢

linux bash terraform
1个回答
13
投票

如果你只需要运行一次脚本;然后用AWS” user-data scripts配对是为这个完美的。

把你的脚本到文件templates/user_data.tpl,使用template provider来,然后创建模板。然后你就只想渲染脚本传递到您的user_data资源aws_instance说法。

根据需要修改。

模板/ user_data.tpl

#!/bin/bash
echo ${master_ip}

Terra form_file.台风

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}"
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.