From b716982baf2b0ca5dc0d3d6545a03bc6576744e2 Mon Sep 17 00:00:00 2001 From: Mason Packard Date: Tue, 6 Sep 2016 12:02:17 -0400 Subject: [PATCH] Initial setup for grouper appliance build. --- Jenkinsfile | 61 +++++++++++++++++++++++++++++++ grouper-appliance.json | 82 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 143 insertions(+) create mode 100644 grouper-appliance.json diff --git a/Jenkinsfile b/Jenkinsfile index 664acbd..9cd8786 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -119,6 +119,67 @@ if (BRANCH_TEST=="shibboleth-production"){ } + catch (err) { + currentBuild.result = "FAILURE" + + slackSend color: 'danger', message: "BUILD ERROR: There was a problem with Comanage Appliance. ${env.JOB_NAME} ${env.BUILD_NUMBER} (<${env.BUILD_URL} |Open>) \n\n ${err}" + + throw err + } + } +} else if (BRANCH_TEST=="grouper-production") { + node('packer') { + currentBuild.result = "SUCCESS" + + try { + stage 'Cleanup & Setup ' + sh 'rm -rf output-grouper-*' + sh 'rm -rf "/Users/levvel/VirtualBox VMs/grouper-appliance-*"' + sh 'rm -rf builds' + sh 'mkdir -p builds' + + withCredentials([[$class: 'FileBinding', credentialsId: 'our-aws-config', variable: 'FILE']]) { + ws { + sh 'mkdir -p ~/.aws' + sh 'cp $FILE ~/.aws/config' + } + } + + withCredentials([[$class: 'FileBinding', credentialsId: 'our-aws-credentials', variable: 'FILE']]) { + ws { + sh 'mkdir -p ~/.aws' + sh 'cp $FILE ~/.aws/credentials' + } + } + + stage 'Checkout' + + checkout scm + + stage 'Acquire ansible-playbooks' + + sh 'mkdir -p ansible-playbooks' + dir('ansible-playbooks'){ + git([ url: "https://github.internet2.edu/docker/ansible-playbooks.git", + branch: "grouper-production", credentialsId: "jenkins-github-access-token" ]) + } + + stage 'Validate' + + sh '/usr/local/bin/packer validate grouper-appliance.json' + + stage 'Build Appliance - Grouper' + + sh '/usr/local/bin/packer build grouper-appliance.json' + + stage 'Sync appliances to S3 bucket' + + sh 'aws s3 sync builds s3://internet2-appliance-us-west-1' + + slackSend color: 'good', message: "BUILD SUCCESS: Comanage Appliance build success. ${env.JOB_NAME} ${env.BUILD_NUMBER} (<${env.BUILD_URL} |Open>)" + + } + catch (err) { currentBuild.result = "FAILURE" diff --git a/grouper-appliance.json b/grouper-appliance.json new file mode 100644 index 0000000..c72ea94 --- /dev/null +++ b/grouper-appliance.json @@ -0,0 +1,82 @@ +{ + "min_packer_version": "0.8.6", + "description": "Grouper appliance ", + "variables": { + "profile": "xfs", + "disk_size": "8192", + "memory": "6122", + "cpus": "2", + "ssh_username": "centos", + "ssh_password": "centos", + "region": "us-west-1", + "timestamper": "{{timestamp}}", + "outputfile_name": "grouper-appliance-centos7" + }, + "provisioners": [ + { + "type": "shell", + "execute_command": "echo 'centos' | {{.Vars}} sudo -S -E bash '{{.Path}}'", + "script": "scripts/ansible.sh" + }, + { + "type": "ansible-local", + "playbook_dir": "ansible-playbooks", + "playbook_file": "ansible-playbooks/grouper-appliance-vbox.yml" + }, + { + "type": "shell", + "execute_command": "echo 'centos' | {{.Vars}} sudo -S -E bash '{{.Path}}'", + "script": "scripts/cleanup.sh" + } + ], + "builders": [ + { + "type": "virtualbox-iso", + "name": "grouper-appliance-centos7", + "vm_name": "grouper-appliance-centos7-{{user `profile`}}", + "headless": true, + "guest_os_type": "RedHat_64", + "disk_size": "{{user `disk_size`}}", + "vboxmanage": [ + ["modifyvm", "{{.Name}}", "--memory", "{{user `memory`}}"], + ["modifyvm", "{{.Name}}", "--cpus", "{{user `cpus`}}"] + ], + "iso_url": "http://mirror.vcu.edu/pub/gnu+linux/centos/7/isos/x86_64/CentOS-7-x86_64-Minimal-1511.iso", + "iso_checksum": "f90e4d28fa377669b2db16cbcb451fcb9a89d2460e3645993e30e137ac37d284", + "iso_checksum_type": "sha256", + "http_directory": "http", + "boot_command": [" text ks=http://{{.HTTPIP}}:{{.HTTPPort}}/ks-{{user `profile`}}.cfg"], + "boot_wait": "10s", + "ssh_username": "{{user `ssh_username`}}", + "ssh_password": "{{user `ssh_password`}}", + "ssh_port": 22, + "ssh_wait_timeout": "10000s", + "guest_additions_mode": "disable", + "shutdown_command": "sudo -S shutdown -P now", + "output_directory": "output-grouper-{{user `profile`}}", + "format": "ova" + } + ], + "post-processors": [ + { + "type": "compress", + "compression_level": "9", + "output": "builds/{{user `outputfile_name`}}-ova-{{user `timestamper`}}.tar" + }, + { + "type": "vagrant", + "compression_level": "9", + "output": "builds/{{user `outputfile_name`}}-vagrant-{{user `timestamper`}}.tar" + }, + { + "type": "amazon-import", + "access_key": "{{user `aws_access_key`}}", + "secret_key": "{{user `aws_secret_key`}}", + "region": "{{user `region`}}", + "s3_bucket_name": "internet2-ami-import-us-west-1", + "tags": { + "Description": "packer amazon-import-grouper-appliance {{user `timestamper`}}" + } + } + ] +}