Improve rancher role testability 37/82537/5
authorSamuli Silvius <s.silvius@partner.samsung.com>
Sun, 17 Mar 2019 16:06:33 +0000 (18:06 +0200)
committerSamuli Silvius <s.silvius@partner.samsung.com>
Wed, 20 Mar 2019 16:51:16 +0000 (18:51 +0200)
Move functionality from playbook to rancher role.
Introduce defaults for holding default values in rancher role.
Other small changes noticed while testing rancher role with molecule.

Issue-ID: OOM-1729

Change-Id: I83befa9f0964c67e209d3def76bafd2a61c1ef33
Signed-off-by: Samuli Silvius <s.silvius@partner.samsung.com>
ansible/group_vars/infrastructure.yml
ansible/rancher_kubernetes.yml
ansible/roles/kubectl/defaults/main.yml [new file with mode: 0644]
ansible/roles/kubectl/tasks/main.yml
ansible/roles/kubectl/templates/kube_config.j2 [moved from ansible/roles/rancher/templates/kube_config.j2 with 82% similarity]
ansible/roles/rancher/defaults/main.yml [new file with mode: 0644]
ansible/roles/rancher/tasks/main.yml
ansible/roles/rancher/tasks/rancher_agent.yml
ansible/roles/rancher/tasks/rancher_health.yml [new file with mode: 0644]
ansible/roles/rancher/tasks/rancher_server.yml

index 9fd88f2..f0c4113 100755 (executable)
@@ -24,13 +24,8 @@ simulated_hosts:
     - registry.npmjs.org
 all_simulated_hosts:
     "{{ simulated_hosts.git + simulated_hosts.http + simulated_hosts.nexus }}"
-rancher_server_url: "http://{{ hostvars[groups.infrastructure.0].ansible_host }}:8080"
 rancher_server_version: v1.6.22
-rancher_remove_other_env: yes
-rancher_redeploy_k8s_env: yes
-populate_nexus: no
-kube_directory: /root/.kube
-kubectl_bin_dir: /usr/local/bin
+populate_nexus: false
 helm_bin_dir: /usr/local/bin
 helm_repository_name: local
 helm_repository_url: http://127.0.0.1:8879
index 196f1fc..e44f18d 100644 (file)
@@ -1,31 +1,23 @@
 ---
-- name: Install binaries for controlling deployment
+- name: Deploy rancher server and create k8s env
   hosts: infrastructure
   roles:
+    - role: rancher
+      vars:
+        mode: server
     - kubectl
     - helm
 
-- name: Deploy rancher server and create k8s env
-  hosts: infrastructure
-  roles:
-    - rancher
-  vars:
-     rancher_role: server
-
-- name: Deploy rancher agents
+- name: Deploy rancher agents for kube nodes
   hosts: kubernetes
   roles:
-    - rancher
-  vars:
-     rancher_role: agent
+    - role: rancher
+      vars:
+        mode: agent
 
 - name: Wait for Kubernetes environment to be healthy
   hosts: infrastructure
-  tasks:
-  - name: Check cluster health
-    uri:
-      url: "{{ rancher_server_url }}/v2-beta/projects/{{ k8s_env_id }}"
-    register: env_info
-    retries: 30
-    delay: 15
-    until: "env_info.json.healthState == 'healthy'"
+  roles:
+    - role: rancher
+      vars:
+        mode: health
\ No newline at end of file
diff --git a/ansible/roles/kubectl/defaults/main.yml b/ansible/roles/kubectl/defaults/main.yml
new file mode 100644 (file)
index 0000000..78c15c7
--- /dev/null
@@ -0,0 +1,5 @@
+---
+kubectl_bin_dir: /usr/local/bin
+kube_directory: ~/.kube
+# Defaulting to rancher setup
+kube_server: "https://{{ ansible_host }}:8080/r/projects/{{ k8s_env_id | mandatory }}/kubernetes:6443"
\ No newline at end of file
index 7c77c3c..9ecb5c4 100644 (file)
@@ -5,3 +5,13 @@
     dest: "{{ kubectl_bin_dir }}/kubectl"
     remote_src: true
     mode: 0755
+
+- name: Ensure .kube directory exists
+  file:
+    path: "{{ kube_directory }}"
+    state: directory
+
+- name: Create kube config
+  template:
+    src: kube_config.j2
+    dest: "{{ kube_directory }}/config"
@@ -4,7 +4,7 @@ clusters:
 - cluster:
     api-version: v1
     insecure-skip-tls-verify: true
-    server: "https://{{ ansible_host }}:8080/r/projects/{{ k8s_env_id }}/kubernetes:6443"
+    server: "{{ kube_server }}"
   name: "{{ app_name }}"
 contexts:
 - context:
diff --git a/ansible/roles/rancher/defaults/main.yml b/ansible/roles/rancher/defaults/main.yml
new file mode 100644 (file)
index 0000000..8edc518
--- /dev/null
@@ -0,0 +1,4 @@
+---
+rancher_server_url: "http://{{ hostvars[groups.infrastructure.0].ansible_host }}:8080"
+rancher_remove_other_env: true
+rancher_redeploy_k8s_env: true
index 1370a39..045363d 100644 (file)
@@ -1,2 +1,2 @@
 ---
-- include_tasks: "rancher_{{ rancher_role }}.yml"
+- include_tasks: "rancher_{{ mode }}.yml"
index 4c9cb8d..091503c 100644 (file)
@@ -7,7 +7,7 @@
     volumes:
       - "/var/run/docker.sock:/var/run/docker.sock"
       - "/var/lib/rancher:/var/lib/rancher"
-    auto_remove: yes
-    privileged: yes
+    auto_remove: true
+    privileged: true
   vars:
     server_hostvars: "{{ hostvars[groups.infrastructure.0] }}"
diff --git a/ansible/roles/rancher/tasks/rancher_health.yml b/ansible/roles/rancher/tasks/rancher_health.yml
new file mode 100644 (file)
index 0000000..b032373
--- /dev/null
@@ -0,0 +1,8 @@
+---
+- name: Check cluster health
+  uri:
+    url: "{{ rancher_server_url }}/v2-beta/projects/{{ k8s_env_id }}"
+  register: env_info
+  retries: 30
+  delay: 15
+  until: "env_info.json.healthState == 'healthy'"
index 64b35e4..d30be72 100644 (file)
@@ -2,7 +2,7 @@
 # DO NOT ADD SPACE AROUND ';'
 - name: Start rancher/server:{{ rancher_server_version }}
   docker_container:
-    name: rancher_server
+    name: rancher-server
     image: rancher/server:{{ rancher_server_version }}
     command: ["sh", "-c", "/usr/sbin/update-ca-certificates;/usr/bin/entry /usr/bin/s6-svscan /service"]
     ports: 8080:8080
     key_private: "{{ env.data.apikey.private }}"
     rancher_agent_image: "{{ env.data.registration_tokens.image }}"
     rancher_agent_reg_url: "{{ env.data.registration_tokens.reg_url }}"
-
-- name: Ensure .kube directory exists
-  file:
-    path: "{{ kube_directory }}"
-    state: directory
-
-- name: Create kube config
-  template:
-    src: kube_config.j2
-    dest: "{{ kube_directory }}/config"