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

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

我们需要在服务器上部署密钥,但问题是密钥很多,而且不一定所有密钥都必须部署在所有服务器上。现在我们按如下方式操作:

以瓦尔斯角色/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

在任务中:角色/authorized_keys/任务/main.yml

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

在剧本中:授权密钥.yml

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

开始剧本更改之前角色/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

答案1

我将使用主机变量“ssh_users”,它声明需要添加主机密钥的用户。

- ssh_users:
   - bob
   - root
   - alice

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

相关内容