我尝试使用 Ansible 的升级功能以非特权用户的身份在角色中运行特定任务,但该任务仍由我执行调用该角色的剧本的 root 用户执行。我的问题与在使用相同角色的 root 用户安装和配置 DB2 产品之后在 DB2 for LUW 上创建新数据库有关。我有一个创建新数据库的 shell 脚本,但应该作为 db2inst1(不是 root)运行。我尝试按照官方 Ansible 文档和 stackoverflow 上的一些线程中的建议使用 become、become_user 和 become_method。
这是我的 Ansible 角色的摘录:
- name: Execution of the creation script
become: yes
become_method: su
become_user: db2inst1
shell: /home/CreateDb.sh TESTDB
或者:
- name: Creation of a test DB
script: CreateDb.sh TESTDB
become: yes
become_method: su
become_user: db2inst1
我还将这一行添加到我的ansible.cfg
:
allow_world_readable_tmpfiles=True
我还将 Ansible 包从 2.0.1 升级到 2.1;但这没有效果,任务仍以 root 身份运行。
我按如下方式运行我的剧本:
ansible-playbook playbooks/db2-test.yml -u root -k
我不知道我错过了什么;请帮助我。
提前致谢!