diff options
Diffstat (limited to 'packer')
-rw-r--r-- | packer/README.markdown | 4 | ||||
m--------- | packer/common-packer | 0 | ||||
-rw-r--r-- | packer/provision/docker.sh | 119 | ||||
-rw-r--r-- | packer/provision/local-builder.yaml | 2 | ||||
-rw-r--r-- | packer/provision/local-docker.yaml | 34 | ||||
-rw-r--r-- | packer/templates/basebuild.json | 53 | ||||
l--------- | packer/templates/builder.json | 1 | ||||
l---------[-rw-r--r--] | packer/templates/docker.json | 55 | ||||
-rw-r--r-- | packer/vars/centos-7.json (renamed from packer/vars/centos.json) | 2 | ||||
-rw-r--r-- | packer/vars/cloud-env.json.example | 1 | ||||
-rw-r--r-- | packer/vars/ubuntu-14.04.json | 2 | ||||
-rw-r--r-- | packer/vars/ubuntu-16.04.json | 2 |
12 files changed, 44 insertions, 231 deletions
diff --git a/packer/README.markdown b/packer/README.markdown index 4972affae..1ef176a62 100644 --- a/packer/README.markdown +++ b/packer/README.markdown @@ -12,10 +12,10 @@ You'll need to [install Packer][2], of course. Open-O's Packer configuration is divided into build-specific variables, output-specific templates and a set of shared provisioning scripts. To do a specific build, combine the template for the desired output artifact type with -a variable file. To build a new basebuild instance the following would be done: +a variable file. To build a new builder instance the following would be done: ``` -packer build -var-file=vars/cloud-env.json -var-file=vars/centos.json templates/basebuild.json +packer build -var-file=vars/cloud-env.json -var-file=vars/centos.json templates/builder.json ``` **NOTE:** vars/cloud-env.json is a gitignored file as it contains private diff --git a/packer/common-packer b/packer/common-packer -Subproject e3344fc74b1fc3e40cf8f4f7e713047373d9b17 +Subproject 1f561541e3c6a02263924e87b1e0d0bfeac2391 diff --git a/packer/provision/docker.sh b/packer/provision/docker.sh deleted file mode 100644 index 9d34eb079..000000000 --- a/packer/provision/docker.sh +++ /dev/null @@ -1,119 +0,0 @@ -#!/bin/bash - -# vim: ts=4 sw=4 sts=4 et tw=72 : - -# force any errors to cause the script and job to end in failure -set -xeu -o pipefail - -rh_systems() { - # Assumes that python is already installed by basebuild - - # Install dependencies for robotframework and robotframework-sshlibrary - yum install -y yum-utils unzip sshuttle nc libffi-devel openssl-devel - - # Install docker - yum install -y docker supervisor bridge-utils - systemctl enable docker - - # configure docker networking so that it does not conflict with LF - # internal networks - cat <<EOL > /etc/sysconfig/docker-network -# /etc/sysconfig/docker-network -DOCKER_NETWORK_OPTIONS='--bip=10.250.0.254/24' -EOL - # configure docker daemon to listen on port 5555 enabling remote - # managment - sed -i -e "s#='--selinux-enabled'#='--selinux-enabled -H unix:///var/run/docker.sock -H tcp://0.0.0.0:5555'#g" /etc/sysconfig/docker - - # docker group doesn't get created by default for some reason - groupadd docker -} - -ubuntu_docker_mtu_fix(){ - echo "---> Fixing docker's mtu settings" - systemctl stop docker - cat <<'EOL' > /etc/systemd/system/docker.service -[Unit] -Description=Docker Application Container Engine -Documentation=https://docs.docker.com -After=network.target docker.socket -Requires=docker.socket - -[Service] -Type=notify -# the default is not to use systemd for cgroups because the delegate issues still -# exists and systemd currently does not support the cgroup feature set required -# for containers run by docker -ExecStart= -ExecStart=/usr/bin/dockerd --mtu 1454 -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock -ExecReload=/bin/kill -s HUP $MAINPID -# Having non-zero Limit*s causes performance problems due to accounting overhead -# in the kernel. We recommend using cgroups to do container-local accounting. -LimitNOFILE=infinity -LimitNPROC=infinity -LimitCORE=infinity -# Uncomment TasksMax if your systemd version supports it. -# Only systemd 226 and above support this version. -TasksMax=infinity -TimeoutStartSec=0 -# set delegate yes so that systemd does not reset the cgroups of docker containers -Delegate=yes -# kill only the docker process, not all processes in the cgroup -KillMode=process - -[Install] -WantedBy=multi-user.target -EOL - systemctl start docker - echo "---> Checking MTU" - docker network inspect bridge - echo "---> MTU set to 1454" -} - -ubuntu_systems() { - # Assumes that python is already installed by basebuild - - # Install Python3.6 - sudo add-apt-repository -y ppa:jonathonf/python-3.6 - sudo apt-get update - sudo apt-get install -y python3.6 python3.6-dev - - # Install dependencies for robotframework and robotframework-sshlibrary - apt install -y unzip sshuttle netcat libffi-dev libssl-dev - wget https://github.com/mozilla/geckodriver/releases/download/v0.18.0/geckodriver-v0.18.0-linux64.tar.gz - tar xvzf geckodriver-v0.18.0-linux64.tar.gz -C /usr/local/bin - export PATH=$PATH:/usr/local/bin - - # Install docker - apt install -y docker.io - - # Fixing Docker MTU settings - ubuntu_docker_mtu_fix -} - -all_systems() { - # Install docker-compose - curl -o /usr/local/bin/docker-compose -L "https://github.com/docker/compose/releases/download/1.15.0/docker-compose-$(uname -s)-$(uname -m)" - chmod +x /usr/local/bin/docker-compose - docker-compose -v -} - -echo "---> Detecting OS" -ORIGIN=$(facter operatingsystem | tr '[:upper:]' '[:lower:]') - -case "${ORIGIN}" in - fedora|centos|redhat) - echo "---> RH type system detected" - rh_systems - ;; - ubuntu) - echo "---> Ubuntu system detected" - ubuntu_systems - ;; - *) - echo "---> Unknown operating system" - ;; -esac - -# execute steps for all systems -all_systems diff --git a/packer/provision/local-builder.yaml b/packer/provision/local-builder.yaml new file mode 100644 index 000000000..ddfe3a998 --- /dev/null +++ b/packer/provision/local-builder.yaml @@ -0,0 +1,2 @@ +--- +- import_playbook: ../common-packer/provision/baseline.yaml diff --git a/packer/provision/local-docker.yaml b/packer/provision/local-docker.yaml new file mode 100644 index 000000000..6de720cad --- /dev/null +++ b/packer/provision/local-docker.yaml @@ -0,0 +1,34 @@ +--- +- import_playbook: ../common-packer/provision/docker.yaml + +- hosts: all + become_user: root + become_method: sudo + vars: + docker_compose_version: 1.17.1 + glide_checksum: sha256:c403933503ea40308ecfadcff581ff0dc3190c57958808bb9eed016f13f6f32c + glide_version: v0.13.1 + golang_checksum: sha256:07d81c6b6b4c2dcf1b5ef7c27aaebd3691cdb40548500941f92b221147c5d9c7 + golang_version: 1.9.1 + + tasks: + - name: 'Install Docker Compose {{docker_compose_version}}' + command: curl -o /usr/local/bin/docker-compose -L "https://github.com/docker/compose/releases/download/{{docker_compose_version}}/docker-compose-$(uname -s)-$(uname -m)" + become: true + + - 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: 'Add golang to PATH' + command: 'echo "export PATH=$PATH:/usr/local/go/bin" >> /etc/profile' + become: true diff --git a/packer/templates/basebuild.json b/packer/templates/basebuild.json deleted file mode 100644 index ff84a72d6..000000000 --- a/packer/templates/basebuild.json +++ /dev/null @@ -1,53 +0,0 @@ -{ - "variables": { - "stack_tenant": null, - "stack_user": null, - "stack_pass": null, - "stack_network": null, - "base_image": null, - "cloud_user": null, - "distro": null, - "cloud_user_data": null - }, - "builders": [ - { - "type": "openstack", - "identity_endpoint": "https://auth.vexxhost.net/v2.0/", - "tenant_name": "{{user `stack_tenant`}}", - "username": "{{user `stack_user`}}", - "password": "{{user `stack_pass`}}", - "region": "ca-ymq-1", - "ssh_username": "{{user `cloud_user`}}", - "image_name": "{{user `distro`}} - basebuild - {{isotime \"20060102-1504\"}}", - "source_image_name": "{{user `base_image`}}", - "flavor": "v1-standard-1", - "availability_zone": "ca-ymq-2", - "networks": [ - "{{user `stack_network`}}" - ], - "user_data_file": "{{user `cloud_user_data`}}" - } - ], - "provisioners": [ - { - "type": "shell", - "inline": [ - "mkdir -p /tmp/packer" - ] - }, - { - "type": "file", - "source": "provision/basebuild/", - "destination": "/tmp/packer" - }, - { - "type": "shell", - "scripts": [ - "provision/baseline.sh", - "provision/basebuild.sh", - "provision/system_reseal.sh" - ], - "execute_command": "chmod +x {{ .Path }}; if [ \"$UID\" == \"0\" ]; then {{ .Vars }} '{{ .Path }}'; else {{ .Vars }} sudo -E '{{ .Path }}'; fi" - } - ] -} diff --git a/packer/templates/builder.json b/packer/templates/builder.json new file mode 120000 index 000000000..bd227be50 --- /dev/null +++ b/packer/templates/builder.json @@ -0,0 +1 @@ +../common-packer/templates/builder.json
\ No newline at end of file diff --git a/packer/templates/docker.json b/packer/templates/docker.json index 1c8d3ec56..edea6d285 100644..120000 --- a/packer/templates/docker.json +++ b/packer/templates/docker.json @@ -1,54 +1 @@ -{ - "variables": { - "stack_tenant": null, - "stack_user": null, - "stack_pass": null, - "stack_network": null, - "base_image": null, - "cloud_user": null, - "distro": null, - "cloud_user_data": null - }, - "builders": [ - { - "type": "openstack", - "identity_endpoint": "https://auth.vexxhost.net/v2.0/", - "tenant_name": "{{user `stack_tenant`}}", - "username": "{{user `stack_user`}}", - "password": "{{user `stack_pass`}}", - "region": "ca-ymq-1", - "ssh_username": "{{user `cloud_user`}}", - "image_name": "{{user `distro`}} - docker - {{isotime \"20060102-1504\"}}", - "source_image_name": "{{user `base_image`}}", - "flavor": "v1-standard-1", - "availability_zone": "ca-ymq-2", - "networks": [ - "{{user `stack_network`}}" - ], - "user_data_file": "{{user `cloud_user_data`}}" - } - ], - "provisioners": [ - { - "type": "shell", - "inline": [ - "mkdir -p /tmp/packer" - ] - }, - { - "type": "file", - "source": "provision/basebuild/", - "destination": "/tmp/packer" - }, - { - "type": "shell", - "scripts": [ - "provision/baseline.sh", - "provision/basebuild.sh", - "provision/docker.sh", - "provision/system_reseal.sh" - ], - "execute_command": "chmod +x {{ .Path }}; if [ \"$UID\" == \"0\" ]; then {{ .Vars }} '{{ .Path }}'; else {{ .Vars }} sudo -E '{{ .Path }}'; fi" - } - ] -} +../common-packer/templates/docker.json
\ No newline at end of file diff --git a/packer/vars/centos.json b/packer/vars/centos-7.json index c5b8c79f2..366202c7a 100644 --- a/packer/vars/centos.json +++ b/packer/vars/centos-7.json @@ -1,6 +1,6 @@ { "base_image": "CentOS 7.1611 (2017-01-30) - LF upload", - "cloud_user": "centos", + "ssh_user": "centos", "distro": "CentOS 7", "cloud_user_data": "provision/rh-user_data.sh" } diff --git a/packer/vars/cloud-env.json.example b/packer/vars/cloud-env.json.example index 3a2ea9d2b..451c5dab9 100644 --- a/packer/vars/cloud-env.json.example +++ b/packer/vars/cloud-env.json.example @@ -3,4 +3,5 @@ "stack_user": "USERID", "stack_pass": "PASSWD", "stack_network": "NETID", + "ssh_proxy_host": "" } diff --git a/packer/vars/ubuntu-14.04.json b/packer/vars/ubuntu-14.04.json index dd81e2594..337ee1f1c 100644 --- a/packer/vars/ubuntu-14.04.json +++ b/packer/vars/ubuntu-14.04.json @@ -1,6 +1,6 @@ { "base_image": "Ubuntu 14.04 (2017-02-01) - LF upload", - "cloud_user": "ubuntu", "distro": "Ubuntu 14.04", + "ssh_user": "ubuntu", "cloud_user_data": "provision/null_data.sh" } diff --git a/packer/vars/ubuntu-16.04.json b/packer/vars/ubuntu-16.04.json index 12f9430ed..eadf41863 100644 --- a/packer/vars/ubuntu-16.04.json +++ b/packer/vars/ubuntu-16.04.json @@ -1,6 +1,6 @@ { "base_image": "Ubuntu 16.04 (2017-02-01) - LF upload", - "cloud_user": "ubuntu", "distro": "Ubuntu 16.04", + "ssh_user": "ubuntu", "cloud_user_data": "provision/null_data.sh" } |