我一直在使用 Ansible 来配置 ec2 实例。每次我启动虚拟机时,我都必须执行
export AWS_ACCESS_KEY_ID = ACCESS-KEY-ID
export AWS_SECRET_ACCESS_KEY = SECRET-ACCESS-KEY
在运行 ansible-playbook 来配置/配置实例之前。
我已经编写了一个使用 Ansible 的原始模块执行上述命令的剧本,即使在执行该剧本之后,我也必须手动执行这些命令才能运行
provision.yml
脚本。有没有从剧本本身做这些的有效方法????,因为我实际上正在从事一些不鼓励手动执行命令的自动化工作。
最佳答案
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
关于environment-variables - 导出 AWS_ACCESS_KEY_ID 和 AWS_SECRET_ACCESS_KEY 的替代方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41141747/