|  | 
| 1 | 1 | --- | 
|  | 2 | +- name: Get facts for control host | 
|  | 3 | +  hosts: localhost | 
|  | 4 | +  gather_facts: true | 
|  | 5 | +  tasks: | 
|  | 6 | +    - name: Check if ngs enabled | 
|  | 7 | +      ansible.builtin.set_fact: | 
|  | 8 | +        ngs_enabled: >- | 
|  | 9 | +          {{ 'genericswitch' in kolla_neutron_ml2_mechanism_drivers | default(false) }} | 
|  | 10 | +      when: kolla_neutron_ml2_mechanism_drivers | 
|  | 11 | + | 
|  | 12 | +- name: Get facts for seed node | 
|  | 13 | +  hosts: seed | 
|  | 14 | +  gather_facts: true | 
|  | 15 | +  tasks: | 
|  | 16 | +    - name: Is there a dedicated seed node? | 
|  | 17 | +      ansible.builtin.set_fact: | 
|  | 18 | +        seed_node_is_vm: "{{ ansible_facts.virtualization_role == 'guest' }}" | 
|  | 19 | + | 
|  | 20 | +- name: Get facts | 
|  | 21 | +  hosts: all | 
|  | 22 | +  gather_facts: true | 
|  | 23 | +  tasks: | 
|  | 24 | +    - name: Pinging stackhpc.com to check internet connectivity | 
|  | 25 | +      ansible.builtin.command: "ping stackhpc.com -c 3" | 
|  | 26 | +      register: successful_ping | 
|  | 27 | +      timeout: 5 | 
|  | 28 | +      ignore_errors: true | 
|  | 29 | + | 
|  | 30 | +    - name: Set internet connectivity fact | 
|  | 31 | +      ansible.builtin.set_fact: | 
|  | 32 | +        internet_connectivity: "{{ not successful_ping.failed }}" | 
|  | 33 | + | 
|  | 34 | +    - name: Get OS distribution | 
|  | 35 | +      ansible.builtin.set_fact: | 
|  | 36 | +        distribution: "{{ ansible_facts.distribution }}" | 
|  | 37 | + | 
|  | 38 | +    - name: Get OS distribution release | 
|  | 39 | +      ansible.builtin.set_fact: | 
|  | 40 | +        distribution_release: "{{ ansible_facts.distribution_release }}" | 
|  | 41 | + | 
|  | 42 | +    - name: Get kernel version | 
|  | 43 | +      ansible.builtin.command: "uname -r" | 
|  | 44 | +      register: kernel_version | 
|  | 45 | + | 
|  | 46 | +    - name: Check if docker is installed | 
|  | 47 | +      ansible.builtin.command: "which docker" | 
|  | 48 | +      register: docker_check | 
|  | 49 | +      failed_when: docker_check.rc not in [0] | 
|  | 50 | +      ignore_errors: true | 
|  | 51 | + | 
|  | 52 | +    - name: Get running contianers | 
|  | 53 | +      ansible.builtin.command: "docker ps --format {% raw %}'{{.Names}}'{% endraw %}" | 
|  | 54 | +      become: true | 
|  | 55 | +      register: containers_list | 
|  | 56 | +      when: not docker_check.failed | 
|  | 57 | + | 
|  | 58 | +    - name: Check if hugepages enabled | 
|  | 59 | +      ansible.builtin.set_fact: | 
|  | 60 | +        hugepages_enabled: "{{ 'hugepages' in ansible_facts.cmdline }}" | 
|  | 61 | + | 
| 2 | 62 | - name: Gather Cloud Facts | 
| 3 | 63 |   hosts: localhost | 
| 4 | 64 |   gather_facts: true | 
| 5 | 65 |   tasks: | 
| 6 | 66 |     - name: Write facts to file | 
| 7 | 67 |       vars: | 
| 8 | 68 |         cloud_facts: | 
| 9 |  | -          ansible_control_host_distribution: "{{ ansible_facts.distribution }}" | 
| 10 |  | -          ansible_control_host_distribution_release: "{{ ansible_facts.distribution_release }}" | 
|  | 69 | +          internet_connectivity: "{{ hostvars | group_hostvars_by_var('internet_connectivity') }}" | 
|  | 70 | +          seed_node_is_vm: "{{ hostvars[groups['seed'][0]]['seed_node_is_vm'] | default('N/A') if groups ['seed'] else 'N/A' }}" | 
|  | 71 | +          distributions: "{{ hostvars | group_hostvars_by_var('distribution') }}" | 
|  | 72 | +          dist_releases: "{{ hostvars | group_hostvars_by_var('distribution_release') }}" | 
|  | 73 | +          kernel_versions: "{{ hostvars | group_hostvars_by_var('kernel_version','stdout') }}" | 
|  | 74 | +          deployed_containers: "{{ hostvars | group_hostvars_by_host('containers_list', 'stdout_lines') | default({}) }}" | 
| 11 | 75 |           openstack_release: "{{ openstack_release }}" | 
| 12 | 76 |           openstack_release_name: "{{ openstack_release_codename }}" | 
| 13 | 77 |           ansible_control_host_is_vm: "{{ ansible_facts.virtualization_role == 'guest' }}" | 
|  | 
| 22 | 86 |           ceph_release: "{{ cephadm_ceph_release }}" | 
| 23 | 87 |           storage_hyperconverged: "{{ groups['controllers'] | intersect(groups['osds']) | length > 0 | bool }}" | 
| 24 | 88 |           wazuh_enabled: "{{ groups['wazuh-agent'] | length > 0 | bool }}" | 
|  | 89 | +          ngs_enabled: "{{ ngs_enabled | default(false) }}" | 
| 25 | 90 |           kayobe_managed_switches: "{{ groups['switches'] | length > 0 | bool }}" | 
| 26 | 91 |           proxy_configured: "{{ http_proxy | bool or https_proxy | bool }}" | 
| 27 | 92 |           bifrost_version: "{{ kolla_bifrost_source_version }}" | 
| 28 |  | -          barbican_enabled: "{{ kolla_enable_barbican }}" | 
| 29 |  | -          nova_enabled: "{{ kolla_enable_nova }}" | 
| 30 |  | -          neutron_enabled: "{{ kolla_enable_neutron }}" | 
| 31 |  | -          ovs_enabled: "{{ kolla_enable_openvswitch }}" | 
| 32 |  | -          ovn_enabled: "{{ kolla_enable_ovn }}" | 
| 33 |  | -          glance_enabled: "{{ kolla_enable_glance }}" | 
| 34 |  | -          cinder_enabled: "{{ kolla_enable_cinder }}" | 
| 35 |  | -          keystone_enabled: "{{ kolla_enable_keystone }}" | 
| 36 |  | -          horizon_enabled: "{{ kolla_enable_horizon }}" | 
| 37 |  | -          fluentd_enabled: "{{ kolla_enable_fluentd }}" | 
| 38 |  | -          rabbitmq_enabled: "{{ kolla_enable_rabbitmq }}" | 
| 39 |  | -          mariadb_enabled: "{{ kolla_enable_mariadb }}" | 
| 40 |  | -          mariabackup_enabled: "{{ kolla_enable_mariabackup }}" | 
| 41 |  | -          memcached_enabled: "{{ kolla_enable_memcached }}" | 
| 42 |  | -          haproxy_enabled: "{{ kolla_enable_haproxy }}" | 
| 43 |  | -          keepalived_enabled: "{{ kolla_enable_keepalived }}" | 
| 44 |  | -          octavia_enabled: "{{ kolla_enable_octavia }}" | 
| 45 |  | -          designate_enabled: "{{ kolla_enable_designate }}" | 
| 46 |  | -          manila_enabled: "{{ kolla_enable_manila }}" | 
| 47 |  | -          magnum_enabled: "{{ kolla_enable_magnum }}" | 
| 48 |  | -          heat_enabled: "{{ kolla_enable_heat }}" | 
| 49 |  | -          ironic_enabled: "{{ kolla_enable_ironic }}" | 
| 50 |  | -          skyline_enabled: "{{ kolla_enable_skyline }}" | 
| 51 |  | -          blazar_enabled: "{{ kolla_enable_blazar }}" | 
| 52 |  | -          pulp_enabled: "{{ seed_pulp_container_enabled }}" | 
| 53 |  | -          opensearch_enabled: "{{ kolla_enable_opensearch }}" | 
| 54 |  | -          opensearch_dashboards_enabled: "{{ kolla_enable_opensearch_dashboards }}" | 
| 55 |  | -          influxdb_enabled: "{{ kolla_enable_influxdb }}" | 
| 56 |  | -          grafana_enabled: "{{ kolla_enable_grafana }}" | 
| 57 |  | -          prometheus_enabled: "{{ kolla_enable_prometheus }}" | 
| 58 |  | -          cloudkitty_enabled: "{{ kolla_enable_cloudkitty }}" | 
| 59 |  | -          telegraf_enabled: "{{ kolla_enable_telegraf }}" | 
| 60 | 93 |           internal_tls_enabled: "{{ kolla_enable_tls_internal }}" | 
| 61 | 94 |           external_tls_enabled: "{{ kolla_enable_tls_external }}" | 
| 62 | 95 |           firewalld_enabled_all: >- | 
|  | 
| 82 | 115 |           stackhpc_package_repos_enabled: "{{ stackhpc_repos_enabled }}" | 
| 83 | 116 |           pulp_tls_enabled: "{{ pulp_enable_tls }}" | 
| 84 | 117 |           kolla_image_tags: "{{ kolla_image_tags }}" | 
|  | 118 | +          gpu_passthrough_enabled: "{{ gpu_group_map | length > 0 | bool }}" | 
|  | 119 | +          vGPU_enabled: "{{ groups['vgpu'] | length > 0 | bool }}" | 
|  | 120 | +          hugepages_enabled: "{{ hostvars | group_hostvars_by_var('hugepages_enabled') }}" | 
| 85 | 121 |       ansible.builtin.copy: | 
| 86 | 122 |         content: "{{ cloud_facts | to_nice_json(sort_keys=false) }}" | 
| 87 | 123 |         dest: ~/cloud-facts.json | 
0 commit comments