我尝试使用Ansible的升级功能在角色中作为非特权用户运行特定任务,但该任务仍由root用户执行,我执行我的playbook调用该角色。 我的问题与在使用同一角色的root用户安装和配置DB2产品之后在DB2 for LUW上创建新的DATABASE有关。我有一个shell脚本,它创建一个新的DATABASE,但应该作为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
OR:
- 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
我不知道自己错过了什么;请帮助我。
提前致谢!
答案 0 :(得分:0)
区分用户ansible连接到目标计算机和任务运行的用户(变为)是很重要的。您粘贴的两个示例(脚本模块和shell模块)看起来大致正确。你看到那些任务仍以root身份运行的迹象是什么?我会在您的-vvvv
游戏中添加ansible-playbook
,以了解更多详细信息,包括用户信息。