diff options
author | Dan Rue <dan.rue@linaro.org> | 2017-07-24 10:53:13 -0500 |
---|---|---|
committer | Dan Rue <dan.rue@linaro.org> | 2017-07-25 14:30:00 -0500 |
commit | 803a85d89aed82bec4387d4a288812ccd70b6d0d (patch) | |
tree | 4e89c03c3b30b5a3ce9c813f62ab40aacc8f19aa | |
parent | 35dc236e7bef8d7ff4cd09ed1b90c734643a38ec (diff) |
erp-playbook: Use ERP roles from Galaxy
- Add a make rule for retrieving roles
- Moves roles that are not in galaxy to local_roles
Usage:
make provision-drue # latest
make provision-drue BUILD_NUM=454
make run-drue # latest
make run-drue BUILD_NUM=454
Change-Id: I8faf0f4168f9344c0b0d236336749383941b63e5
Signed-off-by: Dan Rue <dan.rue@linaro.org>
22 files changed, 46 insertions, 271 deletions
diff --git a/erp-playbook/.gitignore b/erp-playbook/.gitignore index f367774..5e3f80f 100644 --- a/erp-playbook/.gitignore +++ b/erp-playbook/.gitignore @@ -1,2 +1,3 @@ *.retry builds/ +roles/ diff --git a/erp-playbook/Makefile b/erp-playbook/Makefile index 05ca943..6418de6 100644 --- a/erp-playbook/Makefile +++ b/erp-playbook/Makefile @@ -1,7 +1,24 @@ +BUILD_NUM = # retrieve latest build by default + get-last-change: sh local_scripts/check-for-changes.sh provision-drue: +ifeq ($(strip $(BUILD_NUM)),) ansible-playbook -K -t provision -l erp-drue main.yml +else + ansible-playbook -K -t provision -l erp-drue -e erp_build_number=$(BUILD_NUM) main.yml +endif + run-drue: +ifeq ($(strip $(BUILD_NUM)),) ansible-playbook -t run_test -l erp-drue main.yml +else + ansible-playbook -t run_test -l erp-drue -e "{erp_build_number: $(BUILD_NUM)}" main.yml +endif + +roles: + ansible-galaxy install -p roles -r requirements.yml + +clean: + rm -rf roles diff --git a/erp-playbook/ansible.cfg b/erp-playbook/ansible.cfg index 8b279b1..c32c89d 100644 --- a/erp-playbook/ansible.cfg +++ b/erp-playbook/ansible.cfg @@ -2,3 +2,4 @@ host_key_checking = False vault_password_file = ~/.vault_pass_erp.txt inventory = hosts +roles_path = local_roles diff --git a/erp-playbook/roles/erp_provision_austin_host/README.md b/erp-playbook/local_roles/erp-provision-austin-host/README.md index 90c1f24..1bf44f7 100644 --- a/erp-playbook/roles/erp_provision_austin_host/README.md +++ b/erp-playbook/local_roles/erp-provision-austin-host/README.md @@ -6,7 +6,9 @@ Provision a host in the Austin lab. Requirements ------------ -This role expects erp_get_build to run first. +This role expects +[Linaro:erp-get-build](https://galaxy.ansible.com/Linaro/erp-get-build/) to run +first. Role Variables -------------- @@ -16,7 +18,7 @@ None Dependencies ------------ -erp_get_build role. +[Linaro:erp-get-build](https://galaxy.ansible.com/Linaro/erp-get-build/) role. License ------- diff --git a/erp-playbook/roles/erp_provision_austin_host/defaults/main.yml b/erp-playbook/local_roles/erp-provision-austin-host/defaults/main.yml index e2d4b45..e2d4b45 100644 --- a/erp-playbook/roles/erp_provision_austin_host/defaults/main.yml +++ b/erp-playbook/local_roles/erp-provision-austin-host/defaults/main.yml diff --git a/erp-playbook/roles/erp_provision_austin_host/meta/main.yml b/erp-playbook/local_roles/erp-provision-austin-host/meta/main.yml index 809040d..809040d 100644 --- a/erp-playbook/roles/erp_provision_austin_host/meta/main.yml +++ b/erp-playbook/local_roles/erp-provision-austin-host/meta/main.yml diff --git a/erp-playbook/roles/erp_provision_austin_host/tasks/main.yml b/erp-playbook/local_roles/erp-provision-austin-host/tasks/main.yml index 4e552d3..3a8675a 100644 --- a/erp-playbook/roles/erp_provision_austin_host/tasks/main.yml +++ b/erp-playbook/local_roles/erp-provision-austin-host/tasks/main.yml @@ -5,16 +5,16 @@ msg: Run erp_get_build role first with_items: - erp_debian_installer_environment - - erp_latest_build + - erp_build_number - name: Create destination path file: - path: "/var/lib/tftpboot/debian-{{erp_debian_installer_environment}}/{{erp_latest_build}}" + path: "/var/lib/tftpboot/debian-{{erp_debian_installer_environment}}/{{erp_build_number}}" state: directory - name: Copy over new build copy: - src: "./builds/debian-{{erp_debian_installer_environment}}/{{erp_latest_build}}/{{item}}" - dest: "/var/lib/tftpboot/debian-staging/{{erp_latest_build}}/{{item}}" + src: "./builds/debian-{{erp_debian_installer_environment}}/{{erp_build_number}}/{{item}}" + dest: "/var/lib/tftpboot/debian-staging/{{erp_build_number}}/{{item}}" with_items: - "initrd.gz" - "linux" @@ -26,18 +26,18 @@ block: | if [ "${net_default_mac}" = "{{macaddress}}" ]; then set timeout=5 - set default='Install Debian Jessie - RP {{erp_debian_installer_environment}} - Image {{erp_latest_build}} - Automated' + set default='Install Debian Jessie - RP {{erp_debian_installer_environment}} - Image {{erp_build_number}} - Automated' fi - name: Update menuentry /var/lib/tftpboot/grub.cfg blockinfile: path: /var/lib/tftpboot/grub.cfg insertafter: EOF - marker: "# {mark} debian-{{erp_debian_installer_environment}} {{erp_latest_build}}" + marker: "# {mark} debian-{{erp_debian_installer_environment}} {{erp_build_number}}" block: | - menuentry 'Install Debian Jessie - RP {{erp_debian_installer_environment}} - Image {{erp_latest_build}} - Automated' { - linux /debian-{{erp_debian_installer_environment}}/{{erp_latest_build}}/linux module_blacklist=mlx5_core auto=true interface=auto priority=critical noshell BOOT_DEBUG=1 DEBIAN_FRONTEND=text url=http://people.linaro.org/~dan.rue/erp-test-automation/releases/17.08/debian/preseed.cfg --- - initrd /debian-{{erp_debian_installer_environment}}/{{erp_latest_build}}/initrd.gz + menuentry 'Install Debian Jessie - RP {{erp_debian_installer_environment}} - Image {{erp_build_number}} - Automated' { + linux /debian-{{erp_debian_installer_environment}}/{{erp_build_number}}/linux module_blacklist=mlx5_core auto=true interface=auto priority=critical noshell BOOT_DEBUG=1 DEBIAN_FRONTEND=text url=http://people.linaro.org/~dan.rue/erp-test-automation/releases/17.08/debian/preseed.cfg --- + initrd /debian-{{erp_debian_installer_environment}}/{{erp_build_number}}/initrd.gz } # XXX: Replace with automation script diff --git a/erp-playbook/roles/erp_provision_cambridge_host/README.md b/erp-playbook/local_roles/erp-provision-cambridge-host/README.md index 843e3fd..2e4577b 100644 --- a/erp-playbook/roles/erp_provision_cambridge_host/README.md +++ b/erp-playbook/local_roles/erp-provision-cambridge-host/README.md @@ -6,7 +6,8 @@ Provision a host in the Cambridge lab. Requirements ------------ -This role expects erp_get_build to run first. +This role expects +[erp-get-build](https://galaxy.ansible.com/Linaro/erp-get-build/) to run first. Role Variables -------------- @@ -16,7 +17,7 @@ None Dependencies ------------ -erp_get_build role. +[erp-get-build](https://galaxy.ansible.com/Linaro/erp-get-build/) role. License ------- diff --git a/erp-playbook/roles/erp_provision_cambridge_host/defaults/main.yml b/erp-playbook/local_roles/erp-provision-cambridge-host/defaults/main.yml index e2d4b45..e2d4b45 100644 --- a/erp-playbook/roles/erp_provision_cambridge_host/defaults/main.yml +++ b/erp-playbook/local_roles/erp-provision-cambridge-host/defaults/main.yml diff --git a/erp-playbook/roles/erp_provision_cambridge_host/meta/main.yml b/erp-playbook/local_roles/erp-provision-cambridge-host/meta/main.yml index 809040d..809040d 100644 --- a/erp-playbook/roles/erp_provision_cambridge_host/meta/main.yml +++ b/erp-playbook/local_roles/erp-provision-cambridge-host/meta/main.yml diff --git a/erp-playbook/roles/erp_provision_cambridge_host/tasks/main.yml b/erp-playbook/local_roles/erp-provision-cambridge-host/tasks/main.yml index 9bed8d0..d3d7904 100644 --- a/erp-playbook/roles/erp_provision_cambridge_host/tasks/main.yml +++ b/erp-playbook/local_roles/erp-provision-cambridge-host/tasks/main.yml @@ -4,17 +4,17 @@ msg: Run erp_get_build role first with_items: - erp_debian_installer_environment - - erp_latest_build + - erp_build_number # TODO: Replace with API call, once supported. - name: Upload build to Cambridge Lab pause: - prompt: "Upload ./builds/debian-{{erp_debian_installer_environment}}/{{erp_latest_build}}/ files to http://172.27.80.1:5000/admin/images with description 'debian-installer {{erp_debian_installer_environment}} Build {{erp_latest_build}}'. Press <enter> key when complete" + prompt: "Upload ./builds/debian-{{erp_debian_installer_environment}}/{{erp_build_number}}/ files to http://172.27.80.1:5000/admin/images with description 'debian-installer {{erp_debian_installer_environment}} Build {{erp_build_number}}'. Press <enter> key when complete" # TODO: Replace with API call, once supported. - name: Edit Machines pause: - prompt: "In Mr. Provisioner, modify each machine in your host group to {{erp_latest_build}}. <enter> once complete" + prompt: "In Mr. Provisioner, modify each machine in your host group to {{erp_build_number}}. <enter> once complete" # TODO: Replace with API call, once supported. - name: Reboot machines and install OS diff --git a/erp-playbook/main.yml b/erp-playbook/main.yml index d1b8a25..8875666 100644 --- a/erp-playbook/main.yml +++ b/erp-playbook/main.yml @@ -12,23 +12,23 @@ - always roles: - - role: erp_get_build + - role: Linaro.erp-get-build delegate_to: localhost run_once: true tags: - always - - role: erp_provision_cambridge_host + - role: erp-provision-cambridge-host delegate_to: localhost when: "'cambridge_erp' in group_names" tags: - provision - - role: erp_provision_austin_host + - role: erp-provision-austin-host delegate_to: qa-pxe become: true become_method: sudo when: "'austin_erp' in group_names" tags: - provision - - role: erp_run_test_suite + - role: Linaro.erp-run-test-suite tags: - run_test diff --git a/erp-playbook/requirements.yml b/erp-playbook/requirements.yml new file mode 100644 index 0000000..047422f --- /dev/null +++ b/erp-playbook/requirements.yml @@ -0,0 +1,4 @@ +- src: Linaro.erp-get-build + version: master +- src: Linaro.erp-run-test-suite + version: master diff --git a/erp-playbook/roles/erp_get_build/README.md b/erp-playbook/roles/erp_get_build/README.md deleted file mode 100644 index 93d8dcc..0000000 --- a/erp-playbook/roles/erp_get_build/README.md +++ /dev/null @@ -1,51 +0,0 @@ -ERP Get Build -============= - -Download an Enterprise Reference Platform (ERP) release. - -By default, this role will discover the latest staging ERP build from jenkins, -set 'erp_latest_build' number, and download the build to ./builds/staging/. - -Requirements ------------- - -None - -Role Variables --------------- - -In: - -| variable | description | default -|----------|-------------|--------- -| erp_debian_installer_environment | [staging|release] | staging - -Out: - -| variable | description | example -|----------|-------------|--------- -| erp_latest_build | Latest build number, based on debian_installer_environment | 430 - -Dependencies ------------- - -None - -Example Playbook ----------------- - -Including an example of how to use your role (for instance, with variables passed in as parameters) is always nice for users too: - - - hosts: servers - roles: - - role: get_erp_build - -License -------- - -BSD - -Author Information ------------------- - -Dan Rue <dan.rue@linaro.org> diff --git a/erp-playbook/roles/erp_get_build/defaults/main.yml b/erp-playbook/roles/erp_get_build/defaults/main.yml deleted file mode 100644 index ce959ba..0000000 --- a/erp-playbook/roles/erp_get_build/defaults/main.yml +++ /dev/null @@ -1,14 +0,0 @@ ---- - -# Which debian installer to use. Defaults to staging, but may also be -# 'release'. -erp_debian_installer_environment: staging - -erp_debian_installer_jenkins_urls: - staging: "https://ci.linaro.org/view/reference-platform/job/96boards-reference-debian-installer-staging/api/json" - release: "https://ci.linaro.org/view/reference-platform/job/96boards-reference-debian-installer/api/json" - -erp_debian_installer_download_urls: - staging: "http://builds.96boards.org/snapshots/reference-platform/components/debian-installer-staging/" - release: "http://builds.96boards.org/snapshots/reference-platform/components/debian-installer/" - diff --git a/erp-playbook/roles/erp_get_build/meta/main.yml b/erp-playbook/roles/erp_get_build/meta/main.yml deleted file mode 100644 index 6bca1d8..0000000 --- a/erp-playbook/roles/erp_get_build/meta/main.yml +++ /dev/null @@ -1,12 +0,0 @@ -galaxy_info: - author: Dan Rue <dan.rue@linaro.org> - description: Download an ERP release - company: Linaro - - license: BSD - - min_ansible_version: 2.2 - - galaxy_tags: [] - -dependencies: [] diff --git a/erp-playbook/roles/erp_get_build/tasks/main.yml b/erp-playbook/roles/erp_get_build/tasks/main.yml deleted file mode 100644 index 3a2fe3e..0000000 --- a/erp-playbook/roles/erp_get_build/tasks/main.yml +++ /dev/null @@ -1,22 +0,0 @@ ---- -- name: Get latest build number from Jenkins - uri: - url: "{{erp_debian_installer_jenkins_urls[erp_debian_installer_environment]}}" - register: jenkins_build_info -- set_fact: - erp_latest_build: "{{jenkins_build_info['json']['lastCompletedBuild']['number']}}" - -- debug: - msg: "Latest debian installer {{erp_debian_installer_environment}} build is {{erp_latest_build}}" - -- name: Create local builds directory - file: - path: "./builds/debian-{{erp_debian_installer_environment}}/{{erp_latest_build}}" - state: directory -- name: Download build locally - get_url: - url: "{{erp_debian_installer_download_urls[erp_debian_installer_environment]}}/{{erp_latest_build}}/debian-installer/arm64/{{item}}" - dest: "./builds/debian-{{erp_debian_installer_environment}}/{{erp_latest_build}}/{{item}}" - with_items: - - "initrd.gz" - - "linux" diff --git a/erp-playbook/roles/erp_run_test_suite/README.md b/erp-playbook/roles/erp_run_test_suite/README.md deleted file mode 100644 index 0ef7a31..0000000 --- a/erp-playbook/roles/erp_run_test_suite/README.md +++ /dev/null @@ -1,35 +0,0 @@ -ERP Run Test Suite -================== - -Run the Enteprise Reference Platform (ERP) test suite against a given host. - -Requirements ------------- - - -Role Variables --------------- - -| variable | description | default -|----------|-------------|--------- -| erp_squad_environment | [production|staging] | production -| erp_squad_auth_token | Squad API auth token | No default - required - - -Dependencies ------------- - - -Example Playbook ----------------- - - -License -------- - -BSD - -Author Information ------------------- - -Dan Rue <dan.rue@linaro.org> diff --git a/erp-playbook/roles/erp_run_test_suite/defaults/main.yml b/erp-playbook/roles/erp_run_test_suite/defaults/main.yml deleted file mode 100644 index 3e3427c..0000000 --- a/erp-playbook/roles/erp_run_test_suite/defaults/main.yml +++ /dev/null @@ -1,7 +0,0 @@ ---- - -erp_squad_environment: production -erp_squad_url: - production: "https://qa-reports.linaro.org" - staging: "https://staging-qa-reports.linaro.org" - diff --git a/erp-playbook/roles/erp_run_test_suite/meta/main.yml b/erp-playbook/roles/erp_run_test_suite/meta/main.yml deleted file mode 100644 index f3ca3e0..0000000 --- a/erp-playbook/roles/erp_run_test_suite/meta/main.yml +++ /dev/null @@ -1,12 +0,0 @@ -galaxy_info: - author: Dan Rue <dan.rue@linaro.org> - description: Run the Enteprise Reference Platform (ERP) test suite. - company: Linaro - - license: BSD - - min_ansible_version: 2.2 - - galaxy_tags: [] - -dependencies: [] diff --git a/erp-playbook/roles/erp_run_test_suite/tasks/main.yml b/erp-playbook/roles/erp_run_test_suite/tasks/main.yml deleted file mode 100644 index 6531433..0000000 --- a/erp-playbook/roles/erp_run_test_suite/tasks/main.yml +++ /dev/null @@ -1,58 +0,0 @@ ---- -- name: Verify variables are set - assert: - that: "{{ item }} is defined" - with_items: - - erp_latest_build - - erp_squad_environment - - erp_squad_auth_token - -- name: Gather Facts - setup: - -- name: Check for /root/test-definitions - stat: - path: /root/test-definitions - register: tests_run -- name: Verify host is clean - fail: - msg: Error - It looks like tests have already run on this host. - when: tests_run.stat.exists - -- name: Package Prerequisites - apt: - update_cache: yes - cache_valid_time: 86400 - pkg: "{{item}}" - with_items: - - git - - python-pip - - daemon - - sysstat # for troubleshooting - - strace # for troubleshooting - -- name: Clone test-definitions repository - git: - repo: 'https://git.linaro.org/qa/test-definitions.git' - dest: /root/test-definitions - version: erp-17.08 - -- name: Install python prerequisites - pip: - requirements: /root/test-definitions/automated/utils/requirements.txt - -- name: Install python prerequisites - pip: - name: python-slugify - -- name: Copy test harness - template: - src: run_erp_suite.sh - dest: /root/run_erp_suite.sh - mode: 0755 - -- name: Run ERP test suite - # daemon --name ensures only one runs at a time - command: daemon --name=erp_suite --errlog=/root/run_erp_suite.stderr.log --dbglog=/root/run_erp_suite.stdout.log -- /root/run_erp_suite.sh {{erp_latest_build}} - environment: - SQUAD_AUTH_TOKEN: "{{erp_squad_auth_token}}" diff --git a/erp-playbook/roles/erp_run_test_suite/templates/run_erp_suite.sh b/erp-playbook/roles/erp_run_test_suite/templates/run_erp_suite.sh deleted file mode 100644 index 6ee554b..0000000 --- a/erp-playbook/roles/erp_run_test_suite/templates/run_erp_suite.sh +++ /dev/null @@ -1,40 +0,0 @@ -#!/bin/sh - -if [ -z $1 ]; then - echo "Usage: $0 <build_number>" - exit 1 -fi - -report_url="{{erp_squad_url[erp_squad_environment]}}" -plans="plans/rpb_ee/rpb_ee_functional.yaml plans/rpb_ee/rpb_ee_enterprise.yaml plans/rpb_ee/rpb_ee_performance.yaml plans/rpb_ee/rpb_ee_ltp.yaml" - -root_path=/root -td_path=${root_path}/test-definitions - -# Gather environmental info for erp project and environment names -vendor_name=$(slugify `cat /sys/devices/virtual/dmi/id/board_vendor`) -board_name=$(slugify `cat /sys/devices/virtual/dmi/id/board_name`) -os_name=$(slugify `grep ^ID= /etc/os-release | awk -F= '{print $2}'`) - -cd ${td_path} -. ./automated/bin/setenv.sh -build_id=$1-$(dpkg-query -W -f '${package}-${version}\n' | grep linaro | md5sum | cut -c -8) - -for plan in ${plans}; do - plan_short=$(basename -s .yaml ${plan}) - output_path=${root_path}/${build_id}-${plan_short} - mkdir -p ${output_path} - test-runner -o ${output_path} \ - -p ${plan} \ - > ${output_path}/test-runner-stdout.log \ - 2> ${output_path}/test-runner-stderr.log - post-to-squad -r ${output_path}/result.json \ - -b ${build_id} \ - -a ${output_path}/result.csv \ - -a ${output_path}/test-runner-stdout.log \ - -a ${output_path}/test-runner-stderr.log \ - -u ${report_url} \ - -t erp-${vendor_name} \ - -p staging-debian \ - > ${output_path}/post-to-squad.log 2>&1 -done |