Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

How to use json_query against a output stored in a registered variable in Ansible?

I am writing an Ansible role to fetch current details of Audit settings from MSSQL server through ansible.windoww.win_powershell module. In doing so, I am trying to use json_query in Ansible that has the following structure in the output but json_query is returning empty values..Please help..
This is the Ansible Task

 - name: Sample Test   debug: 
     msg: "{{list_of_audit_actions.output}}"

This variable list_of_audit_actions.output has below structure

"msg": [
        {
            "HasErrors": false, 
            "ItemArray": [
                "Test-Audit_Specification_SCM", 
                "AUDIT_CHANGE_GROUP", 
                "SUCCESS AND FAILURE", 
                "APPLICATION LOG"
            ], 
            "RowError": "", 
            "RowState": {
                "String": "Detached", 
                "Type": "System.Data.DataRowState", 
                "Value": 1
            }, 
            "Table": {
                "CaseSensitive": false, 
                "ChildRelations": "", 
                "Columns": "name audit_action_name audited_result type_desc", 
                "Constraints": "", 
                "Container": null, 
                "ContainsListCollection": false, 
                "DataSet": null, 
                "DefaultView": "", 
                "DesignMode": false, 
                "DisplayExpression": "", 
                "ExtendedProperties": "System.Data.PropertyCollection", 
                "HasErrors": false, 
                "IsInitialized": true, 
                "Locale": "en-GB", 
                "MinimumCapacity": 50, 
                "Namespace": "", 
                "ParentRelations": "", 
                "Prefix": "", 
                "PrimaryKey": "", 
                "RemotingFormat": 0, 
                "Rows": "", 
                "Site": null, 
                "TableName": ""
            }, 
            "audit_action_name": "AUDIT_CHANGE_GROUP", 
            "audited_result": "SUCCESS AND FAILURE", 
            "name": "Test-Audit_Specification_SCM", 
            "type_desc": "APPLICATION LOG"
        }, 
        {
            "HasErrors": false, 
            "ItemArray": [
                "TestAuditSpec1", 
                "AUDIT_CHANGE_GROUP", 
                "SUCCESS AND FAILURE", 
                "APPLICATION LOG"
            ], 
            "RowError": "", 
            "RowState": {
                "String": "Detached", 
                "Type": "System.Data.DataRowState", 
                "Value": 1
            }, 
            "Table": {
                "CaseSensitive": false, 
                "ChildRelations": "", 
                "Columns": "name audit_action_name audited_result type_desc", 
                "Constraints": "", 
                "Container": null, 
                "ContainsListCollection": false, 
                "DataSet": null, 
                "DefaultView": "", 
                "DesignMode": false, 
                "DisplayExpression": "", 
                "ExtendedProperties": "System.Data.PropertyCollection", 
                "HasErrors": false, 
                "IsInitialized": true, 
                "Locale": "en-GB", 
                "MinimumCapacity": 50, 
                "Namespace": "", 
                "ParentRelations": "", 
                "Prefix": "", 
                "PrimaryKey": "", 
                "RemotingFormat": 0, 
                "Rows": "", 
                "Site": null, 
                "TableName": ""
            }, 
            "audit_action_name": "AUDIT_CHANGE_GROUP", 
            "audited_result": "SUCCESS AND FAILURE", 
            "name": "TestAuditSpec1", 
            "type_desc": "APPLICATION LOG"
        }, 
        {
            "HasErrors": false, 
            "ItemArray": [
                "TestAuditSpec1", 
                "FAILED_LOGIN_GROUP", 
                "SUCCESS AND FAILURE", 
                "APPLICATION LOG"
            ], 
            "RowError": "", 
            "RowState": {
                "String": "Detached", 
                "Type": "System.Data.DataRowState", 
                "Value": 1
            }, 
            "Table": {
                "CaseSensitive": false, 
                "ChildRelations": "", 
                "Columns": "name audit_action_name audited_result type_desc", 
                "Constraints": "", 
                "Container": null, 
                "ContainsListCollection": false, 
                "DataSet": null, 
                "DefaultView": "", 
                "DesignMode": false, 
                "DisplayExpression": "", 
                "ExtendedProperties": "System.Data.PropertyCollection", 
                "HasErrors": false, 
                "IsInitialized": true, 
                "Locale": "en-GB", 
                "MinimumCapacity": 50, 
                "Namespace": "", 
                "ParentRelations": "", 
                "Prefix": "", 
                "PrimaryKey": "", 
                "RemotingFormat": 0, 
                "Rows": "", 
                "Site": null, 
                "TableName": ""
            }, 
            "audit_action_name": "FAILED_LOGIN_GROUP", 
            "audited_result": "SUCCESS AND FAILURE", 
            "name": "TestAuditSpec1", 
            "type_desc": "APPLICATION LOG"
        }
    ]
}

how do I use json_query to filter all the values of audit_action_name in the above output.
I tried something like

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

- name: Sample Test
  debug: 
    msg: "{{list_of_audit_actions.output| community.general.json_query('audit_action_name')}}" 

that does not yield anything but empty output

>Solution :

For building a query to use with the json_query filter, I like to use the jp command line tool to experiment with queries.


The contents of list_of_audit_actions.output is a list, so a query for audit_action_name doesn’t make sense — it’s not a dictionary and does not have an audit_action_name attribute.

We want to extract the audti_action_name attribute from every item in the list, which we can do like this:

- debug:
    var: list_of_audit_actions.output | json_query('[].audit_action_name')

Which will produce as output:

TASK [debug] ******************************************************************************************************************************************************************************************************
ok: [localhost] => {
    "list_of_audit_actions.output | json_query('[].audit_action_name')": [
        "AUDIT_CHANGE_GROUP",
        "AUDIT_CHANGE_GROUP",
        "FAILED_LOGIN_GROUP"
    ]
}
Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading