現在、Ansible Playbook を使用して Oracle Database XE を自動化しようとしています。Oracle の環境変数を設定する手順を除いて、インストールはすべて正常に行われているようです。
source /u01/app/oracle/product/11.2.0/xe/bin/oracle_env.sh
Ansible プレイブックのコードは次のようになります。
- 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
次に、Ansible プレイブックを実行すると、プロセスの最後に次のような結果が表示されます。
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.
何が間違っているのでしょうか? 実行してsource /u01/app/oracle/product/11.2.0/xe/bin/oracle_env.sh
リセットした後、ターミナルがsqlplus
bash に表示されないのはなぜですか?
答え1
リモート シェルは sqlplus プログラムを見つけることができません。リモート システム上のプログラムのパスを見つけて、それを ansible シェル コマンドの最初の部分として PATH 変数に追加してみてください。
shell: "export PATH=$PATH:/mypath/sqlplus; source /u01/app/oracle/product/11.2.0/xe/bin/oracle_env.sh"