如何以root身份连接时,如何从Ansible角色作为非特权用户执行特定任务

时间:2016-06-17 01:30:10

标签: db2 ansible ansible-role

我尝试使用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

我不知道自己错过了什么;请帮助我。

提前致谢!

1 个答案:

答案 0 :(得分:0)

区分用户ansible连接到目标计算机和任务运行的用户(变为)是很重要的。您粘贴的两个示例(脚本模块和shell模块)看起来大致正确。你看到那些任务仍以root身份运行的迹象是什么?我会在您的-vvvv游戏中添加ansible-playbook,以了解更多详细信息,包括用户信息。