123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156 |
- # Copyright 2022 Dell Inc. or its subsidiaries. All Rights Reserved.
- #
- # Licensed under the Apache License, Version 2.0 (the "License");
- # you may not use this file except in compliance with the License.
- # You may obtain a copy of the License at
- #
- # http://www.apache.org/licenses/LICENSE-2.0
- #
- # Unless required by applicable law or agreed to in writing, software
- # distributed under the License is distributed on an "AS IS" BASIS,
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- # See the License for the specific language governing permissions and
- # limitations under the License.
- ---
- - name: Initialize variables
- set_fact:
- cobbler_container_status: false
- cobbler_image_status: false
- cobbler_config_status: false
- backup_map_status: false
- new_node_status: false
- provision_os_change: false
- previous_os: None
- tags: install
- - name: Set centos kickstart file name
- set_fact:
- cobbler_kickstart_file: "{{ cobbler_centos_ks }}"
- when: provision_os == os_supported_centos
- - name: Set rocky kickstart file name
- set_fact:
- cobbler_kickstart_file: "{{ cobbler_rocky_ks }}"
- when: provision_os == os_supported_rocky
- - name: Set rocky kickstart file name
- set_fact:
- cobbler_kickstart_file: "{{ cobbler_leap_ks }}"
- when: provision_os == os_supported_leap
- - name: Check if any backup file exists
- block:
- - name: Check status of backup file
- stat:
- path: "{{ role_path }}/files/backup_mapping_file.csv"
- register: backup_map
- - name: Set status for backup file
- set_fact:
- backup_map_status: true
- when: backup_map.stat.exists
- rescue:
- - name: Message
- debug:
- msg: "All nodes are new"
- verbosity: 2
- - name: Get K8s namespaces
- command: kubectl get namespaces
- changed_when: false
- register: k8s_namespaces
- - name: Create namespace network-config
- command: kubectl create namespace cobbler
- changed_when: true
- when: cobbler_namespace not in k8s_namespaces.stdout
- - name: Inspect the cobbler image
- command: buildah images
- register: cobbler_image_result
- failed_when: false
- changed_when: false
- tags: install
- - name: Check cobbler pod status on the machine
- command: kubectl get pods -n {{ cobbler_namespace }}
- register: cobbler_pod_result
- failed_when: false
- changed_when: false
- tags: install
- - name: Update cobbler image status
- set_fact:
- cobbler_image_status: true
- when: cobbler_image_name in cobbler_image_result.stdout
- tags: install
- - name: Update cobbler container status
- set_fact:
- cobbler_container_status: true
- when: "'cobbler' in cobbler_pod_result.stdout"
- tags: install
- - name: Get cobbler pod name
- command: 'kubectl get pod -n {{ cobbler_namespace }} -l app=cobbler -o jsonpath="{.items[0].metadata.name}"'
- changed_when: false
- register: cobbler_pod_name
- when: cobbler_container_status
- tags: install
- - name: Fetch cobbler profile list
- command: "kubectl exec --stdin --tty -n {{ cobbler_namespace }} {{ cobbler_pod_name.stdout }} -- cobbler profile list"
- changed_when: false
- register: cobbler_profile_list
- failed_when: false
- when: cobbler_container_status
- - name: Check crontab list
- command: "kubectl exec --stdin --tty -n {{ cobbler_namespace }} {{ cobbler_pod_name.stdout }} -- crontab -l"
- changed_when: false
- register: crontab_list
- failed_when: false
- when: cobbler_container_status
- - name: Check if .provisioned_os file exists
- stat:
- path: "/root/omnia/control_plane/roles/provision_cobbler/files/.provisioned_os"
- register: provisioned_os_file
- - name: Create .provisioned_os file
- file:
- path: "{{ role_path }}/files/.provisioned_os"
- state: touch
- mode: "{{ temp_file_perm }}"
- when: not provisioned_os_file.stat.exists
- - name: Check status of .provisioned_os file
- stat:
- path: "{{ role_path }}/files/.provisioned_os"
- register: provisioned_os_file
- - name: Get the previous os provisioned
- set_fact:
- previous_os: "{{ lookup('file', '{{ role_path }}/files/.provisioned_os').split() | last }}"
- when:
- - provisioned_os_file.stat.exists
- - provisioned_os_file.stat.size > 0
- - name: Update cobbler config status
- set_fact:
- cobbler_config_status: true
- when:
- - cobbler_container_status
- - (provision_os in cobbler_profile_list.stdout) or (previous_os in cobbler_profile_list.stdout) or ( "" in cobbler_profile_list.stdout)
- - "'* * * * * /usr/bin/ansible-playbook /root/tftp.yml' in crontab_list.stdout"
- - "'*/5 * * * * /usr/bin/ansible-playbook /root/inventory_creation.yml' in crontab_list.stdout"
- - name: Set status for provison_os_change
- set_fact:
- provision_os_change: true
- when:
- - previous_os != None
- - previous_os != provision_os
- - cobbler_config_status
|