gpt4 book ai didi

ansible - 如何在 Ansible 中获取任意远程用户的主目录?

转载 作者:行者123 更新时间:2023-12-03 05:30:35 25 4
gpt4 key购买 nike

我可以使用 getent 的组合通过 shell 来做到这一点和awk像这样:

getent passwd $user | awk -F: '{ print $6 }'

作为引用,在 Puppet 中我可以使用自定义事实,如下所示:

require 'etc'

Etc.passwd { |user|

Facter.add("home_#{user.name}") do
setcode do
user.dir
end
end

}

这使得用户的主目录可用 home_<user name>事实。

如何获取任意远程用户的主目录?

最佳答案

Ansible(从 1.4 开始)已经在 ansible_env 下为用户显示环境变量变量。

- hosts: all
tasks:
- name: debug through ansible.env
debug: var=ansible_env.HOME

不幸的是,您显然只能使用它来获取连接用户的环境变量,如本剧本和输出所示:

- hosts: all
tasks:
- name: debug specified user's home dir through ansible.env
debug: var=ansible_env.HOME
become: true
become_user: "{{ user }}"

- name: debug specified user's home dir through lookup on env
debug: var=lookup('env','HOME')
become: true
become_user: "{{ user }}"

输出:

vagrant@Test-01:~$ ansible-playbook -i "inventory/vagrant" env_vars.yml -e "user=testuser"

PLAY [all] ********************************************************************

GATHERING FACTS ***************************************************************
ok: [192.168.0.30]

TASK: [debug specified user's home dir through ansible.env] *******************
ok: [192.168.0.30] => {
"var": {
"/home/vagrant": "/home/vagrant"
}
}

TASK: [debug specified user's home dir through lookup on env] *****************
ok: [192.168.0.30] => {
"var": {
"/home/vagrant": "/home/vagrant"
}
}

PLAY RECAP ********************************************************************
192.168.0.30 : ok=3 changed=0 unreachable=0 failed=0

与 Ansible 中的任何内容一样,如果您无法获得一个模块来满足您的需求,那么您随时可以 shell out(尽管应该谨慎使用,因为它可能很脆弱并且描述性较差),使用如下所示的内容:

- hosts: all
tasks:
- name: get user home directory
shell: >
getent passwd {{ user }} | awk -F: '{ print $6 }'
changed_when: false
register: user_home

- name: debug output
debug:
var: user_home.stdout

很可能有一种更简洁的方法来做到这一点,我对使用 become_user 感到有点惊讶切换到指定的用户似乎不会影响 env 查找,但这应该会给你你想要的。

关于ansible - 如何在 Ansible 中获取任意远程用户的主目录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33343215/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com