Установите различные переменные среды ORACLE_HOME и PATH, используя Ansible - PullRequest
0 голосов
/ 08 мая 2018

Я сейчас запрашиваю несколько баз данных и собираю результаты запроса

То, как я это делаю, я пишу задачу, которая копирует скрипт оболочки, что-то вроде ниже

#!/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: List Query [Host and DB]
  shell: "/tmp/sqlscript/sql_select.sh {{item}} >> /tmp/sqlscript/output.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"
  with_items: "{{ factor_dbs.split('\n') }}"

Однако я заметил, что разные хосты имеют разные ORACLE_HOME и PATHS. Как я могу определить эти переменные в книге игр, чтобы задача выбрала правильные переменные ORACLE_HOME и PATH и успешно выполнила задачу

1 Ответ

0 голосов
/ 08 мая 2018

вы можете определить специфичные для хоста переменные для каждого из хостов. Вы можете написать свой файл инвентаря как:

[is_hosts]
greenhat ORACLE_HOME=/tmp
localhost ORACLE_HOME=/sbin

аналогично для переменной PATH

тогда твоя задача:

образец книги, демонстрирующий результаты:

- hosts: is_hosts
  gather_facts: false
  vars:

  tasks:
    - name: task 1
      shell: "env | grep -e PATH -e ORACLE_HOME"
      environment:
        # PATH: "{{ hostvars[inventory_hostname]['PATH']}}"
        ORACLE_HOME: "{{ hostvars[inventory_hostname]['ORACLE_HOME'] }}"
      register: shell_output

    - name: print results
      debug:
        var: shell_output.stdout_lines

пример выходных данных, вы можете видеть, что переменная ORACLE_HOME действительно была изменена, и как определено для хоста:

TASK [print results] ************************************************************************************************************************************************************************************************
ok: [greenhat] => {
    "shell_output.stdout_lines": [
        "ORACLE_HOME=/tmp", 
        "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin"
    ]
}
ok: [localhost] => {
    "shell_output.stdout_lines": [
        "ORACLE_HOME=/sbin", 
        "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin"
    ]
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...