From 89a8adf6da26ae25f3bc2cdf7a1dec2c203846b5 Mon Sep 17 00:00:00 2001 From: Flavio Percoco Date: Fri, 27 Oct 2017 13:50:41 +0200 Subject: [PATCH] Add CI for OpenShift Change-Id: I4cd03c50203ed76f242412cb8fc806ed1aa5e117 --- .zuul.yaml | 9 +++ tests/roles/kubernetes/tasks/run.yml | 1 + tests/roles/openshift/tasks/pre.yml | 6 ++ tests/roles/openshift/tasks/pre_debian.yml | 1 + tests/roles/openshift/tasks/pre_rhel.yml | 72 +++++++++++++++++++ tests/roles/openshift/tasks/run.yml | 24 +++++++ .../openshift/templates/docker-options.j2 | 2 + tests/roles/openshift/templates/inventory.j2 | 12 ++++ tests/templates/playbook.j2 | 4 +- 9 files changed, 130 insertions(+), 1 deletion(-) create mode 100644 tests/roles/openshift/tasks/pre.yml create mode 100644 tests/roles/openshift/tasks/pre_debian.yml create mode 100644 tests/roles/openshift/tasks/pre_rhel.yml create mode 100644 tests/roles/openshift/tasks/run.yml create mode 100644 tests/roles/openshift/templates/docker-options.j2 create mode 100644 tests/roles/openshift/templates/inventory.j2 diff --git a/.zuul.yaml b/.zuul.yaml index d62d23f..04a0084 100644 --- a/.zuul.yaml +++ b/.zuul.yaml @@ -3,6 +3,7 @@ check: jobs: - ansible-role-k8s-mariadb-kubernetes-centos + - ansible-role-k8s-mariadb-openshift-centos - nodeset: name: ansible-role-k8s-centos @@ -25,3 +26,11 @@ vars: coe: kubernetes project_name: ansible-role-k8s-mariadb + +- job: + name: ansible-role-k8s-mariadb-openshift-centos + parent: ansible-role-k8s-base + nodeset: ansible-role-k8s-centos + vars: + coe: openshift + project_name: ansible-role-k8s-mariadb diff --git a/tests/roles/kubernetes/tasks/run.yml b/tests/roles/kubernetes/tasks/run.yml index 7fbe2e0..de930d3 100644 --- a/tests/roles/kubernetes/tasks/run.yml +++ b/tests/roles/kubernetes/tasks/run.yml @@ -11,6 +11,7 @@ set -x ansible-playbook -i ci_inventory --skip-tags bastion-ssh-config -e skip_downloads=true cluster.yml + kubectl create namespace openstack executable: /bin/bash chdir: "/tmp/kubespray" delegate_to: "primary" diff --git a/tests/roles/openshift/tasks/pre.yml b/tests/roles/openshift/tasks/pre.yml new file mode 100644 index 0000000..c4feb14 --- /dev/null +++ b/tests/roles/openshift/tasks/pre.yml @@ -0,0 +1,6 @@ +--- +- include: pre_rhel.yml + when: ansible_os_family == 'RedHat' + +- include: pre_debian.yml + when: ansible_os_family == 'Debian' diff --git a/tests/roles/openshift/tasks/pre_debian.yml b/tests/roles/openshift/tasks/pre_debian.yml new file mode 100644 index 0000000..ed97d53 --- /dev/null +++ b/tests/roles/openshift/tasks/pre_debian.yml @@ -0,0 +1 @@ +--- diff --git a/tests/roles/openshift/tasks/pre_rhel.yml b/tests/roles/openshift/tasks/pre_rhel.yml new file mode 100644 index 0000000..ad09074 --- /dev/null +++ b/tests/roles/openshift/tasks/pre_rhel.yml @@ -0,0 +1,72 @@ +--- +- name: Add ASB repo for ansible-kubernetes-modules + become: true + yum_repository: + name: asb + description: Copr repo for ansible-service-broker-latest owned by @ansible-service-broker + file: asb + baseurl: https://copr-be.cloud.fedoraproject.org/results/@ansible-service-broker/ansible-service-broker-latest/epel-7-$basearch/ + gpgkey: https://copr-be.cloud.fedoraproject.org/results/@ansible-service-broker/ansible-service-broker-latest/pubkey.gpg + gpgcheck: true + enabled: true + skip_if_unavailable: true + repo_gpgcheck: false + +- name: Enable/Install epel-release/centos-release-openshift-origin + become: true + yum: + name: "{{item}}" + state: present + with_items: + - epel-release + - centos-release-openshift-origin + +# NOTE(flaper87): python-openshift requires a specific version of +# python-requests. We need to update it to the version in the asb repo, hence +# this step. We have to enable epel so we can meet the python2-pysocks +# dependency, which is a python-requests requirement. +- name: Force update for requests/urllib3 + become: true + yum: + name: "{{item}}" + state: latest + update_cache: true + enablerepo: asb,epel + disablerepo: centos-openstack-ocata + with_items: + - python-requests + +- name: Install required packages + become: true + yum: + name: "{{item}}" + state: latest + with_items: + - ansible + - python-netaddr + - origin-clients + - docker + - docker-distribution + +- name: Install required packages from asb + become: true + yum: + name: "{{item}}" + state: latest + with_items: + - ansible-kubernetes-modules + +- name: Set docker registry options for OpenShift + become: true + lineinfile: + path: /etc/sysconfig/docker + state: present + regexp: "^OPTIONS='(.*)'" + line: "OPTIONS='\\1 --insecure-registry 172.30.0.0/16'" + backrefs: yes + +- name: Start docker + become: true + service: + name: docker + state: restarted diff --git a/tests/roles/openshift/tasks/run.yml b/tests/roles/openshift/tasks/run.yml new file mode 100644 index 0000000..e554768 --- /dev/null +++ b/tests/roles/openshift/tasks/run.yml @@ -0,0 +1,24 @@ +--- +- shell: + cmd: | + set -e + set -x + + oc cluster up + executable: /bin/bash + become: true + delegate_to: "primary" + environment: '{{ zuul | zuul_legacy_vars }}' + register: oc_output + +- name: Login to OpenShift + shell: + cmd: | + set -e + set -x + + oc login https://127.0.0.1:8443 --insecure-skip-tls-verify=true -u developer -p developer + oc new-project openstack + executable: /bin/bash + delegate_to: "primary" + environment: '{{ zuul | zuul_legacy_vars }}' diff --git a/tests/roles/openshift/templates/docker-options.j2 b/tests/roles/openshift/templates/docker-options.j2 new file mode 100644 index 0000000..d13542f --- /dev/null +++ b/tests/roles/openshift/templates/docker-options.j2 @@ -0,0 +1,2 @@ +[Service] +Environment="DOCKER_OPTS=--insecure-registry 172.30.0.0/16" \ No newline at end of file diff --git a/tests/roles/openshift/templates/inventory.j2 b/tests/roles/openshift/templates/inventory.j2 new file mode 100644 index 0000000..734b207 --- /dev/null +++ b/tests/roles/openshift/templates/inventory.j2 @@ -0,0 +1,12 @@ +[kube-master] +{{nodes}} + +[kube-node] +{{nodes}} + +[etcd:children] +kube-master + +[k8s-cluster:children] +kube-master +kube-node \ No newline at end of file diff --git a/tests/templates/playbook.j2 b/tests/templates/playbook.j2 index 135e4c4..2027b53 100644 --- a/tests/templates/playbook.j2 +++ b/tests/templates/playbook.j2 @@ -4,8 +4,10 @@ connection: local vars: - namespace: default + namespace: openstack +{% if coe == 'kubernetes' %} coe_host: "http://localhost:8080" +{% endif %} roles: - role: {{project_name}}