Configuration
使用 ansible 將使用者的公鑰添加到一個使用者的 authorized_keys 文件中
試圖將兩個人的 Github 公鑰添加到使用者的授權使用者文件中。我能夠成功檢索 SSH 密鑰:
--- - hosts: 127.0.0.1 connection: local vars: my_users: belminf: "belminf" bob: "tmessins" tasks: - name: Retrieving all keys from GitHub shell: /usr/bin/curl https://github.com/{{ item.value }}.keys 2> /dev/null register: ssh_keys with_dict: my_users - debug: var=ssh_keys
但是,我不確定如何遍歷
ssh_keys
結果並使用authorized_keys
任務添加檢索到的鍵。我荒謬的嘗試:
- name: Adding keys to authorized_keys authorized_key: user=belminf key="{{ item }}" path=/home/belminf/test_auth state=present with_items: ssh_keys.results
結果在
invalid key specified
. 可以理解,但我沒有想法。任何人?
好的,我對你的劇本做了一些調整,這是修改後的版本
--- - hosts: 127.0.0.1 connection: local vars: my_users: belminf: "belminf" bob: "tmessins" tasks: - name: Retrieving all keys from GitHub shell: /usr/bin/curl https://github.com/{{ item.value }}.keys 2> /dev/null register: ssh_keys with_dict: my_users - name: Adding keys to authorized_keys authorized_key: user=belminf key="{{ item.stdout }}" path=/home/belminf/test_auth state=present with_items: ssh_keys.results ignore_errors: yes
一些變化說明:
- 在
authorized_key
模組上,密鑰已更改為item.stdout
. 標準輸出是您需要的公鑰。- 在
authorized_key
模組上,我定義ignore_errors: yes
在您的 curl 任務無法獲取時恢復 playbook 執行,無論是網際網路問題還是 404 Not found(如 tmessins 的密鑰)。當然,您可以通過控制定義失敗的內容來調整它,以便在發生其他錯誤時仍然失敗。