为不同的本地用户运行相同的 Ansible 剧本



我想使用ansible playbook为本地主机上的两个不同用户(即admin和brian(设置相同的配置。目前,"通用"角色安装两个用户都可以访问的程序。此外,我还有特定于用户的设置(例如,桌面壁纸(。当我运行我的 playbook 时,用户特定的设置会从一个用户更新,但不会从另一个用户更新。例如,如果我运行我的剧本,布莱恩的墙纸会改变,但管理员的墙纸保持不变。我知道become_user,但不希望我运行的每个任务都这样做。是否可以定义主机文件或剧本,以便我可以简单地指定我希望剧本针对的本地主机上的用户?

我试过了 无论如何,是否可以更有效地以多个用户的身份运行多个 Ansible 剧本?在每个角色级别,但收到以下错误:

致命: [本地主机]: 失败! => {"已更改": 假, "module_stderr": "/usr/bin/python2: 无法打开文件 '/home/brian/.ansible/tmp/ansible-tmp-1525409723.54-208533437554058/apt.py': [错误 13] 权限被拒绝", "module_stdout": ", "消息": "模块故障", "rc": 2}


网站.yml

---
- name: ansible master playbook
hosts: localhost
connection: local
roles:
- role: common


roles/common/tasks/main.yml

---
- import_tasks: gsettings.yml


roles/common/tasks/gsettings.yml

---
- name:  Use 12 hr. clock format  
dconf:
key: "/org/gnome/desktop/interface/clock-format"
value: "'12h'"

在 Ansible 中,您可以选择将剧本启动为:

ansible-playbook playbooks/playbook.yml --user user

请注意,指定用户有时可能会与/etc/ansible/hosts 中定义的用户冲突。

(来自 Ansible 文档(

我的解决方案是简单地登录本地计算机上的每个用户,然后在本地运行我的 ansible 剧本。使用 dconf 模块更改 gsettings 的潜在问题似乎是未设置其他用户的 D-Bus,因此其他用户的 gsettings 不会坚持。请参阅下面的相关问题。

https://askubuntu.com/questions/655238/as-root-i-can-use-su-to-make-dconf-changes-for-another-user-how-do-i-actually

http://docs.ansible.com/ansible/latest/modules/dconf_module.html

访问其他用户的 D-Bus 会话

相关内容

  • 没有找到相关文章