Visualize Ansible playbooks
Visualization is always helpful when we need to understand how things are working. There are multiple tools and scripts that can help us to visualize Ansible playbooks. One of them is the ansible-playbook-grapher.
Ansible uses a hierarchy that determines the sequence of our tasks. On the top level there are Workflows in Ansible Tower or AWX. Workflows can run multiple playbooks in sequence. Playbooks can run multiple roles in sequence and roles run tasks in sequence. That hierarchy can be visualized with the ansible-playbook-grapher. The cool part is that it has options for --extra-vars
--tags
and --skip-tags
.
It is available as pip package.
pip3 install ansible-playbook-grapher
Here is a visualization of some random rules from ceph-ansible (https://github.com/ceph/ceph-ansible/). Note that ansible-playbook-grapher always needs a playbook as starting point. It can not visualize roles directly.
ansible-playbook-grapher --include-role-tasks ceph.yml
ceph.yml
ceph.yml
ceph.yml
Play #1: Ceph Installation (0)
Play #1: Ceph Installation (0)
ceph.yml->Play #1: Ceph Installation (0)
1
Play #2: Ceph Client (0)
Play #2: Ceph Client (0)
ceph.yml->Play #2: Ceph Client (0)
2
Play #3: Ceph Grafana (0)
Play #3: Ceph Grafana (0)
ceph.yml->Play #3: Ceph Grafana (0)
3
[role] ceph-common
[role] ceph-common
task_9dffd231-485c-4f9f-bb18-b584f4fd8349
[task] ceph-common : install yum plugin priorities
[role] ceph-common->task_9dffd231-485c-4f9f-bb18-b584f4fd8349
1 [when: ansible_facts['distribution_major_version'] | int == 7]
task_6ebbfaa9-366d-4934-903f-31ef40edafa9
[task] ceph-common : configure red hat ceph community repository stable key
[role] ceph-common->task_6ebbfaa9-366d-4934-903f-31ef40edafa9
2
task_469e918a-0966-4d24-94ad-483fc062d988
[task] ceph-common : configure red hat ceph stable community repository
[role] ceph-common->task_469e918a-0966-4d24-94ad-483fc062d988
3
task_28620b50-f17c-40af-aef4-5982d833f447
[task] ceph-common : configure red hat ceph stable noarch community repository
[role] ceph-common->task_28620b50-f17c-40af-aef4-5982d833f447
4
task_ce6eeb91-5693-46cc-925e-219189b36647
[task] ceph-common : create red hat storage package directories for redhat systems
[role] ceph-common->task_ce6eeb91-5693-46cc-925e-219189b36647
5
task_eb9b0808-006d-498e-b57d-2918aa282e3c
[task] ceph-common : ensure destination iso directory exists for redhat systems
[role] ceph-common->task_eb9b0808-006d-498e-b57d-2918aa282e3c
6 [when: ceph_rhcs_iso_path | dirname != '/']
task_42203a14-ee98-4223-9009-71afd6c5a13f
[task] ceph-common : fetch the red hat storage iso from the ansible server for redhat systems
[role] ceph-common->task_42203a14-ee98-4223-9009-71afd6c5a13f
7
task_3a87172b-8d38-4f53-8d10-d4a83730aa03
[task] ceph-common : mount red hat storage iso file for redhat systems
[role] ceph-common->task_3a87172b-8d38-4f53-8d10-d4a83730aa03
8
task_13df6784-dd88-4332-93ed-629cea8c6b86
[task] ceph-common : copy red hat storage iso content for redhat systems
[role] ceph-common->task_13df6784-dd88-4332-93ed-629cea8c6b86
9
task_c032e3da-3c4c-472c-8c8f-5b655a6fc25d
[task] ceph-common : unmount red hat storage iso file for redhat systems
[role] ceph-common->task_c032e3da-3c4c-472c-8c8f-5b655a6fc25d
10
task_8f6ae49d-4375-44ec-9934-324ac5c2ef24
[task] ceph-common : install red hat storage repository key for redhat systems
[role] ceph-common->task_8f6ae49d-4375-44ec-9934-324ac5c2ef24
11
task_c6458724-777b-4504-bfb2-214091787297
[task] ceph-common : add red hat storage repository for redhat systems
[role] ceph-common->task_c6458724-777b-4504-bfb2-214091787297
12
task_7e3619b9-e4db-4398-a5c3-9d6a027f735d
[task] ceph-common : enable red hat storage monitor repository
[role] ceph-common->task_7e3619b9-e4db-4398-a5c3-9d6a027f735d
13 [when: (mon_group_name in group_names or mgr_group_name in group_names)]
task_507fbfd4-d7a8-477a-bdc1-4332b319a2df
[task] ceph-common : enable red hat storage osd repository
[role] ceph-common->task_507fbfd4-d7a8-477a-bdc1-4332b319a2df
14 [when: osd_group_name in group_names]
task_129ca791-7b71-4004-a952-97b75c2c7e58
[task] ceph-common : enable red hat storage tools repository
[role] ceph-common->task_129ca791-7b71-4004-a952-97b75c2c7e58
15 [when: (mgr_group_name in group_names or rgw_group_name in group_names or mds_group_name in group_names or nfs_group_name in group_names or iscsi_gw_group_name in group_names or client_group_name in group_names or monitoring_group_name in group_names)]
task_a18b0541-a3e5-41e3-9686-b06621ac4f64
[task] ceph-common : fetch ceph red hat development repository
[role] ceph-common->task_a18b0541-a3e5-41e3-9686-b06621ac4f64
16
task_c3955181-940e-4a5f-9393-8461ca47533b
[task] ceph-common : configure ceph red hat development repository
[role] ceph-common->task_c3955181-940e-4a5f-9393-8461ca47533b
17
task_1933f319-02fb-4717-8d11-9894cee97ed9
[task] ceph-common : remove ceph_stable repositories
[role] ceph-common->task_1933f319-02fb-4717-8d11-9894cee97ed9
18
task_aaf25a07-f285-4780-ae07-3cca08abaedf
[task] ceph-common : configure red hat custom rpm key
[role] ceph-common->task_aaf25a07-f285-4780-ae07-3cca08abaedf
19 [when: ceph_custom_key is defined]
task_f0d772ad-615c-48ce-ae16-405aa23d1cfa
[task] ceph-common : configure red hat custom repository
[role] ceph-common->task_f0d772ad-615c-48ce-ae16-405aa23d1cfa
20
task_807d14b4-218a-4415-a366-6edc446fb028
[task] ceph-common : purge yum cache
[role] ceph-common->task_807d14b4-218a-4415-a366-6edc446fb028
21 [when: ansible_facts['pkg_mgr'] == 'yum']
task_a21092d6-48a2-46e1-bc53-6ba059dfee27
[task] ceph-common : make sure /tmp exists
[role] ceph-common->task_a21092d6-48a2-46e1-bc53-6ba059dfee27
22 [when: use_installer | bool]
task_7f13cbff-9c73-45d9-a00e-c5aaee21b690
[task] ceph-common : use mktemp to create name for rundep
[role] ceph-common->task_7f13cbff-9c73-45d9-a00e-c5aaee21b690
23 [when: use_installer | bool]
task_f86f3d30-bb53-4c1a-a621-428400152e3d
[task] ceph-common : copy rundep
[role] ceph-common->task_f86f3d30-bb53-4c1a-a621-428400152e3d
24 [when: use_installer | bool]
task_07bbc666-b6c2-4589-a17e-8dcf4882f0e6
[task] ceph-common : install ceph dependencies
[role] ceph-common->task_07bbc666-b6c2-4589-a17e-8dcf4882f0e6
25 [when: use_installer | bool]
task_c66d71d4-0b2c-4c26-869f-54e1dedbd127
[task] ceph-common : ensure rsync is installed
[role] ceph-common->task_c66d71d4-0b2c-4c26-869f-54e1dedbd127
26
task_5dbab6c8-4827-4176-98e1-01d58be24bb6
[task] ceph-common : synchronize ceph install
[role] ceph-common->task_5dbab6c8-4827-4176-98e1-01d58be24bb6
27
task_248d8157-85c8-45ed-8f35-8ac995fad138
[task] ceph-common : create user group ceph
[role] ceph-common->task_248d8157-85c8-45ed-8f35-8ac995fad138
28
task_25c9fbef-f9c1-4c59-b743-4964e306f624
[task] ceph-common : create user ceph
[role] ceph-common->task_25c9fbef-f9c1-4c59-b743-4964e306f624
29
task_98dfcb87-8af2-4f75-ad24-07d3e09c0c7d
[task] ceph-common : install redhat dependencies
[role] ceph-common->task_98dfcb87-8af2-4f75-ad24-07d3e09c0c7d
30 [when: ansible_facts['distribution'] == 'RedHat']
task_8cec9b1e-8d80-4edb-8132-ea49ce51bf74
[task] ceph-common : install centos dependencies
[role] ceph-common->task_8cec9b1e-8d80-4edb-8132-ea49ce51bf74
31 [when: ansible_facts['distribution'] == 'CentOS']
task_79f2baaa-8112-4d69-aa29-7067834a808a
[task] ceph-common : install redhat ceph packages
[role] ceph-common->task_79f2baaa-8112-4d69-aa29-7067834a808a
32
task_bc4ee1ed-a2a8-41db-a257-10dbd09491d5
[task] ceph-common : configure openSUSE ceph OBS repository
[role] ceph-common->task_bc4ee1ed-a2a8-41db-a257-10dbd09491d5
33
task_41c4cfe1-f5cb-4c49-a81c-068d493d3429
[task] ceph-common : install SUSE/openSUSE dependencies
[role] ceph-common->task_41c4cfe1-f5cb-4c49-a81c-068d493d3429
34
task_de4bd537-10cc-4400-ac59-f58f21e5a211
[task] ceph-common : install SUSE/openSUSE ceph packages
[role] ceph-common->task_de4bd537-10cc-4400-ac59-f58f21e5a211
35
task_e45676e0-7c1f-4c55-9ddd-13b5c3aafa88
[task] ceph-common : install dependencies for apt modules
[role] ceph-common->task_e45676e0-7c1f-4c55-9ddd-13b5c3aafa88
36
task_bb56e5b5-e1ab-454a-8691-8ffd981ab902
[task] ceph-common : configure debian ceph community repository stable key
[role] ceph-common->task_bb56e5b5-e1ab-454a-8691-8ffd981ab902
37
task_8edf387a-feae-4f4e-b8fb-3ddb0cf978d1
[task] ceph-common : configure debian ceph stable community repository
[role] ceph-common->task_8edf387a-feae-4f4e-b8fb-3ddb0cf978d1
38
task_5f3faa4c-5464-45a5-8682-00ffd0a06703
[task] ceph-common : fetch ceph debian development repository
[role] ceph-common->task_5f3faa4c-5464-45a5-8682-00ffd0a06703
39
task_90d96b20-132e-44c0-87b2-da6355803481
[task] ceph-common : configure ceph debian development repository
[role] ceph-common->task_90d96b20-132e-44c0-87b2-da6355803481
40
task_f87aa063-c302-419e-812b-c0b3addb7dec
[task] ceph-common : configure debian custom apt key
[role] ceph-common->task_f87aa063-c302-419e-812b-c0b3addb7dec
41 [when: ceph_custom_key is defined]
task_957abe24-6fa8-4da7-aded-b7f535feee34
[task] ceph-common : configure debian custom repository
[role] ceph-common->task_957abe24-6fa8-4da7-aded-b7f535feee34
42
task_31dd3276-6309-4a47-b392-d1365b318672
[task] ceph-common : add ubuntu cloud archive key package
[role] ceph-common->task_31dd3276-6309-4a47-b392-d1365b318672
43
task_b2fb5d87-95bc-4627-8919-b97b9cb690e9
[task] ceph-common : add ubuntu cloud archive repository
[role] ceph-common->task_b2fb5d87-95bc-4627-8919-b97b9cb690e9
44
task_a7673aef-524d-4d3d-bbfd-1ecbf518941a
[task] ceph-common : update apt cache if cache_valid_time has expired
[role] ceph-common->task_a7673aef-524d-4d3d-bbfd-1ecbf518941a
45
task_64f02afd-c743-45ac-a736-40c80fa2ea9e
[task] ceph-common : install dependencies
[role] ceph-common->task_64f02afd-c743-45ac-a736-40c80fa2ea9e
46
task_12ecd8dd-ab47-4b31-ad91-8e9166273570
[task] ceph-common : install ceph for debian
[role] ceph-common->task_12ecd8dd-ab47-4b31-ad91-8e9166273570
47
task_a03b67ce-9aca-4664-b410-d73ff917356a
[task] ceph-common : install red hat storage ceph packages for debian
[role] ceph-common->task_a03b67ce-9aca-4664-b410-d73ff917356a
48
task_26ba2b88-2cec-42e3-930b-b601bfb35481
[task] ceph-common : install ceph bundle
[role] ceph-common->task_26ba2b88-2cec-42e3-930b-b601bfb35481
49
task_ff824d4a-a722-4e75-9cde-cc34351f89ce
[task] ceph-common : get ceph version
[role] ceph-common->task_ff824d4a-a722-4e75-9cde-cc34351f89ce
50
task_7c8a1143-e2bb-4922-bfa7-ce81791eed89
[task] ceph-common : set_fact ceph_version
[role] ceph-common->task_7c8a1143-e2bb-4922-bfa7-ce81791eed89
51
task_0c09a9ec-d074-4b30-8b2c-82625703073d
[task] ceph-common : set_fact ceph_release jewel
[role] ceph-common->task_0c09a9ec-d074-4b30-8b2c-82625703073d
52 [when: ceph_version.split('.')[0] is version('10', '==')]
task_2146a791-1b23-4849-beb4-1789596f7965
[task] ceph-common : set_fact ceph_release kraken
[role] ceph-common->task_2146a791-1b23-4849-beb4-1789596f7965
53 [when: ceph_version.split('.')[0] is version('11', '==')]
task_8c48dc81-a7b3-490e-872d-3abb3f2c72c2
[task] ceph-common : set_fact ceph_release luminous
[role] ceph-common->task_8c48dc81-a7b3-490e-872d-3abb3f2c72c2
54 [when: ceph_version.split('.')[0] is version('12', '==')]
task_a89b8ce2-7621-4ad3-aca3-637c27076db1
[task] ceph-common : set_fact ceph_release mimic
[role] ceph-common->task_a89b8ce2-7621-4ad3-aca3-637c27076db1
55 [when: ceph_version.split('.')[0] is version('13', '==')]
task_39e06c81-c12b-4b5d-a842-c80f0987962f
[task] ceph-common : set_fact ceph_release nautilus
[role] ceph-common->task_39e06c81-c12b-4b5d-a842-c80f0987962f
56 [when: ceph_version.split('.')[0] is version('14', '==')]
task_2e4c2847-d891-4cb2-987c-dd0100856067
[task] ceph-common : set_fact ceph_release octopus
[role] ceph-common->task_2e4c2847-d891-4cb2-987c-dd0100856067
57 [when: ceph_version.split('.')[0] is version('15', '==')]
task_b5d2102d-efa9-4c24-9e3e-db4593695a8e
[task] ceph-common : set_fact ceph_release pacific
[role] ceph-common->task_b5d2102d-efa9-4c24-9e3e-db4593695a8e
58 [when: ceph_version.split('.')[0] is version('16', '==')]
task_87033529-0d58-421c-9393-a8586354c1c1
[task] ceph-common : set_fact ceph_release quincy
[role] ceph-common->task_87033529-0d58-421c-9393-a8586354c1c1
59 [when: ceph_version.split('.')[0] is version('17', '==')]
task_b9cff3f8-d2a9-4e79-8401-1dfa832a0c05
[task] ceph-common : set_fact ceph_release - override ceph_release with ceph_stable_release
[role] ceph-common->task_b9cff3f8-d2a9-4e79-8401-1dfa832a0c05
60 [when: ceph_origin == 'repository'ceph_repository not in ['dev', 'rhcs', 'custom']]
task_15fd0512-157a-4a01-8cfe-a4398b37b5cd
[task] ceph-common : create rbd client directory
[role] ceph-common->task_15fd0512-157a-4a01-8cfe-a4398b37b5cd
61 [when: rbd_client_directories | bool]
task_424c7d65-86c3-4f62-ad32-5fadc5308d29
[task] ceph-common : configure cluster name
[role] ceph-common->task_424c7d65-86c3-4f62-ad32-5fadc5308d29
62 [when: ansible_facts['os_family'] in ["RedHat", "Suse"]]
task_9b381df5-b754-4803-8b9d-4b3f95f53275
[task] ceph-common : check /etc/default/ceph exist
[role] ceph-common->task_9b381df5-b754-4803-8b9d-4b3f95f53275
63 [when: ansible_facts['os_family'] == "Debian"]
task_256d6567-1edf-455a-9606-7247f5ec8775
[task] ceph-common : when /etc/default/ceph is not dir
[role] ceph-common->task_256d6567-1edf-455a-9606-7247f5ec8775
64 [when: ansible_facts['os_family'] == "Debian"etc_default_ceph.stat.existsnot etc_default_ceph.stat.isdir]
task_085527ee-0de5-40f8-8af8-c69955c0ef7d
[task] ceph-common : when /etc/default/ceph is dir
[role] ceph-common->task_085527ee-0de5-40f8-8af8-c69955c0ef7d
65 [when: ansible_facts['os_family'] == "Debian"etc_default_ceph.stat.existsetc_default_ceph.stat.isdir]
task_5f1e02e4-c4e6-472f-bf6a-d03031477a6a
[task] ceph-common : configure TCMALLOC_MAX_TOTAL_THREAD_CACHE_BYTES for debian
[role] ceph-common->task_5f1e02e4-c4e6-472f-bf6a-d03031477a6a
66 [when: ansible_facts['os_family'] == 'Debian'etc_default_ceph.stat.exists]
task_c6f8b02c-70b5-4c7a-be69-2ad270c7f9d7
[task] ceph-common : configure TCMALLOC_MAX_TOTAL_THREAD_CACHE_BYTES for redhat
[role] ceph-common->task_c6f8b02c-70b5-4c7a-be69-2ad270c7f9d7
67 [when: ansible_facts['os_family'] == 'RedHat']
task_48ac47fd-8126-4c4a-989c-a1616ec7126e
[task] ceph-common : install policycoreutils-python
[role] ceph-common->task_48ac47fd-8126-4c4a-989c-a1616ec7126e
68 [when: ansible_facts['selinux']['status'] == 'enabled'ansible_facts['distribution_major_version'] == '7']
task_19f420f2-d1f1-40db-a3c7-db2132b70717
[task] ceph-common : install python3-policycoreutils on RHEL 8
[role] ceph-common->task_19f420f2-d1f1-40db-a3c7-db2132b70717
69 [when: ansible_facts['selinux']['status'] == 'enabled'inventory_hostname in groups.get(nfs_group_name, []) or inventory_hostname in groups.get(rgwloadbalancer_group_name, [])ansible_facts['distribution_major_version'] == '8']
task_29718a72-af24-4793-a7ae-cb958fc205b1
[task] ceph-common : meta
[role] ceph-common->task_29718a72-af24-4793-a7ae-cb958fc205b1
71 [when: True]
Play #1: Ceph Installation (0)->[role] ceph-common
1
[role] ceph-client
[role] ceph-client
task_a634e00f-c743-462d-a29b-c24c93b96755
[task] ceph-client : get keys from monitors
[role] ceph-client->task_a634e00f-c743-462d-a29b-c24c93b96755
1 [when: cephx | boolcopy_admin_key | bool]
task_0000d661-71b8-4ac2-a44a-7ad509360af3
[task] ceph-client : copy ceph key(s) if needed
[role] ceph-client->task_0000d661-71b8-4ac2-a44a-7ad509360af3
2 [when: cephx | boolcopy_admin_key | bool]
task_76c6497b-d15b-486f-a57e-02a560cd7bfd
[task] ceph-client : set_fact delegated_node
[role] ceph-client->task_76c6497b-d15b-486f-a57e-02a560cd7bfd
3
task_a5d65b80-66bb-4294-a4e0-0521aa665ac4
[task] ceph-client : set_fact admin_key_presence
[role] ceph-client->task_a5d65b80-66bb-4294-a4e0-0521aa665ac4
4
task_c1eb2374-447d-4530-b79b-8474f3178de8
[task] ceph-client : create cephx key(s)
[role] ceph-client->task_c1eb2374-447d-4530-b79b-8474f3178de8
5 [when: cephx | boolkeys | length > 0inventory_hostname == groups.get('_filtered_clients') | first]
task_d0d872d9-c34e-4dd1-9456-332adedb516e
[task] ceph-client : slurp client cephx key(s)
[role] ceph-client->task_d0d872d9-c34e-4dd1-9456-332adedb516e
6 [when: cephx | boolkeys | length > 0inventory_hostname == groups.get('_filtered_clients') | first]
task_700e1d60-2861-4351-bf41-e4f71568334f
[task] ceph-facts : get current default crush rule details
[role] ceph-client->task_700e1d60-2861-4351-bf41-e4f71568334f
7 [when: admin_key_presence | boolinventory_hostname == groups.get('_filtered_clients', []) | first]
task_58cd21bb-218d-4135-b6b7-84b7f505d71c
[task] ceph-facts : get current default crush rule name
[role] ceph-client->task_58cd21bb-218d-4135-b6b7-84b7f505d71c
8 [when: admin_key_presence | boolinventory_hostname == groups.get('_filtered_clients', []) | firstitem.rule_id | int == osd_pool_default_crush_rule | int]
task_e36834c6-6eb3-47b6-aa93-8fb1d9c303aa
[task] ceph-facts : meta
[role] ceph-client->task_e36834c6-6eb3-47b6-aa93-8fb1d9c303aa
9 [when: admin_key_presence | boolinventory_hostname == groups.get('_filtered_clients', []) | firstTrue]
task_59251ba0-36d1-4526-8d09-3803ecacfe06
[task] ceph-client : create ceph pool(s)
[role] ceph-client->task_59251ba0-36d1-4526-8d09-3803ecacfe06
10 [when: admin_key_presence | boolinventory_hostname == groups.get('_filtered_clients', []) | first]
task_30cb62ff-09ea-413e-85f0-350aa1c6bd12
[task] ceph-client : get client cephx keys
[role] ceph-client->task_30cb62ff-09ea-413e-85f0-350aa1c6bd12
11 [when: not item.get('skipped', False)]
task_27fd52eb-eec4-48e5-aaf1-0a8ec5b8ec74
[task] ceph-client : meta
[role] ceph-client->task_27fd52eb-eec4-48e5-aaf1-0a8ec5b8ec74
13 [when: True]
Play #2: Ceph Client (0)->[role] ceph-client
1
[role] ceph-grafana
[role] ceph-grafana
task_f5807f7f-a263-400b-a922-ac43da09b1a0
[task] ceph-grafana : create /etc/grafana and /var/lib/grafana
[role] ceph-grafana->task_f5807f7f-a263-400b-a922-ac43da09b1a0
1
task_441d90c8-f2cc-4830-be5b-c8e8e243bf42
[task] ceph-grafana : ship systemd service
[role] ceph-grafana->task_441d90c8-f2cc-4830-be5b-c8e8e243bf42
2
task_2a6b2c4e-91dd-4d43-8b0e-c3823aa8f8db
[task] ceph-grafana : start the grafana-server service
[role] ceph-grafana->task_2a6b2c4e-91dd-4d43-8b0e-c3823aa8f8db
3
task_2463e684-f8b6-4ba3-a270-5e890e62df1b
[task] ceph-grafana : install ceph-grafana-dashboards package on RedHat or SUSE
[role] ceph-grafana->task_2463e684-f8b6-4ba3-a270-5e890e62df1b
4 [when: not containerized_deployment | boolansible_facts['os_family'] in ['RedHat', 'Suse']]
task_b633c6cc-3ce5-4169-929a-78e1707b1730
[task] ceph-grafana : make sure grafana is down
[role] ceph-grafana->task_b633c6cc-3ce5-4169-929a-78e1707b1730
5
task_0ad801a3-493d-4e80-84a9-5ae6293c1b42
[task] ceph-grafana : wait for grafana to be stopped
[role] ceph-grafana->task_0ad801a3-493d-4e80-84a9-5ae6293c1b42
6
task_3d7988c0-fed5-440f-aa95-1322626596a6
[task] ceph-grafana : make sure grafana configuration directories exist
[role] ceph-grafana->task_3d7988c0-fed5-440f-aa95-1322626596a6
7
task_5d3cfbe6-5a13-403a-9eca-abc74c95c640
[task] ceph-grafana : download ceph grafana dashboards
[role] ceph-grafana->task_5d3cfbe6-5a13-403a-9eca-abc74c95c640
8 [when: not containerized_deployment | boolnot ansible_facts['os_family'] in ['RedHat', 'Suse']]
task_8cf5fe02-cc17-4acf-813c-2ca597c0fa3b
[task] ceph-grafana : write grafana.ini
[role] ceph-grafana->task_8cf5fe02-cc17-4acf-813c-2ca597c0fa3b
9
task_1fcb7952-f488-49f4-ac2b-f62f38e2e96e
[task] ceph-grafana : write datasources provisioning config file
[role] ceph-grafana->task_1fcb7952-f488-49f4-ac2b-f62f38e2e96e
10
task_b8e5375f-a59a-40d7-b0e5-5ad7e013af1c
[task] ceph-grafana : Write dashboards provisioning config file
[role] ceph-grafana->task_b8e5375f-a59a-40d7-b0e5-5ad7e013af1c
11 [when: not containerized_deployment | bool]
task_1ff9b93e-6836-4584-9c1e-36591a453185
[task] ceph-grafana : copy grafana SSL certificate file
[role] ceph-grafana->task_1ff9b93e-6836-4584-9c1e-36591a453185
12 [when: grafana_crt | length > 0dashboard_protocol == "https"]
task_b28dc88c-03f3-4297-8a9d-b7bfc7f44e59
[task] ceph-grafana : copy grafana SSL certificate key
[role] ceph-grafana->task_b28dc88c-03f3-4297-8a9d-b7bfc7f44e59
13 [when: grafana_key | length > 0dashboard_protocol == "https"]
task_453f051c-855a-4e98-9cd1-9375f410f3a6
[task] ceph-grafana : generate a Self Signed OpenSSL certificate for dashboard
[role] ceph-grafana->task_453f051c-855a-4e98-9cd1-9375f410f3a6
14 [when: dashboard_protocol == "https"grafana_key | length == 0 or grafana_crt | length == 0]
task_3b16d9a7-3fcd-4f89-a9f8-5bd1695c51a8
[task] ceph-grafana : enable and start grafana
[role] ceph-grafana->task_3b16d9a7-3fcd-4f89-a9f8-5bd1695c51a8
15
task_c97bbf1d-8234-4af3-8cfb-eae9c3495d81
[task] ceph-grafana : wait for grafana to start
[role] ceph-grafana->task_c97bbf1d-8234-4af3-8cfb-eae9c3495d81
16
task_c9e1328f-836a-4e5e-9167-c3445c86a43a
[task] ceph-grafana : meta
[role] ceph-grafana->task_c9e1328f-836a-4e5e-9167-c3445c86a43a
18 [when: True]
Play #3: Ceph Grafana (0)->[role] ceph-grafana
1
There is a similar tool called ansible-inventory-grapher that builds graphs for Ansible inventories (https://github.com/willthames/ansible-inventory-grapher)