Ssh-Keys
Ansible 中的 authorized_keys 和 with_items
我正在嘗試使用 Ansible 創建新使用者並填充他們的 ~/.ssh/authorized_keys 文件。這是我的任務:
- name: Create user account user: name="{{ item.username }}-ns" comment="{{ item.realname }}" groups=adm,sudo, append=yes password="{{ item.password }}" with_items: "{{ ssh_users }}" - name: copy ssh keys to authorized_keys authorized_key: user="{{ item.username }}-ns" key="{{ sshkey_path }}/{{ item.username }}.pub" with_item: "{{ ssh_users }}"
我的變數文件如下所示:
ssh_users: - username: "jdoe" realname: "jrow" password: "$6$FWhXrnkizCqwKJcM$y55ETlvthHA49NuzwYgKAmOTnsBDRzfXE1OiOuJ.HHwVuI4P/BQrR/eKgYOioevIrgYYw.HpeP/sxCR3M38SW/" - username: "jroe" realname: "Jane Roe" password: "$6$wQhvxq3C.egKzrGi$na0M4jn3bi1lM2dz2YvdbAvvJBvbg4iGH1K6j7sHnZZt7mZggexHPvxOT799pfaDKmU6xDrbtbrLsxviGyABA0" - username: "testuser" realname: "Test User" password: "$6$U24oz4dsfdYD/LZ$fuziBEkc2q/POHSEvfcuTaD6wFTF.49RbU8z8JLQk3oki/He87cYqpSZtL16A11EBaG6VdemXdy6\V/"
我已將各種使用者的公共 ssh 密鑰設置到一個 publickeys 目錄中,我將其放入名為“sshkey_path”的變數中。每個使用者都有一個公鑰文件(例如 jdoe.pub)。
當我執行劇本時,使用者帳戶創建正常,但 authorized_keys 部分說:
ERROR! 'with_item' is not a valid attribute for a Task The error appears to have been in 'user-add.yaml': line 29, column 7, but may be elsewhere in the file depending on the exact syntax problem. The offending line appears to be: - name: copy ssh keys to authorized_keys ^ here
有什麼想法可能會出錯嗎?原則上,它應該可以工作,因為在網上找到了類似的例子。我玩過這種格式,但無法讓它發揮作用。感謝您的指點。
它失敗的原因是因為實際的外掛被稱為with_items而不是 with_item。你忘了s。
為後代:
除了“linuxdynasty”指出的關於的錯誤外
with_items
,我引用密鑰文件的方式還有一個錯誤。我嘗試使用以下語法:
key="{{ sshkey_path }}/{{ item.username }}.pub"
但這在這種情況下不起作用,因為
authroized_key
需要一個文件。必須使用“with_files”或查找來獲得此資訊。為了使它在我的情況下工作,我必須將多個變數連接在一起,這是我在這篇StackOverflow文章的幫助下完成的。我想出的最終語法是:
key="{{ lookup('file', sshkey_path+item.username+'.pub') }}"
它工作得很好。