Add helm build image 97/2097/3
authorDileep Ranganathan <dileep.ranganathan@intel.com>
Fri, 6 Dec 2019 01:20:25 +0000 (17:20 -0800)
committerDileep Ranganathan <dileep.ranganathan@intel.com>
Fri, 6 Dec 2019 21:35:35 +0000 (21:35 +0000)
Added helm build image

Signed-off-by: Dileep Ranganathan <dileep.ranganathan@intel.com>
Change-Id: I238b96c4f9af04f08efeec8717b89b3f5dd4e639

jjb/ci-management/ci-packer.yaml
packer/provision/helm.yaml [new file with mode: 0644]
packer/templates/helm.json [new file with mode: 0644]

index 2f00039..97dbbf3 100644 (file)
       - ubuntu-16.04
       - ubuntu-18.04
       - ubuntu-18.04-arm64
+
+- project:
+    name: packer-helm-jobs
+    jobs:
+      - gerrit-packer-merge
+
+    packer-version: 1.4.2
+    project: ci-management
+    project-name: ci-management
+    build-node: centos7-builder-2c-1g
+    build-timeout: 90
+
+    platforms:
+      - ubuntu-18.04
+    templates: helm
\ No newline at end of file
diff --git a/packer/provision/helm.yaml b/packer/provision/helm.yaml
new file mode 100644 (file)
index 0000000..0518fbf
--- /dev/null
@@ -0,0 +1,60 @@
+---
+- import_playbook: ../common-packer/provision/docker.yaml
+
+- hosts: all
+  become_user: root
+  become_method: sudo
+
+  vars:
+    golang_version: 1.13.5
+    helm_version: 2.16.1
+    kubectl_version: 1.16.3
+
+  tasks:
+    - name: 'Install GoLang {{golang_version}}'
+      block:
+        - name: 'Fetch golang {{golang_version}} to /tmp/go{{golang_version}}.linux-amd64.tar.gz'
+          get_url:
+            url: 'https://storage.googleapis.com/golang/go{{golang_version}}.linux-amd64.tar.gz'
+            dest: '/tmp/go{{golang_version}}.linux-amd64.tar.gz'
+            checksum: '{{golang_checksum}}'
+        - name: 'Install golang {{golang_version}} to /usr/local'
+          unarchive:
+            src: '/tmp/go{{golang_version}}.linux-amd64.tar.gz'
+            dest: /usr/local
+            remote_src: true
+          become: true
+        - name: Create symbolic link to go bin
+          file:
+            src: "/usr/local/go/bin/go"
+            dest: "/usr/bin/go"
+            state: link
+          become: true
+
+    - 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: https://get.helm.sh/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 (file)
index 0000000..020bb0a
--- /dev/null
@@ -0,0 +1,62 @@
+{
+  "variables": {
+    "ansible_roles_path": ".galaxy",
+    "arch": "x86_64",
+    "base_image": null,
+    "cloud_network": null,
+    "cloud_user_data": null,
+    "cloud_region": "ca-ymq-1",
+    "cloud_availability_zone": "ca-ymq-2",
+    "vm_use_block_storage": "true",
+    "vm_volume_size": "30",
+    "vm_image_disk_format": "",
+    "distro": null,
+    "flavor": "v1-standard-1",
+    "ssh_user": null,
+    "ssh_proxy_host": ""
+  },
+  "builders": [
+    {
+      "name": "vexxhost",
+      "image_name": "ZZCI - {{user `distro`}} - helm - {{user `arch`}} - {{isotime \"20060102-150405.000\"}}",
+      "instance_name": "{{user `distro`}}-builder-{{uuid}}",
+      "source_image_name": "{{user `base_image`}}",
+      "type": "openstack",
+      "region": "{{user `cloud_region`}}",
+      "availability_zone": "{{user `cloud_availability_zone`}}",
+      "networks": ["{{user `cloud_network`}}"],
+      "user_data_file": "{{user `cloud_user_data`}}",
+      "ssh_username": "{{user `ssh_user`}}",
+      "ssh_proxy_host": "{{user `ssh_proxy_host`}}",
+      "flavor": "{{user `flavor`}}",
+      "metadata": {
+        "ci_managed": "yes"
+      },
+      "use_blockstorage_volume": "{{user `vm_use_block_storage`}}",
+      "volume_size": "{{user `vm_volume_size`}}",
+      "image_disk_format": "{{user `vm_image_disk_format`}}"
+    }
+  ],
+  "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"
+      ]
+    }
+  ]
+}