Hi,

I have a task that executes a shell command and spews out a few lines. 
Specifically, it probes a remote DB and and returns some information .  
Please see below:

- name: Test role delegation to apps
  hosts: appboxes
  tasks:
    - name: get cluster status from dbboxes
      shell: mysqlsh --redirect-primary test123:test123@box1:3306 --cluster 
-e "cluster.status().defaultReplicaSet.primary" --interactive --json
      register: res
      delegate_to: "{{ groups.mysqldbs | first }}"
      run_once: True


    - name: check result
      debug:
        var=res.stdout_lines
      run_once: True


#    - name: check result
#      debug:
#        var: "{{ item.value }}"
#     with_items: "{{ res.stdout_lines }}"
#      run_one: True





root@controller:/etc/ansible/playbooks# ansible-playbook test_delegate.yml


PLAY [Test role delegation to apps] 
*********************************************************************************************************************************************************************************************************


TASK [Gathering Facts] 
**********************************************************************************************************************************************************************************************************************
ok: [appbox1]
ok: [appbox2]


TASK [get cluster status from dbboxes] 
******************************************************************************************************************************************************************************************************
changed: [appbox1 -> dbbox1]


TASK [check result] 
*************************************************************************************************************************************************************************************************************************
ok: [appbox1] => {
    "res.stdout_lines": [
        "{",
        "    \"info\": \"Creating a session to 'test123@box1:3306'\"",
        "}",
        "{",
        "    \"info\": \"Your MySQL connection id is 246 Server version: 
5.7.21-log MySQL Commercial Server (Advanced) No default schema selected; 
type \\\\use <schema> to set one.\"",
        "}",
        "{",
        "    \"info\": \"Reconnecting to PRIMARY instance of the InnoDB 
cluster (mysql://box1:3306)...\"",
        "}",
        "{",
        "    \"info\": \"Creating a Classic session to 
'test123@box1:3306'\"",
        "}",
        "{",
        "    \"info\": \"Closing old connection...\"",
        "}",
        "{",
        "    \"info\": \"Your MySQL connection id is 239 Server version: 
5.7.21-log MySQL Commercial Server (Advanced) No default schema selected; 
type \\\\use <schema> to set one.\"",
        "}",
        "{",
        "    \"value\": \"box1:3306\"",
        "}"
    ]
}


PLAY RECAP 
**********************************************************************************************************************************************************************************************************************************
appbox1                    : ok=3    changed=1    unreachable=0    failed=0
appbox2                    : ok=1    changed=0    unreachable=0    failed=0


I've been  scratching my head trying to figure out how to return only the 
"value" attribute and its corresponding result. 

I tried using a loop (commented out in the playbook) but it just spews out 
a load of errors saying the attribute doesn't exist i.e.

TASK [check result] 
*************************************************************************************************************************************************************************************************************************
fatal: [appbox1]: FAILED! => {"msg": "The task includes an option with an 
undefined variable. The error was: 
'ansible.utils.unsafe_proxy.AnsibleUnsafeText object' has no attribute 
'value'\n\nThe error appears to have been in 
'/etc/ansible/playbooks/test_delegate.yml': line 15, column 7, but may\nbe 
elsewhere in the file depending on the exact syntax problem.\n\nThe 
offending line appears to be:\n\n\n    - name: check result\n      ^ 
here\n\nexception type: <class 
'ansible.errors.AnsibleUndefinedVariable'>\nexception: 
'ansible.utils.unsafe_proxy.AnsibleUnsafeText object' has no attribute 
'value'"}
fatal: [appbox2]: FAILED! => {"msg": "The task includes an option with an 
undefined variable. The error was: 
'ansible.utils.unsafe_proxy.AnsibleUnsafeText object' has no attribute 
'value'\n\nThe error appears to have been in 
'/etc/ansible/playbooks/test_delegate.yml': line 15, column 7, but may\nbe 
elsewhere in the file depending on the exact syntax problem.\n\nThe 
offending line appears to be:\n\n\n    - name: check result\n      ^ 
here\n\nexception type: <class 
'ansible.errors.AnsibleUndefinedVariable'>\nexception: 
'ansible.utils.unsafe_proxy.AnsibleUnsafeText object' has no attribute 
'value'"}
        to retry, use: --limit @/etc/ansible/playbooks/test_delegate.retry


PLAY RECAP 
**********************************************************************************************************************************************************************************************************************************
appbox1                    : ok=3    changed=1    unreachable=0    failed=1
appbox2                    : ok=1    changed=0    unreachable=0    failed=1

Any ideas will be appreciated
Dayo



-- 
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/5d97a1c2-7e34-4ce6-bfb6-55675ee41841%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to