如何获取给定用户的authorized_keys列表?

时间:2017-05-19 11:41:09

标签: ansible ansible-2.x authorized-keys

我想写一个ansible playbook,我们可以提供用户名,ansible将显示该用户的授权密钥。授权密钥的路径是{{user_home_dir}} / .ssh / authorized_keys。

我尝试使用下面的shell模块:

---
- name: Get authorized_keys 
  shell: cat "{{ user_home_dir }}"/.ssh/authorized_keys
  register: read_key

- name: Prints out authorized_key 
  debug: var=read_key.stdout_lines

问题是,它会显示/home/ansible/.ssh/authorized_keys中的文件。 “ansible”是我用来连接远程机器的用户。

以下是vars / main.yml

---
authorized_user: username
user_home_dir: "{{ lookup('env','HOME') }}"

有什么想法吗?仅供参考我是ansible的新手并且已经尝试了link

2 个答案:

答案 0 :(得分:0)

在您的vars文件中,您有

user_home_dir: "{{ lookup('env','HOME') }}"

感谢Konstantin指出...所有查找都在控制主机上执行。因此,对env HOME的查找将始终解析为用户的主目录,从该目录调用ansible。

您可以使用ansible的getent模块来检索用户的信息。以下代码段应该有帮助

---

- hosts: localhost
  connection: local
  remote_user: myuser
  gather_facts: no

  vars:
    username: myuser

  tasks:

    - name: get user info
      getent:
        database: passwd
        key: "{{ username }}"
      register: info

    - shell: "echo {{ getent_passwd[username][4] }}"

答案 1 :(得分:0)

以下工作。我们需要成为否则我们将获得权限被拒绝错误。

// option one (imports)
import image1 from './path/to/image/relative/to/COMPONENT';
<img src={image1} />

// option two (relative paths inline)
<img src="path/to/image/relative/to/HTML" />