我想使用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 会话