루트로 플레이북을 성공적으로 실행할 수 있지만 플레이북을 소유한 사용자로는 실행할 수 없는 이유는 무엇입니까?

루트로 플레이북을 성공적으로 실행할 수 있지만 플레이북을 소유한 사용자로는 실행할 수 없는 이유는 무엇입니까?

플레이북을 실행하려고 하는데 플레이북 작업 중 일부가 방화벽 포트를 추가하는 것입니다. 이를 수행하는 가장 좋은 방법은 무엇입니까? 내 모듈에서 다음 오류가 발생합니다 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 플레이북을 실행하고 해당 사용자의 패스를 요청합니다.

--ask 플래그는 _password_file=/path/to/file이 되는 것과 같은 몇 가지 추가 옵션을 사용하여 ansible.cfg에 영구적으로 추가될 수 있습니다.

Graceful이 언급한 것처럼 플레이북 소유자에게 방화벽 구성을 수정할 수 있는 올바른 권한이 없을 수도 있습니다. 모범 사례는 특정 사용자에게 액세스 권한을 부여하는 대신 sudo를 사용하여 방화벽 명령을 실행하는 것입니다.

관련 정보