Ich habe die folgende Inventardatei
[server]
abc.com
[server:vars]
ansible_user="user1"
ansible_ssh_pass="pwd"
ansible_pbrun_exe="pbrun"
ansible_pbrun_password="pqa"
ansible_pbrun_user="root"
und die Playbook-Datei
---
- 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
Wenn ich jetzt das Ansible-Playbook ausführe, stellt es eine Verbindung zum SSH-Host her und kann den java -version ..
Befehl auch erfolgreich ausführen, jedoch nicht mv
wie erforderlich.pbrun
wenn ich es become: true
aus dem Playbook entferne, wird ein Berechtigungsfehler angezeigt
```
: Permission denied", "mv: cannot move `/usr/java/' to
````
Und wenn ich es nicht entferne, become: true
gibt es einen anderen Fehler und es funktioniert auch nicht
Antwort1
Ich sehe nicht, dass Sie das become_method: pbrun
irgendwo eingestellt haben. Dies ist erforderlich.
Antwort2
Die Lösung, die ich gefunden habe, ist unten
become: "yes"
become_method: "pbrun"
become_user: "root"
become_flags: "sa"
als wir pbrun sa -u root ausführten
ansible_become_pass
Vergessen Sie auch nicht , in die Inventardatei einzutragen oder--ask-become-pass
Danke