From 0b6c32241e821d5f0449f21e230d62329797b2e7 Mon Sep 17 00:00:00 2001 From: Martin Krizek Date: Wed, 11 Nov 2015 14:41:56 +0000 Subject: [PATCH] taskotron-dev: enable disposable clients --- .../group_vars/taskotron-dev-client-hosts | 59 +++++++++++++++++++ inventory/host_vars/qa11.qa.fedoraproject.org | 8 +++ .../taskotron-dev01.qa.fedoraproject.org | 24 +++----- playbooks/groups/taskotron-client-hosts.yml | 32 +++++----- .../taskotron/taskotron-client/tasks/main.yml | 5 ++ .../templates/settings.py.testcloud.j2 | 43 ++++++++++++++ .../templates/taskotron.yaml.j2 | 7 +++ 7 files changed, 147 insertions(+), 31 deletions(-) create mode 100644 roles/taskotron/taskotron-client/templates/settings.py.testcloud.j2 diff --git a/inventory/group_vars/taskotron-dev-client-hosts b/inventory/group_vars/taskotron-dev-client-hosts index fdcfdf1dc5..b68e915450 100644 --- a/inventory/group_vars/taskotron-dev-client-hosts +++ b/inventory/group_vars/taskotron-dev-client-hosts @@ -2,3 +2,62 @@ nrpe_procs_warn: 900 nrpe_procs_crit: 1000 + +############################################################ +# general config +############################################################ + +deployment_type: dev +tcp_ports: [ "{{ buildslave_port }}" ] +sudoers: "{{ private }}/files/sudo/qavirt-sudoers" +freezes: false + +# this enables extra repos during dnf install but that's broken right now, remember to re-enable +# extra_enablerepos: 'infrastructure-testing' +extra_enablerepos: '' + + +############################################################ +# buildslave config +############################################################ + +slaves_group: buildslaves +buildmaster: 10.5.124.181 +buildslave_port: 9989 +taskotron_admin_email: taskotron-admin-members@fedoraproject.org + + +############################################################ +# taskotron config +############################################################ + +taskotron_fas_user: taskotron +# stuff is kinda not working for stg bodhi right now. workaround by having empty fas password +#taskotron_fas_password: '{{ dev_taskotron_fas_password}}' +taskotron_fas_password: '' + +execdb_external_url: https://taskotron-dev.fedoraproject.org/execdb +resultsdb_server: http://resultsdb-dev01.qa.fedoraproject.org/resultsdb_api/api/v1.0 +bodhi_server: https://bodhi.fedoraproject.org/ +kojihub_url: http://koji.fedoraproject.org/kojihub +taskotron_master: https://taskotron-dev.fedoraproject.org/taskmaster +resultsdb_external_url: https://taskotron-dev.fedoraproject.org/resultsdb +artifacts_base_url: https://taskotron-dev.fedoraproject.org/artifacts + +client_report_to_bodhi: 'False' + + +############################################################ +# testcloud config +############################################################ + +buildslave_pubkey: "ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA4EOTNfPIvIjCLNRYauVquS2LA8CZvCi6f87TASDZv4moFTv3mrCIdA3ycYLg+r+ODdPDjF9Cjpw1os/8L07XegTt9gAJVIpxzu3ZgQDkSQbx/hlDi+RG4EOIHL8nNJmu27dOVd1tb3k3aOkP5twO4uEq9RygrQBWMZTmOHdS/q8ZVUQG0d1sKv2J8EuBENgICjjIhhYvdvluu3G65jKxMgDbSXjkK6vZpbDbS2d6JI3VeLbVGlyFbHkTu7vH/vzTJZfOYgp0ZbvW9Wo3VSq/ia5qtrLKwRcBkpyCkP6uOQ14zqj4zJd/Hv7qhEcUhC8Jsb7d/Z6b3q5ID0s/9nuHdQ== tflink@lockbox01.phx2.fedoraproject.org" + + +############################################################ +# task git mirror config +############################################################ + +buildslave_private_sshkey_file: dev-buildslave-sshkey/dev_buildslave +buildslave_public_sshkey_file: dev-buildslave-sshkey/dev_buildslave.pub +buildmaster_pubkey: "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC0DR5IwJZ4Fdwj8xe0h36jRKAL2KtCtIJbjwG+hQrnoRDC+l4WtTm4yiE8/HJPSD+022ciRCgcwweoycc9Q/vXqOnUE1ZNnWFQaYU/7HvVblFxtUjF11y+K3h/yXHGCKseAYeaFvaQVBG7UUn0PE57JiPgh/PXWlkEZQUiyvYESM8FRD+Kg1eZZ6hdAY2j3azbxZbsevYIbKJBpAhhn5mfLllDju/7ODUJLkJoyMRNHBRQg+f14FWX9RLko0SjHOI0ZifOo1a5vt1aU+ZCnSKuOjt0AY+mLOz8f5V3rG4erKvjk+WuU4Aw/39xKSmJRXKU6vbjJh/UPwHpo3CQggKF" diff --git a/inventory/host_vars/qa11.qa.fedoraproject.org b/inventory/host_vars/qa11.qa.fedoraproject.org index 0538d9696f..70685bd331 100644 --- a/inventory/host_vars/qa11.qa.fedoraproject.org +++ b/inventory/host_vars/qa11.qa.fedoraproject.org @@ -4,3 +4,11 @@ fas_client_groups: sysadmin-qa,sysadmin-main sudoers: "{{ private }}/files/sudo/qavirt-sudoers" nrpe_procs_warn: 900 nrpe_procs_crit: 1000 + +fas_client_groups: sysadmin-qa,sysadmin-main +short_hostname: qa11.qa +slaves: + - { user: "{{ short_hostname }}-1", home: "/home/{{ short_hostname }}-1", dir: "/home/{{ short_hostname }}-1/slave" } + - { user: "{{ short_hostname }}-2", home: "/home/{{ short_hostname }}-2", dir: "/home/{{ short_hostname }}-2/slave" } + - { user: "{{ short_hostname }}-3", home: "/home/{{ short_hostname }}-3", dir: "/home/{{ short_hostname }}-3/slave" } + - { user: "{{ short_hostname }}-4", home: "/home/{{ short_hostname }}-4", dir: "/home/{{ short_hostname }}-4/slave" } diff --git a/inventory/host_vars/taskotron-dev01.qa.fedoraproject.org b/inventory/host_vars/taskotron-dev01.qa.fedoraproject.org index e14dec9db1..3f51f84252 100644 --- a/inventory/host_vars/taskotron-dev01.qa.fedoraproject.org +++ b/inventory/host_vars/taskotron-dev01.qa.fedoraproject.org @@ -47,21 +47,13 @@ public_hostname: taskotron-dev.fedoraproject.org buildmaster: 10.5.124.181 buildslaves: - - taskotron-client26-1 - - taskotron-client26-2 - - taskotron-client27-1 - - taskotron-client27-2 - - taskotron-client28-1 - - taskotron-client28-2 - - taskotron-client29-1 - - taskotron-client29-2 + - qa11.qa-1 + - qa11.qa-2 + - qa11.qa-3 + - qa11.qa-4 i386_buildslaves: - - taskotron-client29-1 - - taskotron-client29-2 + - qa11.qa-4 x86_64_buildslaves: - - taskotron-client26-1 - - taskotron-client26-2 - - taskotron-client27-1 - - taskotron-client27-2 - - taskotron-client28-1 - - taskotron-client28-2 + - qa11.qa-1 + - qa11.qa-2 + - qa11.qa-3 diff --git a/playbooks/groups/taskotron-client-hosts.yml b/playbooks/groups/taskotron-client-hosts.yml index 0501f38ba4..4b229aad50 100644 --- a/playbooks/groups/taskotron-client-hosts.yml +++ b/playbooks/groups/taskotron-client-hosts.yml @@ -34,18 +34,20 @@ handlers: - include: "{{ handlers }}/restart_services.yml" -#- name: configure taskotron client host -# hosts: taskotron-dev-client-hosts:taskotron-stg-client-hosts:taskotron-prod-client-hosts -# user: root -# gather_facts: True -# -# vars_files: -# - /srv/web/infra/ansible/vars/global.yml -# - "/srv/private/ansible/vars.yml" -# - /srv/web/infra/ansible/vars/{{ ansible_distribution }}.yml -# -# roles: -# - { role: taskotron/something, tags: ['something'] } -# -# handlers: -# - include: "{{ handlers }}/restart_services.yml" +- name: configure taskotron client host + hosts: taskotron-dev-client-hosts:taskotron-stg-client-hosts:taskotron-prod-client-hosts + user: root + gather_facts: True + + vars_files: + - /srv/web/infra/ansible/vars/global.yml + - "/srv/private/ansible/vars.yml" + - /srv/web/infra/ansible/vars/{{ ansible_distribution }}.yml + + roles: + - { role: taskotron/buildslave, tags: ['buildslave'] } + - { role: taskotron/taskotron-client, tags: ['taskotronclient'] } + - { role: taskotron/buildslave-configure, tags: ['buildslaveconfigure'] } + + handlers: + - include: "{{ handlers }}/restart_services.yml" diff --git a/roles/taskotron/taskotron-client/tasks/main.yml b/roles/taskotron/taskotron-client/tasks/main.yml index d242342536..20b76831f0 100644 --- a/roles/taskotron/taskotron-client/tasks/main.yml +++ b/roles/taskotron/taskotron-client/tasks/main.yml @@ -14,6 +14,7 @@ - PyYAML - libtaskotron - resultsdb_api + - testcloud - name: ensure packages required for taskotron tasks are installed (yum) yum: name={{ item }} state=latest enablerepo={{ extra_enablerepos }} @@ -34,6 +35,10 @@ - name: generate taskotron.yaml config file template: src=taskotron.yaml.j2 dest=/etc/taskotron/taskotron.yaml owner=root group=root mode=0644 +- name: generate testcloud config file + when: deployment_type == 'dev' + template: src=settings.py.testcloud.j2 dest=/etc/testcloud/settings.py owner=root group=root mode=0644 + # hotfixing correct yumrepoinfo until libtaskotron is updated - name: upload yumrepoinfo.conf copy: src=yumrepoinfo.conf dest=/etc/taskotron/yumrepoinfo.conf owner=root group=root mode=0644 diff --git a/roles/taskotron/taskotron-client/templates/settings.py.testcloud.j2 b/roles/taskotron/taskotron-client/templates/settings.py.testcloud.j2 new file mode 100644 index 0000000000..f69e734bdd --- /dev/null +++ b/roles/taskotron/taskotron-client/templates/settings.py.testcloud.j2 @@ -0,0 +1,43 @@ +# Commented out default values with details are displayed below. To override +# these default values, uncomment the values, rename the file to settings.py +# and place it in a supported config location + +# Do not modify this file directly, it will not be picked up unless the filename +# is changed to settings.py + +#DOWNLOAD_PROGRESS = True +#LOG_FILE = None + +# Directories for data and cached downloaded images +#DATA_DIR = "/var/lib/testcloud/" +#CACHE_DIR = "/var/lib/testcloud/cache" + +# Data for cloud-init + +#PASSWORD = 'passw0rd' +#HOSTNAME = 'testcloud' + +#META_DATA = """instance-id: iid-123456 +#local-hostname: %s +#""" +USER_DATA = """#cloud-config +users: + - default + - name: root + password: %s + chpasswd: { expire: False } + ssh-authorized-keys: + - {{ buildslave_pubkey }} +""" +#ATOMIC_USER_DATA = """#cloud-config +#password: %s +#chpasswd: { expire: False } +#ssh_pwauth: True +#runcmd: +# - [ sh, -c, 'echo -e "ROOT_SIZE=4G\nDATA_SIZE=10G" > /etc/sysconfig/docker-storage-setup'] +#""" +# +# Extra cmdline args for the qemu invocation. +# Customize as needed :) + +#CMD_LINE_ARGS = [] diff --git a/roles/taskotron/taskotron-client/templates/taskotron.yaml.j2 b/roles/taskotron/taskotron-client/templates/taskotron.yaml.j2 index 3e58173e62..e7bea57536 100644 --- a/roles/taskotron/taskotron-client/templates/taskotron.yaml.j2 +++ b/roles/taskotron/taskotron-client/templates/taskotron.yaml.j2 @@ -32,7 +32,11 @@ profile: production ## Local execution is the default mode for development profile and remote ## execution for production profile. ## [choices: local, libvirt; default: local for development, libvirt for production] +{% if deployment_type == 'dev' %} +runtask_mode: libvirt +{% elif deployment_type in ['stg', 'prod', 'local'] %} runtask_mode: local +{% endif %} ## ==== SCHEDULING section ==== @@ -142,6 +146,9 @@ artifacts_baseurl: {{ artifacts_base_url }} ## The location of images for disposable clients #imagesdir: /var/lib/taskotron/images +## Temporary option to specify url of an image to download and use for disposable client +#imageurl: + ## ==== LOGGING section ==== ## This section contains configuration of logging.