Bluemix Cloud Automation Manager引用外部文件

时间:2017-05-31 11:42:56

标签: amazon-ec2 ibm-cloud terraform cloud-automation-manager

我在Bluemix上查看Amazon ec2实例模板的预定义LAMP堆栈,并找到以下代码:

"awsPHPInstance": {
            "source": "git::https://github.com/camc-experimental/terraform-modules.git?ref=master//aws/ami_instance",
            "aws_ami": "${module.find_ami.aws_ami}",
            "aws_instance_type": "t2.micro",
            "aws_subnet_id": "${module.awsNetwork.subnet_id}",
            "aws_security_group_id": "${module.awsNetwork.application_security_group_id}",
            "aws_cam_public_key_id": "${aws_key_pair.cam_lamp_public_key.id}",
            "hostname": "${var.php_instance_name}",
            "module_script": "files/createCAMUser.sh",
            "module_script_name": "createCAMUser.sh",
            "module_script_variable_1": "${var.cam_user}",
            "module_script_variable_2": "${var.cam_pwd}"
        }

我对"module_script": "files/createCAMUser.sh"不是很清楚。这个文件的文件夹在哪里,其中包含shell脚本?据我所知,我们只能有单页独立的terraform模板。

1 个答案:

答案 0 :(得分:0)

对于您的第一个问题,该脚本实际上位于git repo中的模块结构中。当从CAM运行terraform时,它会做一个" terraform get"它吸引了所有东西 "来源":" git :: https://github.com/camc-experimental/terraform-modules.git?ref=master//aws/ami_instance"

脚本文件实际上打包在名为" files"

的文件夹中的模块中

该模块使用以下语法来引用该文件:

data" template_file" "默认" {   template =" $ {file(" $ {path.module} / $ {var.module_script}")}"

对于第二个问题,一个可能的解决方案是对pem文件的内容进行base64编码,并将其作为输入字符串传递给模板,而不是尝试从文件中读取它