我在 RHEL 8.9 上配置了最新的 Ansible Tower
当我运行特定的 ansible 任务时,我总是收到此错误消息:
{
"module_stdout": "",
"module_stderr": "sudo: /etc/sudo.conf is owned by uid 65534, should be 0\nsudo: /usr/bin/sudo must be owned by uid 0 and have the setuid bit set\n",
"msg": "MODULE FAILURE\nSee stdout/stderr for the exact error",
"rc": 1,
"_ansible_no_log": false,
"changed": false
}
任务示例如下:
- name: Install cx_Oracle Python module
pip:
name: cx_Oracle
state: present
- name: Execute SQL to get Schemas from DB
ibre5041.ansible_oracle_modules.oracle_sql:
username: "{{ db_username }}"
password: "{{ db_password }}"
mode: "{{ 'sysdba' if ar_orcl_db_sql_user|upper == 'SYS' else 'normal' }}"
hostname: "{{ db_host }}"
service_name: "{{ db_service_name }}"
port: "{{ db_port }}"
#sql: "SELECT username FROM dba_users"
sql: "SELECT NAME FROM v$database"
delegate_to: 127.0.0.1
register: schema_result
请注意,当我评论其中一个任务时,它总是会触发错误。
我已经确认这两个文件的所有者都是 root,并且我相信 setuid 已经设置。
证明如下:
$ ls -la /usr/bin/sudo
---s--x--x. 1 root root 165528 Dec 7 2021 /usr/bin/sudo
$ stat /usr/bin/sudo
File: /usr/bin/sudo
Size: 165528 Blocks: 328 IO Block: 4096 regular file
Device: ca02h/51714d Inode: 9184962 Links: 1
Access: (4111/---s--x--x) Uid: ( 0/ root) Gid: ( 0/ root)
Context: system_u:object_r:sudo_exec_t:s0
Access: 2024-02-23 12:17:03.876558806 +0000
Modify: 2021-12-07 12:02:43.000000000 +0000
Change: 2022-11-21 19:52:23.879128352 +0000
Birth: 2022-11-21 19:47:26.179931860 +0000
$ stat /etc/sudo.conf
File: /etc/sudo.conf
Size: 1786 Blocks: 8 IO Block: 4096 regular file
Device: ca02h/51714d Inode: 8619263 Links: 1
Access: (0640/-rw-r-----) Uid: ( 0/ root) Gid: ( 0/ root)
Context: system_u:object_r:etc_t:s0
Access: 2024-02-23 12:17:03.883558691 +0000
Modify: 2021-12-07 11:57:12.000000000 +0000
Change: 2022-11-21 19:52:23.873128307 +0000
Birth: 2022-11-21 19:47:26.165931757 +0000
我在这里错过了什么?
有同样的问题。尝试“become: false”,不知道为什么它有效。
我在 ansible 论坛上得到了完整的答案。我在这里发布答案,以便任何遇到此问题的人都能理解为什么会发生这种情况以及如何解决它。
基本上,旧的 Tower 3.8 也有一种机制,以非 Podman 的另一种形式(Bubblewrap)来隔离作业执行过程。您可以在这里找到更多信息。
extra_args: "--user"
我通过添加到第一个任务和become: false
第二个任务解决了这个问题。有关更多详细信息,您可以在此处查看我在另一个论坛上的帖子。