
아래 인벤토리 파일이 있습니다.
[server]
abc.com
[server:vars]
ansible_user="user1"
ansible_ssh_pass="pwd"
ansible_pbrun_exe="pbrun"
ansible_pbrun_password="pqa"
ansible_pbrun_user="root"
그리고 플레이북 파일
---
- name: Upgrade Java Version to all the hosts
hosts: all
tasks:
- name: run simple command
shell: java -version 2>&1 | grep version | awk '{print $3}' | sed 's/"//g'
register: javav
- name: remove the currently installed java
become: true
become_method: "pbrun"
shell: |
mv /usr/bin/java ~/bckup_java_exe
mv /usr/java/ ~/bckup_java
이제 ansible 플레이북을 실행하면 ssh 호스트에 연결되고 명령을 성공적으로 실행할 수 있지만 필요에 따라 명령 java -version ..
을 실행할 수 없습니다 .mv
pbrun
플레이북에서 제거하면 become: true
권한 오류가 표시됩니다.
```
: Permission denied", "mv: cannot move `/usr/java/' to
````
제거하지 않으면 become: true
다른 오류가 발생하고 작동하지 않습니다.
답변1
become_method: pbrun
나는 당신이 어디에도 설정하지 않은 것을 볼 수 있습니다 . 이는 필수입니다.
답변2
내가 찾은 해결책은 아래와 같습니다
become: "yes"
become_method: "pbrun"
become_user: "root"
become_flags: "sa"
pbrun sa -u root를 실행했을 때
ansible_become_pass
또한 재고 파일에 설정하는 것을 잊지 마십시오 .--ask-become-pass
감사해요