我正在编写一本可旋转IAM访问键的剧本。它在我的Localhost上运行,在AWS上创建一个新的IAM访问密钥。我想将该键推向其他多个主机的〜/.aws/recertentials文件。
---
- name: Roll IAM access keys
hosts: localhost
connection: local
gather_facts: false
strategy: free
roles:
- iam-rotation
在IAM旋转角色中,我有类似的东西:
- name: Create new Access Key
iam:
iam_type: user
name: "{{ item }}"
state: present
access_key_state: create
key_count: 2
with_items:
- ansible-test-user
register: aws_user
- set_fact:
aws_user_name: "{{ aws_user.results.0.user_name }}"
created_keys_count: "{{ aws_user.results.0.created_keys | length }}"
aws_user_keys: "{{ aws_user.results[0]['keys'] }}"
我想使用将新创建的访问密钥推向Jenkins Builders。我如何在任务中使用with_items
的主机列表?调试任务只是一个占位符。
# Deploy to all Jenkins builders
- name: Deploy new keys to jenkins builders
debug:
msg: "Deploying key to host {{item}}"
with_items:
- "{{ groups.jenkins_builders }}"
主机文件包括我要应用于
的主机列表[jenkins_builders]
builder1.example.org
builder2.example.org
builder3.example.org
我正在执行Localhost的剧本。但是在剧本中,我希望一个任务可以在我从主机文件中获得的远程主机执行。问题是...
我如何在任务中使用
with_items
的主机列表?
将任务分为两个角色。然后执行对Localhost的第一个角色,第二个角色对Jenkins_builders执行:
---
- name: Rotate IAM access keys
hosts: localhost
connection: local
gather_facts: false
strategy: free
roles:
- iam-rotation
- name: Push out IAM access keys
hosts: jenkins_builders
roles:
- iam-propagation
每个AWS最佳实践建议,如果您在Amazon EC2实例上运行了应用程序,并且该应用程序需要访问AWS资源,则应将IAM角色用于EC2而不是键:https://docs.aws.amazon.com/iam/latest/userguide/ID_ROLES_ROLES_SWITCH-ROLE-EC2.HTML
您可以使用
delegate_to:servername
在任务模块中,它将仅在特定的