diff options
author | Pavel Raiskup <praiskup@redhat.com> | 2014-10-23 15:13:36 +0200 |
---|---|---|
committer | Pavel Raiskup <praiskup@redhat.com> | 2014-10-23 15:15:18 +0200 |
commit | 83edd3a996c506b6a1988d0c68214e9a849397d8 (patch) | |
tree | 480d540ba768ccbdb4d730c3a422164c846058f5 /controller/share/dtf-controller/ansible | |
parent | 3d7b436102772e5e9e146e45e8d52210ce7498b5 (diff) | |
download | postgresql-setup-tests-83edd3a996c506b6a1988d0c68214e9a849397d8.tar.gz postgresql-setup-tests-83edd3a996c506b6a1988d0c68214e9a849397d8.tar.xz postgresql-setup-tests-83edd3a996c506b6a1988d0c68214e9a849397d8.zip |
controller: autoconfiscate
First part of converting controller to autoconf/automake solution.
* .gitignore: New gitignore; autotools ignores.
* Makefile.am: New file.
* get_machine: Renamed to template bin/dtf-get-machine.in.
* bin/dtf-get-machine.in: New template based on get_machine.
* run_remote: Renamed to template bin/dtf-run-remote.in.
* bin/dtf-run-remote.in: New binary template from run_remote.
* build: New bootstrap like helper script (git-only).
* configure.ac: New file.
* etc/dtf.sh.in: Likewise.
* ansible_helpers/wait-for-ssh: Renamed to
libexec/dtf-wait-for-ssh.
* share/dtf-controller/parse_credsfile: Reworked script for
parsing OS credentials.
* parse_credsfile: Moved to share/dtf-controller.
* libexec/dtf-wait-for-ssh: Renamed from wait-for-ssh.
* ansible/*: Moved into share/dtf-controller/ansible/*.
* share/dtf-controller/ansible/vars/generated-vars.yml.in: New
template file exporting configure-time variables into playbooks.
Diffstat (limited to 'controller/share/dtf-controller/ansible')
8 files changed, 113 insertions, 0 deletions
diff --git a/controller/share/dtf-controller/ansible/dummy-wrapper.yml b/controller/share/dtf-controller/ansible/dummy-wrapper.yml new file mode 100644 index 0000000..524b0ea --- /dev/null +++ b/controller/share/dtf-controller/ansible/dummy-wrapper.yml @@ -0,0 +1,7 @@ +- name: "dummy-wrapper" + hosts: "{{ target }}" + remote_user: root + gather_facts: False + + tasks: + - include: "{{ include_file }}" diff --git a/controller/share/dtf-controller/ansible/playbooks/fedora.yml b/controller/share/dtf-controller/ansible/playbooks/fedora.yml new file mode 100644 index 0000000..215e048 --- /dev/null +++ b/controller/share/dtf-controller/ansible/playbooks/fedora.yml @@ -0,0 +1,68 @@ +- name: self-standing testsuite + remote_user: root + gather_facts: False + hosts: localhost + vars_files: + - "{{ opt_credsfile }}" + - "{{ opt_generated_vars }}" + + tasks: + - name: generate builder name + local_action: shell echo `dd if=/dev/urandom bs=1k count=10 | md5sum ; echo DBTESTS` + register: vm_name + + - debug: msg="osusername={{ os_username }}" + + - name: spin it up + local_action: nova_compute auth_url={{os_auth_url}} + flavor_id={{os_flavor_id}} image_id="{{ os_image_id }}" key_name={{ os_keypair }} + login_password={{os_nova_password}} login_tenant_name="{{os_tenant_name}}" + login_username={{os_username}} security_groups={{os_security_group}} + wait=yes name="{{vm_name.stdout}}" wait_for=600 + register: nova + + - debug: msg="{{ nova.info.addresses }}" + + # This is ugly as hell... Hopefully nothing will be changing. + - local_action: command echo "{{ nova.info.addresses[os_network_dev][1].addr }}" + register: machine_ip + + - debug: msg="{{ machine_ip.stdout }}" + + - name: wait for the host to be hot + local_action: wait_for host={{ machine_ip.stdout }} port=22 delay=5 timeout=600 + + - local_action: shell {{ config_libexecdir }}/dtf-wait-for-ssh "root@{{ machine_ip.stdout }}" + + - name: add it to the special group + local_action: add_host hostname={{ machine_ip.stdout }} + groupname=temp_group + +- hosts: temp_group + user: root + gather_facts: False + vars_files: + - "{{ opt_credsfile }}" + - "{{ opt_generated_vars }}" + tasks: + - copy: src={{ opt_workdir }}/{{ opt_testsuite_name }}.tar.gz + dest=/root/{{ opt_testsuite_name }}.tar.gz + + - include: "{{ config_ansibleplaybooksdir }}/include/beakerlib.yml" + + - include: "{{ config_ansibleplaybooksdir }}/include/prepare-testenv.yml" + + - include: "{{ config_ansibleplaybooksdir }}/include/additional-packages.yml" + when: dtf_rpm_files_list is defined + + - shell: cd /root && tar -xf {{ opt_testsuite_name }}.tar.gz + + - shell: cd /root/{{ opt_testsuite_name }}&& ./run &>/var/tmp/dtf-run.overview + register: test_result + ignore_errors: yes + + - include: "{{ config_ansibleplaybooksdir }}/include/download-results.yml" + + - name: stop the vm + shell: echo "not implemented yet" + when: test_result.rc == 0 diff --git a/controller/share/dtf-controller/ansible/playbooks/include/additional-packages.yml b/controller/share/dtf-controller/ansible/playbooks/include/additional-packages.yml new file mode 100644 index 0000000..f821255 --- /dev/null +++ b/controller/share/dtf-controller/ansible/playbooks/include/additional-packages.yml @@ -0,0 +1,6 @@ +- local_action: shell cat "{{ dtf_rpm_files_list }}" | xargs -n 100 + register: additional_packages + +- debug: msg="{{ additional_packages.stdout }}" + +- shell: yum install -y {{ additional_packages.stdout }} diff --git a/controller/share/dtf-controller/ansible/playbooks/include/beakerlib.yml b/controller/share/dtf-controller/ansible/playbooks/include/beakerlib.yml new file mode 100644 index 0000000..0461f25 --- /dev/null +++ b/controller/share/dtf-controller/ansible/playbooks/include/beakerlib.yml @@ -0,0 +1 @@ +- yum: conf_file=https://beaker-project.org/yum/beaker-server-Fedora.repo state=present name=beakerlib diff --git a/controller/share/dtf-controller/ansible/playbooks/include/download-results.yml b/controller/share/dtf-controller/ansible/playbooks/include/download-results.yml new file mode 100644 index 0000000..4404e08 --- /dev/null +++ b/controller/share/dtf-controller/ansible/playbooks/include/download-results.yml @@ -0,0 +1,5 @@ +- shell: cp -f /var/tmp/dtf-run.overview /var/tmp/dtf/ + +- shell: cd /var/tmp ; tar -czf dtf.tar.gz dtf + +- fetch: src=/var/tmp/dtf.tar.gz dest="{{ opt_workdir }}/" flat=yes diff --git a/controller/share/dtf-controller/ansible/playbooks/include/prepare-testenv.yml b/controller/share/dtf-controller/ansible/playbooks/include/prepare-testenv.yml new file mode 100644 index 0000000..a63e51a --- /dev/null +++ b/controller/share/dtf-controller/ansible/playbooks/include/prepare-testenv.yml @@ -0,0 +1,3 @@ +- yum: state=present name=postgresql-server + +- yum: state=present name=postgresql-upgrade diff --git a/controller/share/dtf-controller/ansible/run_include b/controller/share/dtf-controller/ansible/run_include new file mode 100755 index 0000000..4e84c7d --- /dev/null +++ b/controller/share/dtf-controller/ansible/run_include @@ -0,0 +1,19 @@ +#!/bin/bash + +export ANSIBLE_HOST_KEY_CHECKING=False + +workdir="$(dirname "${BASH_SOURCE[0]}")" +workdir=$(readlink -f "$workdir") + +export playbook=$(readlink -f "$1") + +( set -x + cd "$workdir" + + ansible-playbook -i "$workdir/../config/hosts" \ + --extra-vars "include_file=$playbook" \ + --extra-vars "script_name=dummy" \ + --extra-vars "opt_workdir=/tmp/dtf-$(date +%H%M%S%N)" \ + --extra-vars "target=host" \ + "dummy-wrapper.yml" +) diff --git a/controller/share/dtf-controller/ansible/vars/generated-vars.yml.in b/controller/share/dtf-controller/ansible/vars/generated-vars.yml.in new file mode 100644 index 0000000..e33e974 --- /dev/null +++ b/controller/share/dtf-controller/ansible/vars/generated-vars.yml.in @@ -0,0 +1,4 @@ +--- +config_bindir: @bindir@ +config_libexecdir: @libexecdir@ +config_ansibleplaybooksdir: @ansibleplaybooksdir@ |