Quantcast
Viewing all articles
Browse latest Browse all 525

Extract (parse) specific strings from a ansible playbook output - bash [closed]

I have the following output from a ansible playbook execution.

PLAY [SonarQube on-boarding] ***************************************************TASK [Create file directory] ***************************************************ok: [localhost] => {"changed": false, "gid": 20, "group": "staff", "mode": "0777", "owner": "abc", "path": "./files", "size": 96, "state": "directory", "uid": 502}TASK [Create tenants permission structure] *************************************changed: [localhost] => {"changed": true, "checksum": "d2e330325702090ac3661b7abcf57d1023a758ea", "dest": "./files/tenants.yml", "gid": 20, "group": "staff", "md5sum": "a0277b8826cd362e2782bf0d25b523fd", "mode": "0777", "owner": "abc", "size": 867, "src": "/Users/abc/.ansible/tmp/ansible-tmp-1723558954.538402-6040-258956284992736/.source.yml", "state": "file", "uid": 502}TASK [Dynamic load of variable containing tenant structure] ********************ok: [localhost] => {"ansible_facts": {"temp_var": {"tenant": [{"groupName": "r-docet-admin", "name": "docet", "permission": ["admin"], "status": "present", "target": "admin"}, {"groupName": "r-docet-user", "name": "docet", "permission": ["profileadmin", "provisioning"], "status": "present", "target": "user"}, {"groupName": "r-test_team_b-admin", "name": "test_team_b", "permission": ["profileadmin", "scan"], "status": "present", "target": "admin"}, {"groupName": "r-test_team_b-user", "name": "test_team_b", "permission": ["scan"], "status": "present", "target": "user"}, {"groupName": "r-test_team_a-admin", "name": "test_team_a", "permission": ["profileadmin", "scan"], "status": "present", "target": "admin"}, {"groupName": "r-test_team_a-user", "name": "test_team_a", "permission": ["scan"], "status": "present", "target": "user"}]}}, "ansible_included_var_files": ["/Users/abc/git/ansible-play-sonarqube-onboard/files/tenants.yml"], "changed": false}TASK [Create file directory] ***************************************************skipping: [localhost] => {"changed": false, "false_condition": "onboard_action == \"absent\"", "skip_reason": "Conditional result was False"}TASK [Create tenants permission structure] *************************************skipping: [localhost] => {"changed": false, "false_condition": "onboard_action == \"absent\"", "skip_reason": "Conditional result was False"}TASK [Dynamic load of variable containing tenant structure] ********************skipping: [localhost] => {"changed": false, "false_condition": "onboard_action == \"absent\"", "skip_reason": "Conditional result was False"}TASK [sonarqube-onboard : Create Sonarqube Groups] *****************************ok: [localhost] => (item={'name': 'test_team_b', 'status': 'present', 'target': 'user', 'permission': ['scan'], 'groupName': 'r-test_team_b-user'}) => {"ansible_loop_var": "item", "changed": false, "connection": "close", "content": "{\"errors\":[{\"msg\":\"Group \\u0027r-test_team_b-user\\u0027 already exists\"}]}", "content_type": "application/json", "date": "Tue, 13 Aug 2024 14:22:43 GMT", "elapsed": 0, "item": {"groupName": "r-test_team_b-user", "name": "test_team_b", "permission": ["scan"], "status": "present", "target": "user"}, "json": {"errors": [{"msg": "Group 'r-test_team_b-user' already exists"}]}, "msg": "HTTP Error 400: ", "redirected": false, "status": 400, "strict_transport_security": "max-age=31536000; includeSubDomains", "transfer_encoding": "chunked", "url": "https://sonarqube.luigi-lab.worldpay.io/api/user_groups/create", "vary": "accept-encoding"}ok: [localhost] => (item={'name': 'test_team_a', 'status': 'present', 'target': 'admin', 'permission': ['profileadmin', 'scan'], 'groupName': 'r-test_team_a-admin'}) => {"ansible_loop_var": "item", "changed": false, "connection": "close", "content": "{\"errors\":[{\"msg\":\"Group \\u0027r-test_team_a-admin\\u0027 already exists\"}]}", "content_type": "application/json", "date": "Tue, 13 Aug 2024 14:22:46 GMT", "elapsed": 0, "item": {"groupName": "r-test_team_a-admin", "name": "test_team_a", "permission": ["profileadmin", "scan"], "status": "present", "target": "admin"}, "json": {"errors": [{"msg": "Group 'r-test_team_a-admin' already exists"}]}, "msg": "HTTP Error 400: ", "redirected": false, "status": 400, "strict_transport_security": "max-age=31536000; includeSubDomains", "transfer_encoding": "chunked", "url": "https://sonarqube.luigi-lab.worldpay.io/api/user_groups/create", "vary": "accept-encoding"}ok: [localhost] => (item={'name': 'test_team_a', 'status': 'present', 'target': 'user', 'permission': ['scan'], 'groupName': 'r-test_team_a-user'}) => {"ansible_loop_var": "item", "changed": false, "connection": "close", "content": "{\"errors\":[{\"msg\":\"Group \\u0027r-test_team_a-user\\u0027 already exists\"}]}", "content_type": "application/json", "date": "Tue, 13 Aug 2024 14:22:47 GMT", "elapsed": 0, "item": {"groupName": "r-test_team_a-user", "name": "test_team_a", "permission": ["scan"], "status": "present", "target": "user"}, "json": {"errors": [{"msg": "Group 'r-test_team_a-user' already exists"}]}, "msg": "HTTP Error 400: ", "redirected": false, "status": 400, "strict_transport_security": "max-age=31536000; includeSubDomains", "transfer_encoding": "chunked", "url": "https://sonarqube.luigi-lab.worldpay.io/api/user_groups/create", "vary": "accept-encoding"}TASK [sonarqube-onboard : Assign Sonarqube Group Permissions] ******************ok: [localhost] => (item=[{'name': 'test_team_b', 'status': 'present', 'target': 'user', 'groupName': 'r-test_team_b-user'}, 'scan']) => {"ansible_loop_var": "item", "cache_control": "no-cache, no-store, must-revalidate", "changed": false, "connection": "close", "content_security_policy": "default-src 'self'; base-uri 'none'; connect-src 'self' http: https:; img-src * data: blob:; object-src 'none'; script-src 'self'; style-src 'self''unsafe-inline'; worker-src 'none'", "cookies": {}, "cookies_string": "", "cross_origin_embedder_policy": "require-corp", "cross_origin_opener_policy": "same-origin", "cross_origin_resource_policy": "same-origin", "date": "Tue, 13 Aug 2024 14:22:58 GMT", "elapsed": 0, "item": [{"groupName": "r-test_team_b-user", "name": "test_team_b", "status": "present", "target": "user"}, "scan"], "msg": "OK (unknown bytes)", "redirected": false, "status": 204, "strict_transport_security": "max-age=31536000; includeSubDomains", "url": "https://sonarqube.luigi-lab.worldpay.io/api/permissions/add_group", "x_content_security_policy": "default-src 'self'; base-uri 'none'; connect-src 'self' http: https:; img-src * data: blob:; object-src 'none'; script-src 'self'; style-src 'self''unsafe-inline'; worker-src 'none'", "x_content_type_options": "nosniff", "x_frame_options": "SAMEORIGIN", "x_webkit_csp": "default-src 'self'; base-uri 'none'; connect-src 'self' http: https:; img-src * data: blob:; object-src 'none'; script-src 'self'; style-src 'self''unsafe-inline'; worker-src 'none'", "x_xss_protection": "1; mode=block"}ok: [localhost] => (item=[{'name': 'test_team_a', 'status': 'present', 'target': 'admin', 'groupName': 'r-test_team_a-admin'}, 'profileadmin']) => {"ansible_loop_var": "item", "cache_control": "no-cache, no-store, must-revalidate", "changed": false, "connection": "close", "content_security_policy": "default-src 'self'; base-uri 'none'; connect-src 'self' http: https:; img-src * data: blob:; object-src 'none'; script-src 'self'; style-src 'self''unsafe-inline'; worker-src 'none'", "cookies": {}, "cookies_string": "", "cross_origin_embedder_policy": "require-corp", "cross_origin_opener_policy": "same-origin", "cross_origin_resource_policy": "same-origin", "date": "Tue, 13 Aug 2024 14:22:59 GMT", "elapsed": 0, "item": [{"groupName": "r-test_team_a-admin", "name": "test_team_a", "status": "present", "target": "admin"}, "profileadmin"], "msg": "OK (unknown bytes)", "redirected": false, "status": 204, "strict_transport_security": "max-age=31536000; includeSubDomains", "url": "https://sonarqube.luigi-lab.worldpay.io/api/permissions/add_group", "x_content_security_policy": "default-src 'self'; base-uri 'none'; connect-src 'self' http: https:; img-src * data: blob:; object-src 'none'; script-src 'self'; style-src 'self''unsafe-inline'; worker-src 'none'", "x_content_type_options": "nosniff", "x_frame_options": "SAMEORIGIN", "x_webkit_csp": "default-src 'self'; base-uri 'none'; connect-src 'self' http: https:; img-src * data: blob:; object-src 'none'; script-src 'self'; style-src 'self''unsafe-inline'; worker-src 'none'", "x_xss_protection": "1; mode=block"}ok: [localhost] => (item=[{'name': 'test_team_a', 'status': 'present', 'target': 'admin', 'groupName': 'r-test_team_a-admin'}, 'scan']) => {"ansible_loop_var": "item", "cache_control": "no-cache, no-store, must-revalidate", "changed": false, "connection": "close", "content_security_policy": "default-src 'self'; base-uri 'none'; connect-src 'self' http: https:; img-src * data: blob:; object-src 'none'; script-src 'self'; style-src 'self''unsafe-inline'; worker-src 'none'", "cookies": {}, "cookies_string": "", "cross_origin_embedder_policy": "require-corp", "cross_origin_opener_policy": "same-origin", "cross_origin_resource_policy": "same-origin", "date": "Tue, 13 Aug 2024 14:23:01 GMT", "elapsed": 0, "item": [{"groupName": "r-test_team_a-admin", "name": "test_team_a", "status": "present", "target": "admin"}, "scan"], "msg": "OK (unknown bytes)", "redirected": false, "status": 204, "strict_transport_security": "max-age=31536000; includeSubDomains", "url": "https://sonarqube.luigi-lab.worldpay.io/api/permissions/add_group", "x_content_security_policy": "default-src 'self'; base-uri 'none'; connect-src 'self' http: https:; img-src * data: blob:; object-src 'none'; script-src 'self'; style-src 'self''unsafe-inline'; worker-src 'none'", "x_content_type_options": "nosniff", "x_frame_options": "SAMEORIGIN", "x_webkit_csp": "default-src 'self'; base-uri 'none'; connect-src 'self' http: https:; img-src * data: blob:; object-src 'none'; script-src 'self'; style-src 'self''unsafe-inline'; worker-src 'none'", "x_xss_protection": "1; mode=block"}ok: [localhost] => (item=[{'name': 'test_team_a', 'status': 'present', 'target': 'user', 'groupName': 'r-test_team_a-user'}, 'scan']) => {"ansible_loop_var": "item", "cache_control": "no-cache, no-store, must-revalidate", "changed": false, "connection": "close", "content_security_policy": "default-src 'self'; base-uri 'none'; connect-src 'self' http: https:; img-src * data: blob:; object-src 'none'; script-src 'self'; style-src 'self''unsafe-inline'; worker-src 'none'", "cookies": {}, "cookies_string": "", "cross_origin_embedder_policy": "require-corp", "cross_origin_opener_policy": "same-origin", "cross_origin_resource_policy": "same-origin", "date": "Tue, 13 Aug 2024 14:23:02 GMT", "elapsed": 0, "item": [{"groupName": "r-test_team_a-user", "name": "test_team_a", "status": "present", "target": "user"}, "scan"], "msg": "OK (unknown bytes)", "redirected": false, "status": 204, "strict_transport_security": "max-age=31536000; includeSubDomains", "url": "https://sonarqube.luigi-lab.worldpay.io/api/permissions/add_group", "x_content_security_policy": "default-src 'self'; base-uri 'none'; connect-src 'self' http: https:; img-src * data: blob:; object-src 'none'; script-src 'self'; style-src 'self''unsafe-inline'; worker-src 'none'", "x_content_type_options": "nosniff", "x_frame_options": "SAMEORIGIN", "x_webkit_csp": "default-src 'self'; base-uri 'none'; connect-src 'self' http: https:; img-src * data: blob:; object-src 'none'; script-src 'self'; style-src 'self''unsafe-inline'; worker-src 'none'", "x_xss_protection": "1; mode=block"}PLAY RECAP *********************************************************************localhost                  : ok=6    changed=1    unreachable=0    failed=0    skipped=4    rescued=0    ignored=0   

I want to verify that changed = to more than 0 and under TASK [Create tenants permission structure] "changed" is defined as true.

Also under TASK [sonarqube-onboard : Create Sonarqube Groups], for all items with name test_team_b I want to verify 'status' is defined as 'present'

What would be the best way to achieve this?


Viewing all articles
Browse latest Browse all 525

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>