【问题标题】:How to execute a specific task as an unpriviliged user from an Ansible role when connecting as root以 root 身份连接时,如何以 Ansible 角色的非特权用户身份执行特定任务
【发布时间】:2016-10-18 17:06:24
【问题描述】:

我尝试使用 Ansible 的升级功能以非特权用户的身份在角色内运行特定任务,但该任务仍由我执行我的 playbook 调用该角色的 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

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

提前致谢!

【问题讨论】:

    标签: db2 ansible ansible-role


    【解决方案1】:

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

    【讨论】:

    • 感谢您的反馈;我在这里使用的语法是正确的。问题是执行的脚本“CreateDb.sh”不够正确,无法使用 ansible 远程启动。我必须对脚本进行一些更改才能正常工作。
    猜你喜欢
    • 2021-02-07
    • 2014-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-17
    • 2013-07-02
    • 2017-02-06
    相关资源
    最近更新 更多