导出的替代方法AWS_ACCESS_KEY_ID& AWS_SECRET_ACCESS_KEY

时间:2016-12-14 11:43:28

标签: environment-variables

我一直在使用ansible来配置ec2实例。每次我启动虚拟机时都必须执行 export AWS_ACCESS_KEY_ID = ACCESS-KEY-ID 导出AWS_SECRET_ACCESS_KEY = SECRET-ACCESS-KEY 在运行ansible-playbook之前配置/配置实例。

我已经编写了一个使用ansible原始模块执行上述命令的playbook,即使在执行该playbook之后,我必须先手动执行这些命令,然后才能运行provision.yml脚本。

有没有一种有效的方法从剧本本身做到这些????,因为我实际上正在从事一些不鼓励手动执行命令的自动化工作。

1 个答案:

答案 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