--- # Set this_node fact - set_fact: this_node: "{{ inventory_hostname.split('.')[0] }}" tags: always # Set coordinator state fact - set_fact: is_coordinator: "{% for node in pvc_nodes if node.hostname == this_node %}{{ node.is_coordinator }}{% endfor %}" tags: always # First-run check - name: check if this is a new instance shell: "echo 'bootstrapped' > /etc/pvc-install.pvc" args: creates: /etc/pvc-install.pvc register: newhost_check tags: always - name: set newhost fact set_fact: newhost: yes when: newhost_check.changed tags: always - include: common/add_cluster_ips.yml when: newhost is defined and newhost tags: always # Install system tweaks - include: system/main.yml tags: pvc-system # Install base databases (coordinators only) - include: ceph/main.yml tags: pvc-ceph when: is_coordinator - include: zookeeper/main.yml tags: pvc-zookeeper when: is_coordinator - include: patroni/main.yml tags: pvc-patroni when: is_coordinator # Install core services - include: libvirt/main.yml tags: pvc-libvirt - include: frr/main.yml tags: pvc-frr # Install PVC daemon - include: pvc/main.yml tags: pvc-daemon - name: restart server on first install shell: 'sleep 3 && shutdown -r now "Ansible updates triggered"' async: 1 poll: 0 ignore_errors: yes become: yes when: newhost is defined and newhost tags: always