如果按照 boto 要求将 AWS 凭证指定为环境变量,Ansible playbook 中的 AWS CLI 命令任务可以在命令行中正常工作。更多信息可以在这里找到环境变量。 但它们无法在 Tower 中运行,因为它导出另一组环境。变量:
AWS_ACCESS_KEY
AWS_SECRET_KEY
为了使它们在 Tower 中工作,只需在任务定义中添加以下内容:
environment:
AWS_ACCESS_KEY_ID: "{{ lookup('env','AWS_ACCESS_KEY') }}"
AWS_SECRET_ACCESS_KEY: "{{ lookup('env','AWS_SECRET_KEY') }}"
例如这个任务:
- name: Describe instances
command: aws ec2 describe-instances --region us-east-1
将转变为:
- name: Describe instances
command: aws ec2 describe-instances --region us-east-1
environment:
AWS_ACCESS_KEY_ID: "{{ lookup('env','AWS_ACCESS_KEY') }}"
AWS_SECRET_ACCESS_KEY: "{{ lookup('env','AWS_SECRET_KEY') }}"
注意:这仅注入 env.var。对于特定任务 - 而不是整个剧本! 因此,您必须以这种方式修改每个 AWS CLI 任务。
将环境变量放入文件中:
export AWS_ACCESS_KEY=
export AWS_SECRET_KEY=
将文件保存在远程主机的 ~/.vars 中,然后保存在您的 playbook 中。
- name: Describe instances
command: source ~/.vars && aws ec2 describe-instances --region us-east-2
为了安全起见,您可以在运行后删除文件并在下次播放时再次复制。
虽然这可能不适用于塔,但我们使用开源版本。设置您的 .aws 和/或 .boto 文件。