我如何 运行 机器上每个用户的剧本
How can I run a playbook for each user on the machine
在我们的 Linux 工作站上,我们有一个 AD 用户设置,因此当用户访问一台机器时,它将生成一个 /home/{username} 文件夹,其中包含我们 skel 中定义的所有项目。所以我们池中的每台机器都有不同的多个用户文件夹。
我需要修改位于每个用户文件夹中的一些文件。我怎样才能对 /home/* 文件夹中的每个文件夹进行 ansible 循环,以便将剧本应用于所有用户?
应该注意的是,剧本是 运行 root,所以我不需要 运行 剧本本身作为用户。
恕我直言,这是处理此问题的错误方法 - 希望贵公司记录了谁应该 有权访问每个系统,并规定自动设置这些帐户在每个系统上。鉴于此,这是一个很好的例子,说明“我们今天需要在获得更好的解决方案设置的同时解决这个问题。”
@mdaniel 提供的示例应该有效。您可以在这样的剧本中实现:
---
- hosts: all
gather_facts: false
tasks:
- name: "Get home directories"
shell: /bin/ls -d /home/*
register: home_dirs
- name: "Touch files"
debug:
msg: "Working on {{ item }}"
loop: "{{ home_dirs.stdout_lines }}"
当然,用您要自动化的任务替换“调试:”模块。
在我们的 Linux 工作站上,我们有一个 AD 用户设置,因此当用户访问一台机器时,它将生成一个 /home/{username} 文件夹,其中包含我们 skel 中定义的所有项目。所以我们池中的每台机器都有不同的多个用户文件夹。
我需要修改位于每个用户文件夹中的一些文件。我怎样才能对 /home/* 文件夹中的每个文件夹进行 ansible 循环,以便将剧本应用于所有用户?
应该注意的是,剧本是 运行 root,所以我不需要 运行 剧本本身作为用户。
恕我直言,这是处理此问题的错误方法 - 希望贵公司记录了谁应该 有权访问每个系统,并规定自动设置这些帐户在每个系统上。鉴于此,这是一个很好的例子,说明“我们今天需要在获得更好的解决方案设置的同时解决这个问题。”
@mdaniel 提供的示例应该有效。您可以在这样的剧本中实现:
---
- hosts: all
gather_facts: false
tasks:
- name: "Get home directories"
shell: /bin/ls -d /home/*
register: home_dirs
- name: "Touch files"
debug:
msg: "Working on {{ item }}"
loop: "{{ home_dirs.stdout_lines }}"
当然,用您要自动化的任务替换“调试:”模块。