为什么我可以以 root 身份成功运行 playbook,但不能以拥有该 playbook 的用户身份运行?

为什么我可以以 root 身份成功运行 playbook,但不能以拥有该 playbook 的用户身份运行?

我正在尝试运行剧本,剧本工作的一部分是添加防火墙端口。做这个的最好方式是什么?我的模块出现此错误lineinfile

- name: Ensure specific port configuration in firewalld`
  ansible.builtin.lineinfile:`
    path: /etc/firewalld/zones/drop.xml
    insertbefore: '^<accept/>'
    line: '<port port= "6556" protocol="tcp"/>'
    backrefs: yes
    state: present
    become: yes`

我尝试过的事情:我尝试使用 ansible.posix.firewalld 但由于 python 版本而不起作用。

答案1

尝试: sudo -u [user] ansible-playbook [playbook name] --ask-become-pass

使用 sudo 权限,以 [user] 身份运行 ansible playbook 并请求该用户的变为通行证。

--ask 标志可以永久附加到 ansible.cfg 上,并带有一些其他选项,例如变成_password_file=/path/to/file。

正如 Graceful 所提到的,剧本的所有者可能没有正确的权限来修改firewalld配置。最佳实践是使用 sudo 运行防火墙命令,而不是授予特定用户访问权限。

相关内容