Ssh-Keys

在主機之間分發 ssh 公鑰

  • August 17, 2018

我正在使用 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上找到。

引用自:https://serverfault.com/questions/605238