1

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

我已经尝试过 是否可以更有效地以多个用户的身份运行多个 Ansible 剧本?在每个角色级别上,但出现以下错误:

致命的:[本地主机]:失败!=> {"changed": false, "module_stderr": "/usr/bin/python2: 无法打开文件'/home/brian/.ansible/tmp/ansible-tmp-1525409723.54-208533437554058/apt.py': [Errno 13] 权限被拒绝\n", "module_stdout": "", "msg": "MODULE FAILURE", "rc": 2}


网站.yml

---
- name: ansible master playbook
  hosts: localhost
  connection: local

  roles:
    - role: common


角色/公共/任务/main.yml

---
  - import_tasks: gsettings.yml


角色/common/tasks/gsettings.yml

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

2 回答 2

0

在 Ansible 中,您可以选择以以下方式启动 playbook:

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

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

(来自 Ansible文档

于 2018-05-04T04:38:32.217 回答
0

我的解决方案是简单地登录我本地机器上的每个用户并在本地运行我的 ansible playbook。使用 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 会话

于 2018-05-05T20:00:55.957 回答