Я пытаюсь запустить скрипт оболочки на хост-машине после того, как скопировал его туда с помощью ansible.Сценарий имеет разрешения 777.
Пожалуйста, прочитайте приведенный ниже вопрос, так как он дает полный объем реальной проблемы, с которой мы пытаемся разобраться
Установка различных переменных среды ORACLE_HOME и PATHиспользование Ansible
- name: Run the Script [List]
shell: "/tmp/sqlscript/sql_select.sh {{item}} >> /tmp/sqlscript/output.out"
become: yes
become_method: sudo
become_user: oracle
register: orh
with_items: "{{ factor_dbs.split('\n') }}"
Ниже приведен сценарий оболочки
#!/bin/bash
source $HOME/bin/gsd_xenv $1 &> /dev/null
sqlplus -s <<EOF
/ as sysdba
set heading off
select d.name||','||i.instance_name||','||i.host_name||';' from v\$database d,v\$instance i;
EOF
Несмотря на повышение привилегий, я заметил, что задача не выполняется, пока я не добавлю переменные среды, как показано ниже
- name: Run the script [List]
shell: "/tmp/sqlscript/oracle_home.sh {{item}} >> /tmp/sqlscript/orahome.out"
become: yes
become_method: sudo
become_user: oracle
environment:
PATH: "/home/oracle/bin:/usr/orasys/12.1.0.2r10/bin:/usr/bin:/bin:/usr/ucb:/sbin:/usr/sbin:/etc:/usr/local/bin:/oradata/epdmat/goldengate/config/sys"
ORACLE_HOME: "/usr/orasys/12.1.0.2r10"
register: orh
with_items: "{{ factor_dbs.split('\n') }}"
Однако эта книга воспроизведения должна быть запущена на разных хостах, которые имеют разные переменные path и oracle_home.
У меня вопрос: почему задача запускается, несмотря на повышение разрешений.Когда я пытаюсь запустить тот же сценарий вручную, войдя на сервер и после выполнения команды «sudo su oracle», он работает нормально.