From b37e69c7bcb2e64159ef26462627c3ae877008c5 Mon Sep 17 00:00:00 2001 From: Adrien Date: Mon, 15 Jul 2019 19:32:53 +0200 Subject: [PATCH] Make some work --- defaults/main.yml | 3 +- tasks/RedHat.yml | 7 ++++ tasks/install_server.yml | 81 ++++++++++++++++++++++++---------------- tasks/main.yml | 52 ++++++++++++++++---------- 4 files changed, 89 insertions(+), 54 deletions(-) diff --git a/defaults/main.yml b/defaults/main.yml index d71259f..e1c3993 100644 --- a/defaults/main.yml +++ b/defaults/main.yml @@ -1,3 +1,4 @@ --- kubernetes_cri: "containerd" -kubernetes_server: false \ No newline at end of file +kubernetes_server: false +kubernetes_version: 1.15.0 \ No newline at end of file diff --git a/tasks/RedHat.yml b/tasks/RedHat.yml index cc4f5a7..143f3d5 100644 --- a/tasks/RedHat.yml +++ b/tasks/RedHat.yml @@ -28,16 +28,22 @@ owner: root mode: 0644 register: need_firewalld_reload + when: + - kubernetes_server == true #- name: Reload firewalld configuration # service: # name: firewalld # state: reloaded # enabled: yes +# when: +# - kubernetes_server == true + - name: reload firewalld to refresh service list command: firewall-cmd --reload when: - need_firewalld_reload is changed + - kubernetes_server == true # Définir interface #- name: Open Firewalld @@ -49,3 +55,4 @@ # when: # - need_firewall == true # - firewall_name == "firewalld" +# - kubernetes_server == true diff --git a/tasks/install_server.yml b/tasks/install_server.yml index e8b21ad..2fc8d8a 100644 --- a/tasks/install_server.yml +++ b/tasks/install_server.yml @@ -39,33 +39,15 @@ - "sysconfig/kubelet" - name: Enable kubelet on boot - service: name=kubelet state=started enabled=yes - -- stat: path=/etc/kubernetes/admin.conf - register: st - changed_when: False - -- name: Create KubernetesMasterConfigured group - group_by: key=KubernetesMasterConfigured - when: - - st.stat.exists - -- include_tasks: "init_cluster.yml" - when: - - groups['KubernetesMasterConfigured'] is not defined - - groups['KubernetesMasters'][0] == ansible_hostname + service: + name: kubelet + state: started + enabled: yes # Install API loadbalancer - include_tasks: "load_balancer.yml" when: - - kubernetes_master is true - - groups['KubernetesMaster'] | length > 1 - -# Prepare first master for extend procedure -- include_tasks: "prepare_first_master.yml" - when: - - groups['KubernetesMasterConfigured'][0] == ansible_hostname - - groups['KubernetesMasterConfigured'] | length == 1 # to be tested (potential syntax error) + - kubernetes_master == true - groups['KubernetesMaster'] | length > 1 - stat: path=/etc/kubernetes/admin.conf @@ -77,21 +59,54 @@ when: - st.stat.exists +- name: Retreive kubeadm Major version + shell: kubeadm version | sed 's/.*{Major:"\([0-9]\)".*/\1/' + register: kubeadm_version_major + +- name: Retreive kubeadm Minor version + shell: kubeadm version | sed -e 's/.* Minor:"\([0-9]*\)".*/\1/' + register: kubeadm_version_minor + +- name: Deploy kubeadm config + template: + src: kubeadmin-config.yaml.j2 + dest: /root/kubeadmin-config.yaml + owner: root + group: root + mode: 600 + when: + - groups['KubernetesMasterConfigured'] is not defined + - groups['KubernetesMasters'][0] == ansible_hostname + - kubeadm_version_major.rc == 1 + - kubeadm_version_minor.rc > 15 + +- name: Init Kubernetes on {{ groups['KubernetesMasters'][0] }} + command: kubeadm init --config=kubeadm-config.yaml --upload-certs --apiserver-advertise-address={{ ansible_host }} --ignore-preflight-errors=SystemVerification + when: + - groups['KubernetesMasterConfigured'] is not defined + - groups['KubernetesMasters'][0] == ansible_hostname + - kubeadm_version_major.rc == 1 + - kubeadm_version_minor.rc > 15 + +- name: Create KubernetesMasterConfigured group + group_by: key=KubernetesMasterConfigured + when: + - groups['KubernetesMasterConfigured'] is not defined + - groups['KubernetesMasters'][0] == ansible_hostname + - name: Extend Master services on unconfigured hosts include_tasks: "add_master.yml" when: - groups['KubernetesMaster'] | length > 1 -#- name: Check if a node is still tainted -# command: kubectl get nodes '{{ ansible_host }}' -o jsonpath='{.spec.taints}' -# when: taint_master -# register: current_taint -# tags: taint -# -#- name: taint the machine if needed -# command: kubectl taint nodes --all node-role.kubernetes.io/master- -# when: taint_master == true and current_taint.stdout -# tags: taint +- name: Check if a node is still tainted + command: kubectl get nodes '{{ ansible_host }}' -o jsonpath='{.spec.taints}' + when: kubernetes_master_taint + register: current_taint + +- name: taint the machine if needed + command: kubectl taint nodes --all node-role.kubernetes.io/master- + when: kubernetes_master_taint == true and current_taint.stdout # # At this point, we have a kubernetes up and running, but ready for it diff --git a/tasks/main.yml b/tasks/main.yml index 5b06fc8..4060079 100644 --- a/tasks/main.yml +++ b/tasks/main.yml @@ -2,35 +2,47 @@ - name: Include vars for {{ ansible_os_family }} include_vars: "{{ ansible_os_family }}.yml" +- set_fact: + kubernetes_server: true + kubernetes_master: true + kubernetes_master_taint: false + when: + - "'KubernetesMasters' in group_names" + - "'KubernetesNodes' not in group_names" + +- set_fact: + kubernetes_server: true + kubernetes_master: false + kubernetes_master_taint: false + when: + - "'KubernetesNodes' in group_names" + - "'KubernetesMasters' not in group_names" + +- set_fact: + kubernetes_server: true + kubernetes_master: true + kubernetes_master_taint: true + when: + - "'KubernetesNodes' in group_names" + - "'KubernetesMasters' in group_names" + +- set_fact: + krubernetes_sever: false + when: + - "'KubernetesMasters' not in group_names" + - "'KubernetesNodes' not in group_names" + - name: Install kubernetes rules for {{ ansible_os_family }} OS family include_tasks: "{{ ansible_os_family }}.yml" - name: Install kubernetes tools package: name="{{ kubernetes_package_name }}" state=latest update_cache=yes - notify: Restart kubelet - -- set_fact: - kubernetes_server: true - kubernetes_master: true - when: - - "'KubernetesMasters' in group_names" - -- set_fact: - kubernetes_server: true - kubernetes_master: false - when: - - "'KubernetesMasters' in group_names" - -- set_fact: - kubernetes_server: false - when: - - "'KubernetesMasters' not in group_names" - - "'KubernetesNodes' not in group_names" +# notify: Restart kubelet - name: Include kubernetes server rules include_tasks: "install_server.yml" when: - - kubernetes_server is true + - kubernetes_server == true #- name: Install python library for docker # package: name="{{ python_openshift_lib }}" state=latest update_cache=yes