Ssh-Keys
在主機之間分發 ssh 公鑰
我正在使用 Ansible 設置一些機器,並且需要在它們之間啟用無密碼連接。我有一個數據庫主機和幾個從機。對於初始複製,從屬伺服器需要通過 ssh 連接到主伺服器並獲取數據庫的副本。我不確定將所有從屬公鑰動態添加到主
authorized_keys
文件的最佳方法是什麼。我已經考慮過提供從屬公鑰作為變數,然後通過
authorized_key
模組添加它們。但是我必須維護密鑰列表。我正在尋找一種方法,只需將另一台主機添加到從屬組,其餘主機將自動工作。有任何想法嗎?
更新:
到目前為止,我得到了以下虛擬碼:
# collect public keys from slave machines - name: collect slave keys {% for host in groups['databases_slave'] %} shell: /bin/cat /var/lib/postgresql/.ssh/id_rsa.pub register: slave_keys #how to add to an array here? {% endfor %} # Tasks for PostgreSQL master - name: add slave public key sudo: yes authorized_key: user=postgres state=present key={{ item }} with_items: slave_keys
{% %}
僅適用於模板文件而不是直接在劇本中的循環。有什麼辦法可以在我的劇本中做到這一點?
我想出了一個適合我的解決方案。我確實在執行 Ansible 的機器上創建了公鑰/私鑰,並在第一次連接時將密鑰放置到位。
然後我使用以下命令將所有從屬設備的密鑰添加到主設備:
# Tasks for PostgreSQL master - name: add slave public key sudo: yes authorized_key: user=postgres state=present key="{{ lookup('file', '../../../keys/' + item + '/id_rsa.pub') }}" with_items: groups.databases_slave
整個劇本可以在github.com/soupdiver/ansible-cluster上找到。