############################################################################## # Copyright (c) 2016 HUAWEI TECHNOLOGIES CO.,LTD and others. # # All rights reserved. This program and the accompanying materials # are made available under the terms of the Apache License, Version 2.0 # which accompanies this distribution, and is available at # http://www.apache.org/licenses/LICENSE-2.0 ############################################################################## --- - name: check the kubespray sample path stat: path=/opt/kargo_k8s/inventory/sample register: sample_stat - name: Move kubespray group_vars folder command: mv /opt/kargo_k8s/inventory/sample/group_vars /opt/kargo_k8s/inventory/ when: sample_stat.stat.exists - name: generate kubespray inventory configure file template: src: "inventory.j2" dest: "/opt/kargo_k8s/inventory/inventory.cfg" tags: - ansible - name: copy overrided variables for arm architecture copy: src: "{{ item }}" dest: /opt/kargo_k8s/extra-vars.yml with_first_found: - extra-vars-{{ ansible_architecture }}.yml - extra-vars.yml - skip: true - name: copy overrided variables for kubespray template: src: "{{ item }}" dest: "/opt/kargo_k8s/extra-vars.yml" with_first_found: - extra-vars-{{ ansible_architecture }}.yml.j2 - extra-vars.yml.j2 tags: - ansible - name: copy 2flannel playbook to kargo copy: src: "{{ run_dir }}/roles/2flannel" dest: /opt/kargo_k8s/roles/network_plugin - name: copy 2flannel-apps playbook to kargo copy: src: "{{ run_dir }}/roles/2flannel-apps/" dest: /opt/kargo_k8s/roles/kubernetes-apps/network_plugin/2flannel - name: append 2flannel to network plugin blockinfile: path: /opt/kargo_k8s/roles/network_plugin/meta/main.yml block: " - role: network_plugin/2flannel\n \ when: kube_network_plugin == '2flannel'\n tags: 2flannel\n" - name: append 2flannel apps to network plugin blockinfile: path: /opt/kargo_k8s/roles/kubernetes-apps/network_plugin/meta/main.yml block: " - role: kubernetes-apps/network_plugin/2flannel\n \ when: kube_network_plugin == '2flannel'\n tags: 2flannel\n" - name: append 2flannel to valid kube_network_plugin list replace: path: "/opt/kargo_k8s/roles/kubernetes/{{ item.path }}" regexp: "{{ item.regexp }}" replace: "{{ item.replace }}" with_items: - {path: 'master/templates/manifests/kube-controller-manager.manifest.j2', regexp: '"cloud", "flannel"', replace: '"cloud", "flannel", "2flannel"'} - {path: 'node/templates/kubelet.kubeadm.env.j2', regexp: '"calico", "canal", "flannel", "weave"', replace: '"calico", "canal", "flannel", "weave", "2flannel"'} - {path: 'node/templates/kubelet.standard.env.j2', regexp: '"calico", "canal", "flannel", "weave"', replace: '"calico", "canal", "flannel", "weave", "2flannel"'} - {path: 'node/templates/kubelet.rkt.service.j2', regexp: '"calico", "weave", "canal", "flannel"', replace: '"calico", "weave", "canal", "flannel", "2flannel"'} - {path: 'preinstall/tasks/main.yml', regexp: '"calico", "weave", "canal", "flannel"', replace: '"calico", "weave", "canal", "flannel", "2flannel"'} # yamllint disable rule:line-length - name: enable CSI plugin feature lineinfile: dest: "/opt/kargo_k8s/roles/kubespray-defaults/defaults/main.yaml" regexp: "^kube_feature_gates:" line: "{% raw %}kube_feature_gates: ['Initializers={{ istio_enabled|string }}', 'PersistentLocalVolumes={{ local_volumes_enabled|string }}', 'CSIPersistentVolume=True', 'MountPropagation=True']{% endraw %}" when: - stor4nfv is defined and stor4nfv == "Enable" # yamllint enable rule:line-length - name: enable CSI plugin runtime_config lineinfile: dest: /opt/kargo_k8s/roles/kubernetes/master/defaults/main.yml insertafter: '^ - admissionregistration.k8s.io/v1alpha1' line: ' - storage.k8s.io/v1alpha1' when: - stor4nfv is defined and stor4nfv == "Enable" - name: copy sriov playbook to kargo copy: src: "{{ run_dir }}/roles/sriov" dest: /opt/kargo_k8s/roles/network_plugin - name: copy sriov-apps playbook to kargo copy: src: "{{ run_dir }}/roles/sriov-apps/" dest: /opt/kargo_k8s/roles/kubernetes-apps/network_plugin/sriov - name: append sriov to network plugin blockinfile: path: /opt/kargo_k8s/roles/network_plugin/meta/main.yml block: " - role: network_plugin/sriov\n when: kube_network_plugin == 'sriov'\n \ tags: sriov\n" - name: append sriov apps to network plugin blockinfile: path: /opt/kargo_k8s/roles/kubernetes-apps/network_plugin/meta/main.yml block: " - role: kubernetes-apps/network_plugin/sriov\n \ when: kube_network_plugin == 'sriov'\n tags: sriov\n" - name: append sriov to valid kube_network_plugin list replace: path: "{{ item.path }}" regexp: "{{ item.regexp }}" replace: "{{ item.replace }}" with_items: - {path: "/opt/kargo_k8s/roles/kubernetes/master/templates/manifests/\ kube-controller-manager.manifest.j2", regexp: '"cloud", "flannel"', replace: '"cloud", "flannel", "sriov"'} - {path: '/opt/kargo_k8s/roles/kubernetes/node/templates/kubelet.kubeadm.env.j2', regexp: '"calico", "canal", "flannel", "weave"', replace: '"calico", "canal", "flannel", "weave", "sriov"'} - {path: '/opt/kargo_k8s/roles/kubernetes/node/templates/kubelet.standard.env.j2', regexp: '"calico", "canal", "flannel", "weave"', replace: '"calico", "canal", "flannel", "weave", "sriov"'} - {path: '/opt/kargo_k8s/roles/kubernetes/node/templates/kubelet.rkt.service.j2', regexp: '"calico", "weave", "canal", "flannel"', replace: '"calico", "weave", "canal", "flannel", "sriov"'} - {path: '/opt/kargo_k8s/roles/kubernetes/preinstall/tasks/main.yml', regexp: '"calico", "weave", "canal", "flannel"', replace: '"calico", "weave", "canal", "flannel", "sriov"'} - name: run kargo playbook shell: | ansible-playbook -i inventory/inventory.cfg cluster.yml \ -e "@extra-vars.yml" -b -v 2>&1 | tee kargo.log args: chdir: "/opt/kargo_k8s" tags: - ansible - name: read the ansible log file shell: "cat /opt/kargo_k8s/kargo.log | tail -n 1000" register: setup_kargo_result - fail: msg: "some task failed when setup kargo." when: setup_kargo_result.stdout.find('failed=1') != -1 - fail: msg: "some host are unreachable." when: setup_kargo_result.stdout.find('unreachable=1') != -1 run_once: true