Ich versuche derzeit, Oracle Database XE mithilfe des Ansible Playbooks zu automatisieren. Bei der Installation scheint alles in Ordnung zu sein, mit Ausnahme des Schritts, in dem Umgebungsvariablen für Oracle festgelegt werden:
source /u01/app/oracle/product/11.2.0/xe/bin/oracle_env.sh
Der Code im Ansible-Playbook sieht folgendermaßen aus:
- name: setup oracle environment
shell: source /u01/app/oracle/product/11.2.0/xe/bin/oracle_env.sh
shell: reset
shell: /bin/echo 'source /u01/app/oracle/product/11.2.0/xe/bin/oracle_env.sh' >> /home/vagrant/.bash_profile
- name: create users and schemas on the oracle database
shell: sqlplus SYSTEM/root@XE @ create_schemas_users.sql
Wenn ich dann das Ansible-Playbook ausführe, erhalte ich am Ende des Vorgangs etwa Folgendes:
TASK [create users and schemas on the oracle database] *******************************************************************************************************************************************************************************
fatal: [wemdbc01]: FAILED! => {"changed": true, "cmd": "sqlplus SYSTEM/root@XE @ create_schemas_users.sql", "delta": "0:00:00.002841", "end": "2017-05-30 08:40:50.652786", "failed": true, "rc": 127, "start": "2017-05-30 08:40:50.649945", "stderr": "/bin/sh: sqlplus: command not found", "stderr_lines": ["/bin/sh: sqlplus: command not found"], "stdout": "", "stdout_lines": []}
to retry, use: --limit @/var/wminst/ansible-config/playbooks/oracle-xe.retry
PLAY RECAP ***************************************************************************************************************************************************************************************************************************
wemdbc01 : ok=6 changed=2 unreachable=0 failed=1
Connection to 127.0.0.1 closed.
Was mache ich falsch? Warum ist source /u01/app/oracle/product/11.2.0/xe/bin/oracle_env.sh
das Terminal nach dem Ausführen und Zurücksetzen sqlplus
für Bash nicht sichtbar?
Antwort1
Die Remote-Shell kann das SQLPlus-Programm nicht finden. Suchen Sie den Pfad des Programms auf dem Remote-System und versuchen Sie, ihn als ersten Teil des Ansible-Shell-Befehls an die Variable PATH anzuhängen.
shell: "export PATH=$PATH:/mypath/sqlplus; source /u01/app/oracle/product/11.2.0/xe/bin/oracle_env.sh"