![使用 ansible 和 vagrant 自动化 Oracle XE 安装 - Oracle 环境变量未正确可见?](https://linux22.com/image/112432/%E4%BD%BF%E7%94%A8%20ansible%20%E5%92%8C%20vagrant%20%E8%87%AA%E5%8A%A8%E5%8C%96%20Oracle%20XE%20%E5%AE%89%E8%A3%85%20-%20Oracle%20%E7%8E%AF%E5%A2%83%E5%8F%98%E9%87%8F%E6%9C%AA%E6%AD%A3%E7%A1%AE%E5%8F%AF%E8%A7%81%EF%BC%9F.png)
我目前正在尝试使用 ansible playbook 自动化 Oracle Database XE。安装的一切似乎都很好,除了设置 Oracle 环境变量的步骤:
source /u01/app/oracle/product/11.2.0/xe/bin/oracle_env.sh
ansible playbook 中的代码如下所示:
- 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 playbook 时,在该过程结束时,我得到如下信息:
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
远程 shell 找不到 sqlplus 程序。找到远程系统上程序的路径,并尝试将其作为 ansible shell 命令的第一部分附加到 PATH 变量中;
shell: "export PATH=$PATH:/mypath/sqlplus; source /u01/app/oracle/product/11.2.0/xe/bin/oracle_env.sh"