From f7d8c959dcba759f2143bf134c753e07a05a95f6 Mon Sep 17 00:00:00 2001 From: Jeremy Phelps Date: Tue, 17 Apr 2018 09:23:15 -0500 Subject: [PATCH 1/1] Add helm and kubernetes build image Change-Id: I852052abd33bbcdfb0a3b5a95fbc6f02d86113e6 Issue-ID: CIMAN-155 Signed-off-by: Jeremy Phelps --- jjb/ci-management/ci-management-packer-jobs.yaml | 18 +++++++ packer/provision/helm.yaml | 39 +++++++++++++++ packer/templates/helm.json | 64 ++++++++++++++++++++++++ 3 files changed, 121 insertions(+) create mode 100644 packer/provision/helm.yaml create mode 100644 packer/templates/helm.json diff --git a/jjb/ci-management/ci-management-packer-jobs.yaml b/jjb/ci-management/ci-management-packer-jobs.yaml index f78186112..055ae1b67 100644 --- a/jjb/ci-management/ci-management-packer-jobs.yaml +++ b/jjb/ci-management/ci-management-packer-jobs.yaml @@ -69,3 +69,21 @@ - centos-7 - ubuntu-16.04 templates: redis + +- project: + name: packer-helm-jobs + jobs: + - gerrit-packer-merge + + project: ci-management + project-name: ci-management + branch: master + archive-artifacts: '**/*.log' + + build-node: centos7-builder-2c-1g + + platforms: + - centos-7 + - ubuntu-16.04 + templates: helm + diff --git a/packer/provision/helm.yaml b/packer/provision/helm.yaml new file mode 100644 index 000000000..68291114e --- /dev/null +++ b/packer/provision/helm.yaml @@ -0,0 +1,39 @@ +--- +- import_playbook: ../common-packer/provision/baseline.yaml + +- hosts: all + become_user: root + become_method: sudo + + vars: + kubectl_version: 1.8.6 + helm_version: 2.6.1 + + tasks: + - name: 'Install kubectl {{kubectl_version}}' + get_url: + url: https://storage.googleapis.com/kubernetes-release/release/v{{kubectl_version}}/bin/linux/amd64/kubectl + dest: /usr/local/bin/kubectl + mode: 0775 + become: yes + + - name: 'Install Helm {{helm_version}}' + block: + - name: 'Fetch tar.gz' + get_url: + url: http://storage.googleapis.com/kubernetes-helm/helm-v{{helm_version}}-linux-amd64.tar.gz + dest: /tmp/helm-v{{helm_version}}-linux-amd64.tar.gz + - name: 'Unarchive' + unarchive: + src: /tmp/helm-v{{helm_version}}-linux-amd64.tar.gz + dest: /tmp + remote_src: true + become: yes + - name: 'Move helm to /usr/local/bin and set as executable' + command: 'mv /tmp/linux-amd64/helm /usr/local/bin/helm' + become: yes + - name: 'Check helm.' + command: 'which helm' + - name: 'Check kubectl.' + command: 'which kubectl' + diff --git a/packer/templates/helm.json b/packer/templates/helm.json new file mode 100644 index 000000000..b34ce9f83 --- /dev/null +++ b/packer/templates/helm.json @@ -0,0 +1,64 @@ +{ + "variables": { + "ansible_roles_path": ".galaxy", + "base_image": null, + "distro": null, + "cloud_auth_url": null, + "cloud_user": null, + "cloud_pass": null, + "cloud_network": null, + "cloud_tenant": null, + "cloud_user_data": null, + "ssh_user": null, + "ssh_proxy_host": "" + }, + "builders": [ + { + "name": "vexxhost", + "image_name": "ZZCI - {{user `distro`}} - helm - {{isotime \"20060102-1504\"}}", + "source_image_name": "{{user `base_image`}}", + "type": "openstack", + "identity_endpoint": "{{user `cloud_auth_url`}}", + "username": "{{user `cloud_user`}}", + "password": "{{user `cloud_pass`}}", + "tenant_name": "{{user `cloud_tenant`}}", + "domain_name": "Default", + "region": "ca-ymq-1", + "availability_zone": "ca-ymq-2", + "networks": [ + "{{user `cloud_network`}}" + ], + "user_data_file": "{{user `cloud_user_data`}}", + "ssh_username": "{{user `ssh_user`}}", + "ssh_proxy_host": "{{user `ssh_proxy_host`}}", + "flavor": "v1-standard-1", + "metadata": { + "ci_managed": "yes" + } + } + ], + "provisioners": [ + { + "type": "shell", + "scripts": [ + "common-packer/provision/install-python.sh" + ], + "execute_command": "chmod +x {{ .Path }}; if [ \"$UID\" == \"0\" ]; then {{ .Vars }} '{{ .Path }}'; else {{ .Vars }} sudo -E '{{ .Path }}'; fi" + }, + { + "type": "shell-local", + "command": "./common-packer/ansible-galaxy.sh {{user `ansible_roles_path`}}" + }, + { + "type": "ansible", + "playbook_file": "provision/helm.yaml", + "ansible_env_vars": [ + "ANSIBLE_NOCOWS=1", + "ANSIBLE_PIPELINING=True", + "ANSIBLE_ROLES_PATH={{user `ansible_roles_path`}}", + "ANSIBLE_CALLBACK_WHITELIST=profile_tasks", + "ANSIBLE_STDOUT_CALLBACK=debug" + ] + } + ] +} -- 2.16.6