0

我在 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 模板。

4

1 回答 1

0

对于您的第一个问题,该脚本实际上位于 git repo 的模块结构中。当 terraform 从 CAM 运行时,它会执行“terraform get”,从“source”中提取所有内容:“git:: https://github.com/camc-experimental/terraform-modules.git?ref=master// aws/ami_instance "

脚本文件实际上打包在模块中名为“files”的文件夹中

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

数据“模板文件”“默认”{模板=“${file("${path.module}/${var.module_script}")}”

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

于 2017-06-01T14:58:44.737 回答