Configuration

使用 ansible 將使用者的公鑰添加到一個使用者的 authorized_keys 文件中

  • July 1, 2016

試圖將兩個人的 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 的密鑰)。當然,您可以通過控制定義失敗的內容來調整它,以便在發生其他錯誤時仍然失敗。

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