Gle*_*eeb 14 linux bash amazon-ec2 amazon-web-services
我试图用EC2s用户数据设置环境变量,但我没做什么似乎工作
这是我试过的用户数据脚本
Run Code Online (Sandbox Code Playgroud)#!/bin/bash echo "export HOST_URL=checkEmai-LoadBala-ICHJ82KG5C7P-23235232.us-east-1.elb.amazonaws.com" >> /env.sh source /env.sh
而另一个:
Run Code Online (Sandbox Code Playgroud)#!/bin/bash echo "#!/bin/bash" >> /env.sh echo "export HOST_URL=checkEmai-LoadBala-ICHJ82KG5C7P-67323523.us-east-1.elb.amazonaws.com" >> /env.sh chmod +x /env.sh /env.sh
他们都绝对没有,如果我登录并发出命令source /env.sh或/env.sh它的工作原理.所以这一定是我要做的事情是禁止的.
这是/var/log/cloud-init-output.log使用-e -x 的输出
Run Code Online (Sandbox Code Playgroud)+ echo 'export HOST_URL=checkEmai-LoadBala-ICHJ82KG5C7P-2141709021.us-east-1.elb.amazonaws.com' + source /env.sh ++ export HOST_URL=checkEmai-LoadBala-ICHJ82KG5C7P-2141709022.us-east-1.elb.amazonaws.com ++ HOST_URL=checkEmai-LoadBala-ICHJ82KG5C7P-2141709022.us-east-1.elb.amazonaws.com
仍然echo $HOST_URL是空的
根据要求,完整的UserData脚本
Run Code Online (Sandbox Code Playgroud)#!/bin/bash set -e -x echo "export HOST_URL=checkEmai-LoadBala-ICHJ82KG5C7P-2141709021.us-east-1.elb.amazonaws.com" >> /env.sh source /env.sh /startup.sh staging 2649
Zif*_*ion 10
EC2上的用户数据脚本在启动后在其自己的进程中执行.环境变量在该进程中设置,并在进程退出时消失.您将不会在其他进程中看到环境变量,即登录shell或其他程序.
您将不得不设计一种方法将这些环境变量放入需要查看它们的程序中.
你在哪里需要这些变量?在"/startup.sh staging 2649"中?
编辑
试试这个:
#!/bin/bash
set -e -x
export HOST_URL="checkEmai-LoadBala-ICHJ82KG5C7P-2141709021.us-east-1.elb.amazonaws.com"
/startup.sh staging 2649
Run Code Online (Sandbox Code Playgroud)
然后编辑"/startup.sh",并将以下行放在顶部:
echo $HOST_URL > /tmp/var
Run Code Online (Sandbox Code Playgroud)
引导实例,然后在此处粘贴/ tmp/var.
Ash*_*han 10
为EC2实例定义环境变量的一种更可配置的方法是使用EC2参数存储.这种方法可以更轻松地管理大量EC2实例的不同参数,这些参数都使用AWS KMS和纯文本加密.它还允许在EC2实例级别的最小变化时更改参数值.步骤如下.
例如,使用Get-Parameter命令检索db_connection_string参数(未加密).
export DB_CONNECTION =$(aws?--region=us-east-2 ssm get-parameter?--name "db_connection" --query 'Value')
Run Code Online (Sandbox Code Playgroud)
注意:有关设置AWS KMS密钥,定义加密字符串,管理IAM策略等的更多详细信息,请参阅以下文章.
我发现这是使用用户数据为所有用户设置环境变量的一种非常简单的方法.它允许我配置应用程序,以便相同的AMI可以使用多个场景:
#!/bin/bash
echo export DB_CONNECTION="some DB connection" >> /etc/profile
echo export DB_USERNAME="my user" >> /etc/profile
echo export DB_PASSWORD="my password" >> /etc/profile
Run Code Online (Sandbox Code Playgroud)
现在,所有用户都将DB_CONNECTION,DB_USERNAME和DB_PASSWORD设置为环境变量.
小智 6
您可以添加另一个 shell 脚本,/etc/profile.d/yourscript.sh其中将包含您要添加的一组环境变量。
此脚本将在每次启动时运行,您的变量将可供所有用户使用。
#!/bin/sh
echo 'export AWS_DEFAULT_REGION=ap-southeast-2' > ~/myconfiguration.sh
chmod +x ~/myconfiguration.sh
sudo cp ~/myconfiguration.sh /etc/profile.d/myconfiguration.sh
Run Code Online (Sandbox Code Playgroud)
上面的代码创建了一个 shell 脚本来为 aws 默认区域设置环境变量并将其复制到profile.d.
| 归档时间: |
|
| 查看次数: |
24431 次 |
| 最近记录: |