Adapt OSH to new scenario logic, ansible and k8s versions 27/68427/3
authorFatih Degirmenci <fdegir@gmail.com>
Sun, 1 Sep 2019 09:03:25 +0000 (11:03 +0200)
committerFatih Degirmenci <fdegir@gmail.com>
Sun, 1 Sep 2019 10:19:56 +0000 (12:19 +0200)
installer-type:osh
deploy-scenario:k8-calico-nofeature

JIRA: XCI-5
JIRA: XCI-6
JIRA: XCI-20

Signed-off-by: Fatih Degirmenci <fdegir@gmail.com>
Change-Id: I0f2b577f7535050e6c65ca0e0bc209b7403c67ba
Signed-off-by: Fatih Degirmenci <fdegir@gmail.com>
xci/installer/osh/deploy.sh
xci/installer/osh/playbooks/configure-installer.yml [new file with mode: 0644]
xci/installer/osh/playbooks/configure-opnfvhost.yml
xci/installer/osh/playbooks/roles/prepare-osh/tasks/main.yml

index 73e7130..e56845b 100755 (executable)
@@ -32,6 +32,20 @@ ansible-playbook ${XCI_ANSIBLE_PARAMS} -e XCI_PATH="${XCI_PATH}" \
 echo "-----------------------------------------------------------------------"
 echo "Info: Configured localhost for kubespray"
 
+#-------------------------------------------------------------------------------
+# Configure installer
+#-------------------------------------------------------------------------------
+# TODO: summarize what this playbook does
+#-------------------------------------------------------------------------------
+
+echo "Info: Configuring kubespray installer"
+echo "-----------------------------------------------------------------------"
+cd $OSH_XCI_PLAYBOOKS
+ansible-playbook ${XCI_ANSIBLE_PARAMS} \
+        -i ${XCI_PLAYBOOKS}/dynamic_inventory.py configure-installer.yml
+echo "-----------------------------------------------------------------------"
+echo "Info: Configured kubespray installer"
+
 #-------------------------------------------------------------------------------
 # Configure deployment host, opnfv
 #-------------------------------------------------------------------------------
@@ -75,7 +89,7 @@ echo "-----------------------------------------------------------------------"
 ssh root@$OPNFV_HOST_IP "set -o pipefail; export XCI_FLAVOR=$XCI_FLAVOR; export INSTALLER_TYPE=$INSTALLER_TYPE; \
         export IDF=/root/releng-xci/xci/var/idf.yml; export PDF=/root/releng-xci/xci/var/pdf.yml; \
         cd releng-xci/.cache/repos/kubespray/; ansible-playbook \
-        -i opnfv_inventory/dynamic_inventory.py cluster.yml -b | tee setup-kubernetes.log"
+        -i inventory/opnfv/dynamic_inventory.py cluster.yml -b | tee setup-kubernetes.log"
 scp root@$OPNFV_HOST_IP:~/releng-xci/.cache/repos/kubespray/setup-kubernetes.log \
         $LOG_PATH/setup-kubernetes.log
 
@@ -88,19 +102,16 @@ echo "-----------------------------------------------------------------------"
 echo "Info: Kubernetes installation is successfully completed!"
 echo "-----------------------------------------------------------------------"
 
-# Configure the kubernetes authentication in opnfv host. In future releases
-# kubectl is no longer an artifact so we should not fail if it's not available.
-# This needs to be removed in the future
-ssh root@$OPNFV_HOST_IP "mkdir -p ~/.kube/;\
-         cp -f ~/admin.conf ~/.kube/config; \
-         cp -f ~/kubectl /usr/local/bin || true"
-
 #-------------------------------------------------------------------------------
 # Execute post-installation tasks
 #-------------------------------------------------------------------------------
 # Playbook post.yml is used in order to execute any post-deployment tasks that
 # are required for the scenario under test.
 #-------------------------------------------------------------------------------
+# copy admin.conf
+ssh root@$OPNFV_HOST_IP "mkdir -p ~/.kube/;\
+         cp -f ~/admin.conf ~/.kube/config;"
+
 echo "-----------------------------------------------------------------------"
 echo "Info: Running post-deployment scenario role"
 echo "-----------------------------------------------------------------------"
diff --git a/xci/installer/osh/playbooks/configure-installer.yml b/xci/installer/osh/playbooks/configure-installer.yml
new file mode 100644 (file)
index 0000000..905777d
--- /dev/null
@@ -0,0 +1,47 @@
+---
+# SPDX-license-identifier: Apache-2.0
+##############################################################################
+# Copyright (c) 2019 Ericsson Software Technology 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
+##############################################################################
+- hosts: localhost
+  connection: local
+  vars_files:
+    - "{{ xci_path }}/xci/var/opnfv.yml"
+
+  tasks:
+    - name: delete existing kubespray/inventory/opnfv directory
+      file:
+        path: "{{ xci_path }}/.cache/repos/kubespray/inventory/opnfv"
+        state: absent
+
+    - name: copy kubespray/inventory/sample as kubespray/inventory/opnfv
+      copy:
+        src: "{{ xci_path }}/.cache/repos/kubespray/inventory/sample/"
+        dest: "{{ xci_path }}/.cache/repos/kubespray/inventory/opnfv"
+
+    - name: update kubespray k8s-cluster.yml for xci
+      lineinfile:
+        path: "{{ xci_path }}/.cache/repos/kubespray/inventory/opnfv/group_vars/k8s-cluster/k8s-cluster.yml"
+        regexp: "{{ item.regexp }}"
+        line: "{{ item.line }}"
+      with_items:
+        - { regexp: "kube_version:.*", line: "kube_version: {{ kubernetes_version }}" }
+        - { regexp: "kubeconfig_localhost:.*", line: "kubeconfig_localhost: true" }
+        - { regexp: "kube_basic_auth:.*", line: "kube_basic_auth: true" }
+        - { regexp: "dashboard_enabled:.*", line: "dashboard_enabled: true" }
+
+    - name: update kubespray artifacts_dir
+      lineinfile:
+        path: "{{ xci_path }}/.cache/repos/kubespray/inventory/opnfv/group_vars/k8s-cluster/k8s-cluster.yml"
+        regexp: "artifacts_dir:.*"
+        line: "artifacts_dir: '{{ '{{' }} ansible_env.HOME {{ '}}' }}'"
+
+    - name: change dashboard server type to NodePort
+      lineinfile:
+        path: "{{ xci_path }}/.cache/repos/kubespray/roles/kubernetes-apps/ansible/templates/dashboard.yml.j2"
+        insertafter: 'targetPort'
+        line: "  type: NodePort"
index 54e3214..52e42b0 100644 (file)
           - "--recursive"
           - "--files-from={{ xci_cache }}/releng-xci.files"
 
-    - name: delete the opnfv_inventory directory
-      file:
-        path: "{{ remote_xci_path }}/.cache/repos/kubespray/opnfv_inventory"
-        state: absent
-
-    - name: make sure kubespray/opnfv_inventory/group_vars/ exist
-      file:
-        path: "{{ remote_xci_path }}/.cache/repos/kubespray/opnfv_inventory/group_vars"
-        state: directory
-
-    - name: copy kubespray inventory directory
+    - name: link xci dynamic inventory to kubespray/inventory/opnfv directory
       file:
         src: "{{ remote_xci_playbooks }}/dynamic_inventory.py"
-        path: "{{ remote_xci_path }}/.cache/repos/kubespray/opnfv_inventory/dynamic_inventory.py"
+        path: "{{ remote_xci_path }}/.cache/repos/kubespray/inventory/opnfv/dynamic_inventory.py"
         state: link
 
+    - name: Download kubectl and place it to /usr/local/bin
+      get_url:
+        url: "https://storage.googleapis.com/kubernetes-release/release/{{ kubernetes_version }}/bin/linux/amd64/kubectl"
+        dest: /usr/local/bin/kubectl
+        owner: root
+        group: root
+        mode: 0755
+
     - name: Reload XCI deployment host facts
       setup:
         filter: ansible_local
         update_cache: "{{ (ansible_pkg_mgr in ['apt', 'zypper']) | ternary('yes', omit) }}"
       when: xci_flavor == 'aio'
 
-    - name: change dashboard server type to NodePort
-      lineinfile:
-        path: "{{ remote_xci_path }}/.cache/repos/kubespray/roles/kubernetes-apps/ansible/templates/dashboard.yml.j2"
-        insertafter: 'targetPort'
-        line: "  type: NodePort"
-
     - name: pip install required packages
       pip:
         name: "{{ item.name }}"
index aeaca6b..453a815 100644 (file)
@@ -14,7 +14,7 @@
 
 #TODO Fetch the value from a file generated by k8s deployer
 - name: Get kube service addresses
-  shell: "grep -r 'kube_service_addresses:' /root/releng-xci/.cache/repos/kubespray/opnfv_inventory/group_vars/k8s-cluster.yml | awk '{print $2}'"
+  shell: "grep -r 'kube_service_addresses:' /root/releng-xci/.cache/repos/kubespray/inventory/opnfv/group_vars/k8s-cluster/k8s-cluster.yml | awk '{print $2}'"
   changed_when: false
   args:
     executable: /bin/bash