@Kai Stian Olstad

On top of what we done, I have a requirement to compare shared Schema 
version comparison, updated code is below. 

Step:1 Fetch the Shared Schema version Value and register for future 
reference. 
Step:2 Stream Line CSV file and register the Output 
Step:3 Use the Streamlined CSV file and Client schema values in Column 1, 
Get the client schema Build version, these values are array of 
stdout_lines. How can I register this? 
Step:4 And use the Registered values and upgrade client schema when Shared 
Schema Version and Client Schema Version matches.(This is tricky part) 

Can I combine Step:3 and Step:4 ? Any clues. 


---

  - name: Run sqlplus command on Target DB server
    shell: source ~/.bash_profile && sqlplus -S '{{ admin }}/{{ password 
}}@{{ deploy_server }}:1521/{{ oracle_db_name }}' 
@"sharedschema_version.sql"
    args:
      chdir: roles/oracle-sql/files/
    delegate_to: localhost
    register: sharedschema_version
    tags: shared_schema

  - set_fact:
       sharedschema_version_build_number: "{{ 
sharedschema_version.stdout_lines }}"
    delegate_to: localhost

  - name: Get CSV File Content with out header
    shell: source ~/.bash_profile && awk -F',' '!/^#/ && !/^$/ && (NR!=1) { 
print }' "{{ output_csv_path }}" | sed 's/\"//g'
    register: groups_out
    delegate_to: localhost
    tags: client_schema

  - debug: var=groups_out.stdout_lines
    delegate_to: localhost

  - name: Run sqlplus command on Client DB
    shell: source ~/.bash_profile && sqlplus -S '{{ admin }}/{{ password 
}}@{{ deploy_server }}:1521/{{ oracle_db_name }}' 
@"clientschema_version.sql" {{ item.split(",").0 }}
    args:
      chdir: roles/oracle-sql/files/
    register: "clientschema_version"
    with_items: "{{ groups_out.stdout_lines }}"
    delegate_to: localhost
    tags: client_schema

  - debug: var=clientschema_version
    delegate_to: localhost

  - debug: msg="item.item={{item.item}}, item.stdout={{item.stdout}}, 
item.changed={{item.changed}}"
    with_items: "{{clientschema_version.results}}"
    delegate_to: localhost

  - name: Update the Client Schema
    shell: source ~/.bash_profile && sqlplus -S '{{ admin }}/{{ password 
}}@{{ item.split(",").3 }}' @"hotfix_client.sql" {{ item.split(",").0 }}
    with_items:
                - "{{ groups_out.stdout_lines }}"
                - "{{ clientschema_version.results }}"
    args:
      chdir: roles/oracle-sql/files/DbScripts/Scripts/
    delegate_to: localhost
    when: sharedschema_version_build_number == "{{ 
clientschema_version.stdout_lines }}"

Here is my error log 

 FAILED! => {
    "failed": true,
    "msg": "The conditional check 'sharedschema_version_build_number == 
\"{{ clientschema_version.stdout_lines }}\"' failed. The error was: error 
while evaluating conditional (sharedschema_version_build_number == \"{{ 
clientschema_version.stdout_lines }}\"): 'dict object' has no attribute 
'stdout_lines'\n\nThe error appears to have been in 
'/etc/ansible/playbooks/database/roles/oracle-sql/tasks/main.yml': line 64, 
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 
Client Schema\n    ^ here\n"
}





On Monday, February 26, 2018 at 12:15:27 AM UTC-6, Raja Shekar wrote:
>
> 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
>

-- 
You received this message because you are subscribed to the Google Groups 
"Ansible Project" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/ansible-project/c80672dd-5be5-4032-8ca2-71932f281852%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to