Ssh
Ansible 在多個主機上部署多個授權密鑰
我們需要在伺服器上部署密鑰,但技巧是密鑰很多,並且並非所有密鑰都必須部署在所有伺服器上。現在我們這樣做:
在 vars角色/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/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 }
在開始劇本之前更改角色/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
我會使用一個主機變數“ssh_users”,它說明需要添加主機密鑰的使用者。
- ssh_users: - bob - root - alice
然後,您有一個單獨的變數文件,它定義了每個 SSH 使用者的名稱、密鑰和狀態。導入該變數文件,然後按原樣呼叫您的原始任務。