2

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

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

提前致谢!

4

1 回答 1

0

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

于 2016-06-19T06:43:46.003 回答