Cloudformation 无法识别 UserData 脚本中的 Shell 个变量
Cloudformation Doesn't Recognize Shell Variables in UserData Scripts
我注意到具有 CloudFormation 的 UserData
属性的脚本 运行 无法识别 EC2 实例的 shell 变量。例如,下面的模板部分在配置时不会打印任何值。有什么办法可以解决这个问题吗?
UserData:
Fn::Base64: !Sub |
#!/bin/bash
echo HOME: $HOME
echo USER: $USER
echo PATH: $PATH
请注意,执行 cloud-init
's User-Data Script 的环境通常不包含 HOME
和 USER
变量,因为脚本在 non-login shell.
在 UserData
中尝试 env
命令以查看可用环境变量的完整列表:
Description: Output shell variables.
Resources:
Instance:
Type: AWS::EC2::Instance
Properties:
ImageId: ami-9be6f38c # amzn-ami-hvm-2016.09.1.20161221-x86_64-gp2
InstanceType: m3.medium
UserData:
Fn::Base64: !Sub |
#!/bin/bash
env
在 Amazon Linux AMI 上(请注意,结果将取决于您使用的 AMI 运行!),我在 Console Output 中得到以下输出:
TERM=linux
PATH=/sbin:/usr/sbin:/bin:/usr/bin
RUNLEVEL=3
runlevel=3
PWD=/
LANGSH_SOURCED=1
LANG=en_US.UTF-8
PREVLEVEL=N
previous=N
CONSOLETYPE=serial
SHLVL=4
UPSTART_INSTANCE=
UPSTART_EVENTS=runlevel
UPSTART_JOB=rc
_=/bin/env
我注意到具有 CloudFormation 的 UserData
属性的脚本 运行 无法识别 EC2 实例的 shell 变量。例如,下面的模板部分在配置时不会打印任何值。有什么办法可以解决这个问题吗?
UserData:
Fn::Base64: !Sub |
#!/bin/bash
echo HOME: $HOME
echo USER: $USER
echo PATH: $PATH
请注意,执行 cloud-init
's User-Data Script 的环境通常不包含 HOME
和 USER
变量,因为脚本在 non-login shell.
在 UserData
中尝试 env
命令以查看可用环境变量的完整列表:
Description: Output shell variables.
Resources:
Instance:
Type: AWS::EC2::Instance
Properties:
ImageId: ami-9be6f38c # amzn-ami-hvm-2016.09.1.20161221-x86_64-gp2
InstanceType: m3.medium
UserData:
Fn::Base64: !Sub |
#!/bin/bash
env
在 Amazon Linux AMI 上(请注意,结果将取决于您使用的 AMI 运行!),我在 Console Output 中得到以下输出:
TERM=linux
PATH=/sbin:/usr/sbin:/bin:/usr/bin
RUNLEVEL=3
runlevel=3
PWD=/
LANGSH_SOURCED=1
LANG=en_US.UTF-8
PREVLEVEL=N
previous=N
CONSOLETYPE=serial
SHLVL=4
UPSTART_INSTANCE=
UPSTART_EVENTS=runlevel
UPSTART_JOB=rc
_=/bin/env