|
@@ -0,0 +1,129 @@
|
|
|
+# Copyright 2021 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: Wait for CoreDNS to restart
|
|
|
+ command: kubectl rollout status deployment/coredns -n kube-system
|
|
|
+ changed_when: false
|
|
|
+ ignore_errors: True
|
|
|
+
|
|
|
+- name: Get K8s pods
|
|
|
+ command: kubectl get pods --all-namespaces
|
|
|
+ changed_when: false
|
|
|
+ register: k8s_pods
|
|
|
+
|
|
|
+- name: Deploy MetalLB
|
|
|
+ command: "kubectl apply -f '{{ metallb_yaml_url }}'"
|
|
|
+ changed_when: true
|
|
|
+ when: "'metallb' not in k8s_pods.stdout"
|
|
|
+
|
|
|
+- name: Create MetalLB Setup Config Files
|
|
|
+ copy:
|
|
|
+ src: metal-config.yaml
|
|
|
+ dest: "{{ metallb_config_file_dest }}"
|
|
|
+ owner: root
|
|
|
+ group: root
|
|
|
+ mode: "{{ metallb_config_file_mode }}"
|
|
|
+
|
|
|
+- name: Replace metallb_addresses
|
|
|
+ replace:
|
|
|
+ path: "{{ metallb_config_file_dest }}"
|
|
|
+ regexp: 'addresses:'
|
|
|
+ replace: "{{ metallb_addresses }}"
|
|
|
+
|
|
|
+- name: Remove ^M characters from metal-config file
|
|
|
+ shell: 'sed -e "s/\r//g" {{ metallb_config_file_dest }} > {{ metallb_config_updated_file_dest }}'
|
|
|
+ args:
|
|
|
+ warn: false
|
|
|
+ changed_when: true
|
|
|
+
|
|
|
+- name: Update metal-config file permissions
|
|
|
+ file:
|
|
|
+ path: "{{ metallb_config_updated_file_dest }}"
|
|
|
+ owner: root
|
|
|
+ group: root
|
|
|
+ mode: "{{ metallb_config_file_mode }}"
|
|
|
+
|
|
|
+- name: Remove old metallb-config file
|
|
|
+ file:
|
|
|
+ path: "{{ metallb_config_file_dest }}"
|
|
|
+ state: absent
|
|
|
+
|
|
|
+- name: Create MetalLB Setup Deployment Files
|
|
|
+ copy:
|
|
|
+ src: metallb.yaml
|
|
|
+ dest: "{{ metallb_deployment_file_dest }}"
|
|
|
+ owner: root
|
|
|
+ group: root
|
|
|
+ mode: "{{ metallb_deployment_file_mode }}"
|
|
|
+
|
|
|
+- name: Replace metallb_container_port
|
|
|
+ replace:
|
|
|
+ path: "{{ metallb_deployment_file_dest }}"
|
|
|
+ regexp: 'metallb_container_port'
|
|
|
+ replace: "{{ metallb_container_port }}"
|
|
|
+
|
|
|
+- name: Replace metallb_container_port
|
|
|
+ replace:
|
|
|
+ path: "{{ metallb_deployment_file_dest }}"
|
|
|
+ regexp: 'metallb_run_as_user_port'
|
|
|
+ replace: "{{ metallb_run_as_user_port }}"
|
|
|
+
|
|
|
+- name: Deploy MetalLB
|
|
|
+ command: "kubectl apply -f '{{ metallb_deployment_file_dest }}'"
|
|
|
+ changed_when: true
|
|
|
+ when: "'metallb' not in k8s_pods.stdout"
|
|
|
+
|
|
|
+- name: Create default setup for MetalLB
|
|
|
+ command: "kubectl apply -f '{{ metallb_config_updated_file_dest }}'"
|
|
|
+ changed_when: true
|
|
|
+ when: "'metallb' not in k8s_pods.stdout"
|
|
|
+
|
|
|
+- name: Deploy K8s dashboard
|
|
|
+ command: "kubectl apply -f {{ k8s_dashboard_yaml_url }}"
|
|
|
+ changed_when: true
|
|
|
+ when: "'kubernetes-dashboard' not in k8s_pods.stdout"
|
|
|
+
|
|
|
+- name: Copy k8s_dashboard_admin.yml file
|
|
|
+ copy:
|
|
|
+ src: k8s_dashboard_admin.yaml
|
|
|
+ dest: "{{ k8s_dashboard_admin_file_dest }}"
|
|
|
+ owner: root
|
|
|
+ group: root
|
|
|
+ mode: "{{ k8s_dashboard_admin_file_mode }}"
|
|
|
+
|
|
|
+- name: Create admin user for K8s dashboard
|
|
|
+ command: "kubectl apply -f {{ k8s_dashboard_admin_file_dest }}"
|
|
|
+ changed_when: true
|
|
|
+
|
|
|
+- name: Start NFS Client Provisioner
|
|
|
+ command: "helm install stable/nfs-client-provisioner --set nfs.server='{{ ansible_default_ipv4.address }}' --set nfs.path='{{ nfs_path }}' --generate-name"
|
|
|
+ changed_when: true
|
|
|
+ when: "'nfs-client-provisioner' not in k8s_pods.stdout"
|
|
|
+
|
|
|
+- name: Set NFS-Client Provisioner as DEFAULT StorageClass
|
|
|
+ shell: >
|
|
|
+ kubectl patch storageclasses.storage.k8s.io nfs-client \
|
|
|
+ -p '{ "metadata": { "annotations":{ "storageclass.kubernetes.io/is-default-class":"true" }}}'
|
|
|
+ changed_when: true
|
|
|
+
|
|
|
+- name: Get K8s namespaces
|
|
|
+ command: kubectl get namespaces
|
|
|
+ changed_when: false
|
|
|
+ register: k8s_namespaces
|
|
|
+
|
|
|
+- name: Create namespace network-config
|
|
|
+ command: kubectl create namespace network-config
|
|
|
+ changed_when: true
|
|
|
+ when: "'network-config' not in k8s_namespaces.stdout"
|