我一直在使用ansible来配置ec2实例。每次我启动虚拟机时都必须执行 export AWS_ACCESS_KEY_ID = ACCESS-KEY-ID 导出AWS_SECRET_ACCESS_KEY = SECRET-ACCESS-KEY 在运行ansible-playbook之前配置/配置实例。
我已经编写了一个使用ansible原始模块执行上述命令的playbook,即使在执行该playbook之后,我必须先手动执行这些命令,然后才能运行provision.yml脚本。
有没有一种有效的方法从剧本本身做到这些????,因为我实际上正在从事一些不鼓励手动执行命令的自动化工作。
答案 0 :(得分:0)
Ansible可以设置环境变量:
在你的剧本中:
- name: "Simple playbook"
hosts: localhost
roles:
- aws
environment:
AWS_ACCESS_KEY_ID: "{{ aws_access_key }}"
AWS_SECRET_ACCESS_KEY: "{{ aws_secret_key }}"
我强烈建议您学习如何使用ansible-vault作为在Ansible中存储凭据的快捷方式。
另请注意,如果您使用的是ec2.py动态广告资源脚本,则上述解决方案将无效。在播放簿设置环境之前加载库存。在这种情况下,最好的选择是使用备用AWS credential methods之一。一个简单的方法是~/.boto
文件,其内容为:
[Credentials]
aws_access_key_id = YOUR_ACCESS_KEY
aws_secret_access_key = YOUR_ACCESS_SECRET