diff --git a/playbooks/site.yml b/playbooks/site.yml index cba10ed..ff117ff 100644 --- a/playbooks/site.yml +++ b/playbooks/site.yml @@ -34,12 +34,25 @@ tasks: - include: ../roles/developer-machine/tasks/main.yml +- name: Pre rke + hosts: masters workers + gather_facts: yes + serial: 100% + tasks: + - include: ../roles/kubernetes/tasks/pre-rke.yml + - name: Set up Kubernetes hosts: localhost - user: root tasks: - include: ../roles/kubernetes/tasks/main.yml +- name: Post rke + hosts: masters workers + gather_facts: yes + serial: 100% + tasks: + - include: ../roles/kubernetes/tasks/post-rke.yml + - name: Initialize the swarm hosts: swarm-bootstrap user: root diff --git a/roles/kubernetes/tasks/main.yml b/roles/kubernetes/tasks/main.yml index a9bc367..92587a7 100644 --- a/roles/kubernetes/tasks/main.yml +++ b/roles/kubernetes/tasks/main.yml @@ -1,9 +1,4 @@ --- -- name: Creates RKE directory on nodes - file: - path: "{{ rke_node_directory }}" - state: directory - - name: Create RKE directory file: path: "{{ rke_directory }}" @@ -11,28 +6,6 @@ delegate_to: localhost run_once: true -- name: Check if RKE cluster state file exists - stat: - path: "{{ rke_node_directory }}/{{ rke_cluster_name }}.rkestate" - register: cluster_state_result - -- name: Check if RKE kubeconfig file exists - stat: - path: "{{ rke_node_directory }}/kube_config_{{ rke_cluster_name }}.yaml" - register: kube_config_result - -- name: Copy RKE cluster state back to local if it already exists - fetch: - src: "{{ rke_node_directory }}/{{ rke_cluster_name }}.rkestate" - dest: "{{ rke_directory }}/{{ rke_cluster_name }}.rkestate" - when: cluster_state_result.stat.exists == True - -- name: Copy RKE kube config if it already exists - fetch: - src: "{{ rke_node_directory }}/kube_config_{{ rke_cluster_name }}.yaml" - dest: "{{ rke_directory }}/kube_config_{{ rke_cluster_name }}.yaml" - when: kube_config_result.stat.exists == True - - name: Create RKE Configs directory file: path: "{{ rke_directory }}/configs" @@ -57,7 +30,7 @@ - name: Put RKE cluster config in place template: src: ../templates/rke-cluster-deployment.yaml.j2 - dest: "{{ rke_directory }}/rke-cluster-deployment.yaml" + dest: "{{ rke_directory }}/{{ rke_cluster_name }}.yaml" delegate_to: localhost run_once: true @@ -66,37 +39,17 @@ src: ../templates/rke-configs/{{ item }}.j2 dest: "{{ rke_directory }}/configs/{{ item }}" with_items: - - nfs-client-deployment.yaml - - nfs-client-rbac.yaml - - nfs-client-storageclass.yaml - - alertmanager-pvc.yaml - - alertmanager-configmap.yaml - - alertmanager-deployment.yaml - - alertmanager-service.yaml - kube-state-metrics-deployment.yaml - kube-state-metrics-service.yaml - kube-state-metrics-rbac.yaml - - node-exporter.yaml - - prometheus-configmap.yaml - - prometheus-rbac.yaml - - prometheus-statefulset.yaml - - prometheus-service.yaml - - monitoring-ingress.yaml + - nfs-client-rbac.yaml + - nfs-client-deployment.yaml + - nfs-client-storageclass.yaml delegate_to: localhost run_once: true - name: Run RKE shell: > - bash -c "{{ rke_directory }}/rke up --config {{ rke_directory }}/rke-cluster-deployment.yaml" + bash -c "{{ rke_directory }}/rke up --config {{ rke_directory }}/{{ rke_cluster_name }}.yaml" delegate_to: localhost - run_once: true - -- name: Copy RKE kube config back to nodes after RKE run - copy: - src: "{{ rke_directory }}/kube_config_{{ rke_cluster_name }}.yaml" - dest: "{{ rke_node_directory }}/kube_config_{{ rke_cluster_name }}.yaml" - -- name: Copy RKE cluster state back to nodes after RKE run - copy: - src: "{{ rke_directory }}/{{ rke_cluster_name }}.rkestate" - dest: "{{ rke_node_directory }}/{{ rke_cluster_name }}.rkestate" \ No newline at end of file + run_once: true \ No newline at end of file diff --git a/roles/kubernetes/tasks/post-rke.yml b/roles/kubernetes/tasks/post-rke.yml new file mode 100644 index 0000000..b9dbe98 --- /dev/null +++ b/roles/kubernetes/tasks/post-rke.yml @@ -0,0 +1,12 @@ +--- +- name: Copy RKE kube config back to nodes after RKE run + copy: + src: "{{ rke_directory }}/kube_config_{{ rke_cluster_name }}.yaml" + dest: "{{ rke_node_directory }}/kube_config_{{ rke_cluster_name }}.yaml" + become: true + +- name: Copy RKE cluster state back to nodes after RKE run + copy: + src: "{{ rke_directory }}/{{ rke_cluster_name }}.rkestate" + dest: "{{ rke_node_directory }}/{{ rke_cluster_name }}.rkestate" + become: true \ No newline at end of file diff --git a/roles/kubernetes/tasks/pre-rke.yml b/roles/kubernetes/tasks/pre-rke.yml new file mode 100644 index 0000000..67483bd --- /dev/null +++ b/roles/kubernetes/tasks/pre-rke.yml @@ -0,0 +1,67 @@ +--- +- name: Update apt + apt: update_cache=yes + become: true + +- name: Install programs to add debian repositories + apt: name={{ item }} state=present force=yes + with_items: + - curl + - apt-transport-https + become: true + +- name: Add kubernetes key + apt_key: + url: https://packages.cloud.google.com/apt/doc/apt-key.gpg + state: present + become: true + +- name: Add kubernetes repo + apt_repository: + repo: deb https://apt.kubernetes.io/ kubernetes-xenial main + state: present + become: true + +- name: Update apt + apt: update_cache=yes + become: true + +- name: Install kubectl + apt: name={{ item }} state=present force=yes + with_items: + - kubectl + become: true + +- name: Creates RKE directory on nodes + file: + path: "{{ rke_node_directory }}" + state: directory + become: true + +- name: Check if RKE cluster state file exists + stat: + path: "{{ rke_node_directory }}/{{ rke_cluster_name }}.rkestate" + register: cluster_state_result + become: true + +- name: Check if RKE kubeconfig file exists + stat: + path: "{{ rke_node_directory }}/kube_config_{{ rke_cluster_name }}.yaml" + register: kube_config_result + become: true + +- name: Copy RKE cluster state back to local if it already exists + fetch: + src: "{{ rke_node_directory }}/{{ rke_cluster_name }}.rkestate" + dest: "{{ rke_directory }}/{{ rke_cluster_name }}.rkestate" + flat: yes + when: cluster_state_result.stat.exists == True + become: true + +- name: Copy RKE kube config if it already exists + fetch: + src: "{{ rke_node_directory }}/kube_config_{{ rke_cluster_name }}.yaml" + dest: "{{ rke_directory }}/kube_config_{{ rke_cluster_name }}.yaml" + flat: yes + when: kube_config_result.stat.exists == True + become: true \ No newline at end of file