我们需要在服务器上部署密钥,但诀窍是密钥很多,并不是所有服务器都必须部署。 现在我们这样做:
在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文件,然后按原样调用原始任务。