我試圖使用ansible(版本2.1.2.0)在我們的服務器網絡上創建命名的ssh訪問。從跳箱子我創建一組用戶運行ansible並創建一個私有/公共密鑰對用戶模塊Ansible授權密鑰模塊無法讀取公鑰
- user:
name: "{{ item }}"
shell: /bin/bash
group: usergroup
generate_ssh_key: yes
ssh_key_comment: "ansible-generated for {{ item }}"
with_items: "{{ list_of_usernames }}"
從那裏,我想整個公鑰複製到authorized_users上的每個文件遠程服務器。我使用的是authorized_key_module獲取和複製用戶生成的公鑰作爲遠程服務器上的authorized_key:
- authorized_key:
user: "{{ item }}"
state: present
key: "{{ lookup('file', '/home/{{ item }}/.ssh/id_rsa.pub') }}"
with_items:
- "{{ list_of_usernames }}"
什麼我發現是因爲它是無法訪問文件酒館查找將失敗在用戶的.ssh文件夾中。如果我以root用戶身份運行ansible(對我而言,這不是我願意接受的選項),它將會愉快地運行。
fatal: [<ipAddress>]: FAILED! => {"failed": true, "msg": "{{ lookup('file', '/home/testuser/.ssh/id_rsa.pub') }}: the file_name '/home/testuser/.ssh/id_rsa.pub' does not exist, or is not readable"}
有沒有更好的方式來做到這一點,而不是以root身份運行ansible?
編輯:對不起,我忘了提,我與運行成爲:是
編輯#2:下面是什麼,我試圖運行,在這種情況下課程的壓縮劇本是」會的authorized_key添加到本地主機,但顯示了我面對錯誤:
---
- hosts: all
become: yes
vars:
active_users: ['user1','user2']
tasks:
- group:
name: "users"
- user:
name: "{{ item }}"
shell: /bin/bash
group: users
generate_ssh_key: yes
with_items: "{{ active_users }}"
- authorized_key:
user: "{{ item }}"
state: present
key: "{{ lookup('file', '/home/{{ item }}/.ssh/id_rsa.pub') }}"
become: yes
become_user: "{{ item }}"
with_items:
- "{{ active_users }}"
但是,您將如何創建沒有root權限的新用戶? –
對不起,我在寫這個問題時曾想過寫這個,我的確在使用成爲:是的 – Aeladru
爲什麼你不能只爲下一個任務做'成爲:是'? –