【发布时间】:2017-07-02 22:05:49
【问题描述】:
我正在尝试使用 ansible(版本 2.1.2.0)在我们的服务器网络中创建命名 ssh 访问。从跳转框运行 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:
user: "{{ item }}"
state: present
key: "{{ lookup('file', '/home/{{ item }}/.ssh/id_rsa.pub') }}"
with_items:
- "{{ list_of_usernames }}"
我发现查找将失败,因为它无法访问用户的 .ssh 文件夹中的 pub 文件。但是,如果我以 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 权限的新用户?
-
对不起,我在写问题的时候就想写这个,我确实在使用 become: yes
-
为什么你不能只为下一个任务做
become: yes? -
因为这给出了相同的结果,目前正在尝试成为 SztupY 建议的用户
标签: ansible