繁体   English   中英

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

[英]How can i add linux bash script file into terraform code?

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM