Cloudformation 启动配置用户数据文件
Cloudformation launch config userdata file
在使用云形成模板编写启动配置脚本时是否要使用文件?我的启动配置对于 4096 个字符的限制来说太大了。 cli允许这个,terraformer允许这个,创建启动配置的界面也允许这个。
我还没有找到像在其他产品中那样指定用户数据文件的方法。但是,我的解决方法是将用户数据文件上传到 s3,然后下载模板中的用户数据并 运行 它。
这是我的模板中适用的 UserData 部分。
这是一个 powershell 示例。
"UserData": {
"Fn::Base64": {
"Fn::Join": [
"\n",
[
"<powershell>",
"Read-S3Object -BucketName deployment -Key userdata/user-data.ps1 -File 'c:/temp/userdata.ps1' -Region us-west-2",
"Invoke-Expression 'c:/temp/userdata.ps1'",
"Remove-Item -Recurse -Force C:/temp",
"</powershell>"
]
]
}
}
假设您可以在 linux/mac 系统上预处理 bootstrap 用户数据文件并通过 cli 调用 cloudformation,您可以执行以下操作。
首先,在您的 cloudformation 模板中创建多个参数以接受输入。我将这些参数称为 UserData、UserData2、UserData3 和 UserData4。
删除当前目录中任何先前存在的 'split' 文件:
rm -f ./xa?
base64 编码您的 bootstrap 脚本文件:
BOOTSTRAP_BASE64_ENC=$(base64 -w0 ${GENERATED_USERDATA_FILE_PATH})
将base64编码后的文件内容拆分成4096字节的部分:
echo $BOOTSTRAP_BASE64_ENC | split -b 4096
调用'aws cloudformation create-stack'时将拆分文件传递给上述参数:
ParameterKey=UserData,ParameterValue=$(cat xaa) ParameterKey=UserData2,ParameterValue=$(cat xab) ParameterKey=UserData3,ParameterValue=$(cat xac) ParameterKey=UserData4,ParameterValue=$(cat xad)
在 Launchconfig 的 'Properties' 部分,您可以从传入的参数中重新组合用户数据文件,如下所示:
"UserData" : { "Fn::Join" : [ "", [ { "Ref" : "UserData" }, { "Ref" : "UserData2" }, { "Ref" : "UserData3" }, { "Ref" : "UserData4" }]]},
在使用云形成模板编写启动配置脚本时是否要使用文件?我的启动配置对于 4096 个字符的限制来说太大了。 cli允许这个,terraformer允许这个,创建启动配置的界面也允许这个。
我还没有找到像在其他产品中那样指定用户数据文件的方法。但是,我的解决方法是将用户数据文件上传到 s3,然后下载模板中的用户数据并 运行 它。 这是我的模板中适用的 UserData 部分。 这是一个 powershell 示例。
"UserData": {
"Fn::Base64": {
"Fn::Join": [
"\n",
[
"<powershell>",
"Read-S3Object -BucketName deployment -Key userdata/user-data.ps1 -File 'c:/temp/userdata.ps1' -Region us-west-2",
"Invoke-Expression 'c:/temp/userdata.ps1'",
"Remove-Item -Recurse -Force C:/temp",
"</powershell>"
]
]
}
}
假设您可以在 linux/mac 系统上预处理 bootstrap 用户数据文件并通过 cli 调用 cloudformation,您可以执行以下操作。
首先,在您的 cloudformation 模板中创建多个参数以接受输入。我将这些参数称为 UserData、UserData2、UserData3 和 UserData4。
删除当前目录中任何先前存在的 'split' 文件:
rm -f ./xa?
base64 编码您的 bootstrap 脚本文件:
BOOTSTRAP_BASE64_ENC=$(base64 -w0 ${GENERATED_USERDATA_FILE_PATH})
将base64编码后的文件内容拆分成4096字节的部分:
echo $BOOTSTRAP_BASE64_ENC | split -b 4096
调用'aws cloudformation create-stack'时将拆分文件传递给上述参数:
ParameterKey=UserData,ParameterValue=$(cat xaa) ParameterKey=UserData2,ParameterValue=$(cat xab) ParameterKey=UserData3,ParameterValue=$(cat xac) ParameterKey=UserData4,ParameterValue=$(cat xad)
在 Launchconfig 的 'Properties' 部分,您可以从传入的参数中重新组合用户数据文件,如下所示:
"UserData" : { "Fn::Join" : [ "", [ { "Ref" : "UserData" }, { "Ref" : "UserData2" }, { "Ref" : "UserData3" }, { "Ref" : "UserData4" }]]},