Ansible在多个主机上部署多个authorized_keys

我们需要在服务器上部署密钥,但诀窍是密钥很多,并不是所有服务器都必须部署。 现在我们这样做:

在variablesroles / authorized_keys / vars / main.yml中

ssh_users: - name: bob key: "{{ lookup('file', 'roles/authorized_keys/vars/bob.pub') }}" state: present - name: root key: "{{ lookup('file', 'roles/authorized_keys/vars/guru.pub') }}" state: present - name: root key: "{{ lookup('file', 'roles/authorized_keys/vars/user.pub') }}" state: absent 

在任务: roles / authorized_keys / tasks / main.yml

 - name: Add ssh key. authorized_key: user={{ item.name }} key="{{ item.key }}" state={{ item.state }} with_items: ssh_users 

在手册中: authorized_keys.yml

 --- - hosts: '{{ hosts }}' vars_files: - '{{ vars }}' roles: - { role: authorized_keys } 

开始之前playbook更改angular色/ authorized_keys / vars / main.yml (存在或不存在)。 当启动playbook添加主机和主机组时:

 ansible-playbook -i production --extra-vars "hosts=web:pg:1.2.3.4" authorized_keys.yml 

以前,这一切都很好,但现在增加了密钥和服务器的数量。 而现在我不记得谁的钥匙是在什么服务器上。

请告诉我如何设置每个密钥的主机列表? 比如像这样的东西:

 - name: bob key: "{{ lookup('file', 'roles/authorized_keys/vars/bob.pub') }}" servers: web,database,12.12.12.12 state: present - name: root key: "{{ lookup('file', 'roles/authorized_keys/vars/guru.pub') }}" servers: api,pg,30.30.30.30 state: present 

我将使用一个主机variables“ssh_users”,其中指出需要添加主机密钥的用户。

 - ssh_users: - bob - root - alice 

然后,你有一个单独的variables文件,它定义了每个SSH用户的名称,密钥和状态。 导入该variables文件,然后按原样调用原始任务。