Automatisierung der Oracle XE-Installation mit Ansible und Vagrant – Oracle-Umgebungsvariablen nicht richtig sichtbar?

Automatisierung der Oracle XE-Installation mit Ansible und Vagrant – Oracle-Umgebungsvariablen nicht richtig sichtbar?

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.shdas Terminal nach dem Ausführen und Zurücksetzen sqlplusfü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"

verwandte Informationen