我想使用ansible playbook为我的localhost(即admin&brian)上的两个不同用户设置相同的配置 . 目前,“common”角色安装两个用户都可访问的程序 . 另外,我具有用户特定的设置(例如,桌面壁纸) . 当我运行我的Playbook时,用户特定的设置会从一个用户更新而不是另一个用户 . 例如,如果我运行我的剧本,布莱恩的壁纸会改变,但管理员的壁纸保持不变 . 我知道的是become_user,但是对于我运行的每个任务都不希望这样 . 是否可以以这样的方式定义hosts文件或playbook,我可以简单地指定localhost上的用户我希望该playbook能够运行?
我在每个角色级别上尝试了Is there anyway to run multiple Ansible playbooks as multiple users more efficiently?但是收到以下错误:
致命:[localhost]:失败! => {“已更改”:false,“module_stderr”:“/ usr / bin / python2:无法打开文件'/home/brian/.ansible/tmp/ansible-tmp-1525409723.54-208533437554058/apt.py': [Errno 13] Permission denied \ n“,”module_stdout“:”“,”msg“:”MODULE FAILURE“,”rc“:2}
site.yml
---
- name: ansible master playbook
hosts: localhost
connection: local
roles:
- role: common
角色/普通/任务/ main.yml
---
- import_tasks: gsettings.yml
角色/普通/任务/ gsettings.yml
---
- name: Use 12 hr. clock format
dconf:
key: "/org/gnome/desktop/interface/clock-format"
value: "'12h'"
2 回答
在Ansible中,您可以选择启动剧本:
请注意,指定用户有时可能会与/ etc / ansible / hosts中定义的用户发生冲突 .
(来自Ansible documentation)
我的解决方案是简单地登录本地计算机上的每个用户并在本地运行我的ansible playbooks . 使用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
Access another user's D-Bus session