如何在 Ansible Tower 中运行 AWS CLI 命令任务

问题描述 投票:0回答:2

如果按照 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 任务。

amazon-web-services automation ansible configuration-management aws-cli
2个回答
0
投票

将环境变量放入文件中:

export AWS_ACCESS_KEY=
export AWS_SECRET_KEY=

将文件保存在远程主机的 ~/.vars 中,然后保存在您的 playbook 中。

- name: Describe instances
  command: source ~/.vars && aws ec2 describe-instances --region us-east-2

为了安全起见,您可以在运行后删除文件并在下次播放时再次复制。


0
投票

虽然这可能不适用于塔,但我们使用开源版本。设置您的 .aws 和/或 .boto 文件。

© www.soinside.com 2019 - 2024. All rights reserved.