From 301e84484640a1a39e4d74805eb87875d5c6836e Mon Sep 17 00:00:00 2001 From: Kevin Faulkner Date: Mar 01 2021 19:05:36 +0000 Subject: install terraform and packer for jenkins --- diff --git a/README.md b/README.md new file mode 100644 index 0000000..d7a15ee --- /dev/null +++ b/README.md @@ -0,0 +1,32 @@ +Build +===== + +jenkins build role this will setup a jenkins build node + + +Role Variables +-------------- + +defaults are set for: + +* build_automation_user +* deploy_group +* jenkins_master_host +* jenkins_master_port +* packer_version +* packer_artifact_dir +* hashcorp_artifacts +* terraform_artifact_dir +* terraform_version +* automation_ssh_pub + + +License +------- + +BSD + +Author Information +------------------ + +Kevin Faulkner diff --git a/defaults/main.yml b/defaults/main.yml new file mode 100644 index 0000000..c0c7371 --- /dev/null +++ b/defaults/main.yml @@ -0,0 +1,13 @@ +--- +# defaults file for project_build +build_automation_user: janet +deploy_group: deploy +jenkins_master_host: 127.0.0.1 +jenkins_master_port: 33100 +packer_version: 1.6.6 +packer_artifact_dir: "packer/{{ packer_version }}/" +hashcorp_artifacts: releases.hashicorp.com +terraform_version: 0.14.7 +terraform_artifact_dir: "terraform/{{ terraform_version }}/" +automation_ssh_pub: '' + diff --git a/handlers/main.yml b/handlers/main.yml new file mode 100644 index 0000000..3926c73 --- /dev/null +++ b/handlers/main.yml @@ -0,0 +1,2 @@ +--- +# handlers file for project_build \ No newline at end of file diff --git a/meta/main.yml b/meta/main.yml new file mode 100644 index 0000000..227ad9c --- /dev/null +++ b/meta/main.yml @@ -0,0 +1,53 @@ +galaxy_info: + author: your name + description: your role description + company: your company (optional) + + # If the issue tracker for your role is not on github, uncomment the + # next line and provide a value + # issue_tracker_url: http://example.com/issue/tracker + + # Choose a valid license ID from https://spdx.org - some suggested licenses: + # - BSD-3-Clause (default) + # - MIT + # - GPL-2.0-or-later + # - GPL-3.0-only + # - Apache-2.0 + # - CC-BY-4.0 + license: license (GPL-2.0-or-later, MIT, etc) + + min_ansible_version: 2.9 + + # If this a Container Enabled role, provide the minimum Ansible Container version. + # min_ansible_container_version: + + # + # Provide a list of supported platforms, and for each platform a list of versions. + # If you don't wish to enumerate all versions for a particular platform, use 'all'. + # To view available platforms and versions (or releases), visit: + # https://galaxy.ansible.com/api/v1/platforms/ + # + # platforms: + # - name: Fedora + # versions: + # - all + # - 25 + # - name: SomePlatform + # versions: + # - all + # - 1.0 + # - 7 + # - 99.99 + + galaxy_tags: [] + # List tags for your role here, one per line. A tag is a keyword that describes + # and categorizes the role. Users find roles by searching for tags. Be sure to + # remove the '[]' above, if you add tags to this list. + # + # NOTE: A tag is limited to a single word comprised of alphanumeric characters. + # Maximum 20 tags per role. + +dependencies: [] + # List your role dependencies here, one per line. Be sure to remove the '[]' above, + # if you add dependencies to this list. + \ No newline at end of file diff --git a/tasks/main.yml b/tasks/main.yml new file mode 100644 index 0000000..08e4d01 --- /dev/null +++ b/tasks/main.yml @@ -0,0 +1,91 @@ +--- +# tasks file for project_build +- name: 'install dovecot' + package: + name: java-latest-openjdk-headless + state: installed + +- name: "override, since we wrote the contents" + get_url: + url: "http://{{ jenkins_master_host }}:{{ jenkins_master_port }}/jnlpJars/jenkins-cli.jar" + dest: "/usr/local/lib/" + +- name: "create jenkins local automation user" + user: + name: "{{ build_automation_user }}" + group: "{{ deploy_group }}" + home: /mnt/ephemeral + +- name: jenkins ssh key + copy: + owner: "{{ build_automation_user }}" + group: "{{ deploy_group }}" + mode: 0600 + dest: /mnt/ephemeral/.ssh/authorized_keys + content: | + "{{ automation_ssh_pub }}" + +- name: "add thin-backup plugin" + command: "java -jar /usr/local/lib/jenkins-cli.jar -s {{ jenkins_master_host }}:{{ jenkins_master_port }}/ install-plugin thin-backup" + +- name: 'install qemu' + package: + name: qemu-kvm + state: installed + +- name: 'packer upgrade' + file: + path: /usr/local/bin/packer + state: absent + when: packer_upgrade + +- name: 'local builder dir' + file: + path: /usr/local/lib/devops/ + mode: 0775 + owner: "{{ build_automation_user }}" + group: "{{ deploy_group }}" + state: directory + +- name: 'fetch install packer' + get_url: + url: "{{ hashcorp_artifacts }}{{ packer_artifact_dir }}/packer_{{ packer_version }}_linux_amd64.zip" + dest: "/usr/local/src/packer-{{ packer_version }}.zip" + register: fetched_packer + +- name: extract packer + unarchive: + src: "{{ fetched.dest }}" + owner: "{{ build_automation_user }}" + group: "{{ deploy_group }}" + dest: "/usr/local/bin/" + creates: "/usr/local/bin/packer" + register: xtracted + + + + + + + +- name: 'terraform upgrade' + file: + path: /usr/local/bin/terraform + state: absent + when: terraform_upgrade + +- name: 'fetch install tar' + get_url: + url: "{{ hashcorp_artifacts }}{{ terraform_artifact_dir }}/terraform_{{ terraform_version }}_linux_amd64.zip" + dest: "/usr/local/src/terraform-{{ terraform_version }}.zip" + register: fetched_terraform + +- name: extract terraform + unarchive: + src: "{{ fetched.dest }}" + owner: "{{ build_automation_user }}" + group: "{{ deploy_group }}" + dest: "/usr/local/bin/" + creates: "/usr/local/bin/terraform" + register: xtracted + diff --git a/tests/inventory b/tests/inventory new file mode 100644 index 0000000..878877b --- /dev/null +++ b/tests/inventory @@ -0,0 +1,2 @@ +localhost + diff --git a/tests/test.yml b/tests/test.yml new file mode 100644 index 0000000..8fba92c --- /dev/null +++ b/tests/test.yml @@ -0,0 +1,5 @@ +--- +- hosts: localhost + remote_user: root + roles: + - project_build \ No newline at end of file diff --git a/vars/main.yml b/vars/main.yml new file mode 100644 index 0000000..4364bae --- /dev/null +++ b/vars/main.yml @@ -0,0 +1,2 @@ +--- +# vars file for project_build \ No newline at end of file