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

时间:2015-11-11 23:40:12

标签: amazon-web-services automation ansible configuration-management aws-cli

如果根据boto要求将AWS凭据指定为环境变量,则Ansible playbooks中的AWS CLI命令任务可以正常运行。更多信息可以在Environment Variables找到。 但他们无法在塔中运行,因为它导出了另一套环境。瓦尔:

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') }}"

e.g。这个任务:

- 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任务。

2 个答案:

答案 0 :(得分:0)

将您的环境变量放在一个文件中:

export AWS_ACCESS_KEY=
export AWS_SECRET_KEY=

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

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

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

答案 1 :(得分:0)

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