2017-01-22 2 views
0

Я пытаюсь запустить playbook для выполнения сценариев Oracle.Ansible playbook для выполнения сценария Oracle

--- 
- hosts: localhost 
- tasks: 
    - set_fact: 
     execute_command: "sqlplus {{ Oracle_Username }}/{{ Oracle_Password }} @{{ sqlfile.sql }}" 

    - name: Get Object_details 
    shell: "echo exit | {{ execute_command }} >> ./Oracle_Output.csv" 
    environment: 
     ORACLE_HOME: "{{ Oracle_DBServer }}" 
     ORACLE_SID: "{{ Oracle_SID }}" 

Я объявил все переменные в vars.When я исполню его, я получаю сообщение об ошибке «set_fact не является действительным атрибутом для игры». Каков наилучший способ запуска SQL-скрипта с использованием Ansible? Я должен объявить все детали соединения в переменной.

ответ

1

Вы забыли объявить tasks раздел:

--- 
- hosts: localhost 
- tasks: 
    - set_fact: 
     execute_command: "sqlplus {{ Oracle_Username }}/{{ Oracle_Password }} @{{ sqlfile.sql }}" 

    - name: Get Object_details 
     shell: "echo exit | {{ execute_command }} >> ./Oracle_Output.csv" 
     environment: 
     ORACLE_HOME: "{{ Oracle_DBServer }}" 
     ORACLE_SID: "{{ Oracle_SID }}" 

P.S. и я не знаю атрибута wait для задач.

+0

Я использовал Ansible роли, и этот yml-скрипт находится внутри задач. Поэтому нет необходимости упоминать разделы задач –

+0

Сообщение об ошибке предполагает, что вы запускаете этот yml-скрипт в качестве playbook. И если это main.yml внутри ролевых задач, 'hosts' там не допускается. –

0
--- 
- hosts: localhost 
- tasks: 
    - name: Get Object_details 
    shell: echo exit |sqlplus "{{ oracle_username }}/ {{ oracle_pwd}} @(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(Host={{ oracle_hostname }})(Port={{ oracle_port }}))(CONNECT_DATA=(SERVICE_NAME= {{ service_name }})))"@sqlfile.sql; 

С вышеуказанным кодом мы сможем напрямую подключиться к Oracle Host и выполнить SQL-скрипт. Если переменные Oracle Environment не определены по умолчанию, мы можем установить это тоже в самой задаче для воспроизведения. Ниже приведен пример:

Смежные вопросы