Hello Ansible Gurus,
I have a CSV file as below.
“DB_SCHEMA”,“SYSTEM_USER”,“SYSTEM_PASSWORD”,“TNS_NAME”,“TNS_DESCRIPTION”
“Client_Schema1”,“user”,“password”,“TNSNAME”,“(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=SANDBOX1)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=orcl)))”
“Client_Schema2”,“user”,“password”,“TNSNAME”,“(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=SANDBOX1)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=orcl)))”
“Client_Schema3”,“user”,“password”,“TNSNAME”,“(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=SANDBOX1)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=orcl)))”
I need to read each line of this CSV file and execute a SQL statement against a Remote Database.
This is the play book, which logs in to shared DB and get the CSV file to Local Ansible Master and execute Client Schema on Remote DB upgrade by using the entries from Shared DB.
-
name: Run sqlplus command on {{ Shared DB }}
shell: source ~/.bash_profile && sqlplus -S ‘{{ SharedDB_username }}/{{ SharedDB_password }}@{{ SharedDB_database_host }}:1521/{{ SharedDB_service_name }}’ @“/etc/ansible/playbooks/database/roles/oracle-sql/files/final_query.sql”
delegate_to: localhost
tags: clientSchema -
name: Run powershell script
script: files/DecryptCsv.ps1 -InputFilePath ‘{{ input_csv_path }}’
-OutputFilePath ‘{{ output_csv_path }}’
-PassPhrase ‘{{ pass_phrase }}’
-SaltValue ‘{{ salt_value }}’
-PasswordIterations {{ password_iterations }}
-InitVector ‘{{ init_vector }}’
delegate_to: localhost
tags: clientSchema -
name: get CSV File Content
shell: source ~/.bash_profile && awk -F’,’ ‘!/^#/ && !/^$/ { print }’ “{{ output_csv_path }}”
register: groups_out
delegate_to: localhost -
debug: var=groups_out.stdout_lines
-
name: Update the Client Schema
shell: source ~/.bash_profile && sqlplus -S ‘{{ item.1.groups_out }}/{{ item.2.groups_out }}@{{ item.4.groups_out }}’ @“roles/oracle-sql/files/Scripts/client_hotfix.sql” {{ item.0.groups_out }}
sudo: no
with_items: “{{ groups_out.stdout_lines }}”
Failing with below error message
fatal: [10.202.98.198]: FAILED! => {“failed”: true, “msg”: “The task includes an option with an undefined variable. The error was: ‘unicode object’ has no attribute ‘groups_out’\n\nThe error appears to have been in ‘/etc/ansible/playbooks/database/roles/oracle-sql/tasks/main.yml’: line 57, column 5, but may\nbe elsewhere in the file depending on the exact syntax problem.\n\nThe offending line appears to be:\n\n\n - name: Update the Schema info\n ^ here\n\nexception type: <class ‘ansible.errors.AnsibleUndefinedVariable’>\nexception: ‘unicode object’ has no attribute ‘groups_out’”}
And also I might need to use When condition to check particular client schema and shared schema version on remote DB then only apply this hotfix. it would be helpful if you guide me here to fix this issue. I tried different options nothing is working for me
Thanks and Regards
Shekar