【问题标题】:How can i add linux bash script file into terraform code?如何将 linux bash 脚本文件添加到 terraform 代码中?
【发布时间】:2019-02-07 09:03:25
【问题描述】:

我的要求是我需要使用 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 代码

但我不确定如何将两者结合起来。

我还可以在 linux bash 脚本中使用 Aws 实例 ip 值作为变量值吗?如果是,我如何将该 ip 值传递给我的 linux bash 脚本变量之一? 谢谢

【问题讨论】:

  • 到目前为止你尝试过什么?你能包括你的代码吗?
  • terraform 中的本地执行,但它不起作用。
  • 您是否使用多个帐户来编辑同一个帖子?不是最好的主意,现在您的修改必须经过审核。
  • 您应该在 terraform 资源的上下文中阅读 count。这将允许您创建 3 个类似的实例。可以通过在供应期间引用实例资源来使用 IP。所有这些信息都在这里详述terraform.io/intro/getting-started/provision.html

标签: linux bash terraform


【解决方案1】:

如果您只需要运行一次脚本;那么与 AWS 的 user-data scripts 配对就非常适合了。

将您的脚本放入文件templates/user_data.tpl,然后使用template provider 创建模板。然后,您只需要将渲染的脚本传递给您的 aws_instance 资源的 user_data 参数。

根据需要进行修改。

templates/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}"
  }
}

【讨论】:

猜你喜欢
  • 2018-09-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-10-20
  • 2019-10-24
  • 2011-12-04
  • 2015-03-31
  • 1970-01-01
相关资源
最近更新 更多