From 2be9e18a1b30c0e3e806b34705556728872f1edc Mon Sep 17 00:00:00 2001 From: Tim Flink Date: Thu, 3 Jul 2014 11:37:02 +0000 Subject: [PATCH] adding taskotron-client role --- inventory/group_vars/taskotron-dev-clients | 1 + playbooks/groups/taskotron-dev-clients.yml | 3 +- .../taskotron-client/files/yumrepoinfo.conf | 66 ++++++++++++++ .../taskotron/taskotron-client/tasks/main.yml | 25 ++++++ .../templates/taskotron.yaml.j2 | 89 +++++++++++++++++++ 5 files changed, 183 insertions(+), 1 deletion(-) create mode 100644 roles/taskotron/taskotron-client/files/yumrepoinfo.conf create mode 100644 roles/taskotron/taskotron-client/tasks/main.yml create mode 100644 roles/taskotron/taskotron-client/templates/taskotron.yaml.j2 diff --git a/inventory/group_vars/taskotron-dev-clients b/inventory/group_vars/taskotron-dev-clients index dd7c3867d2..1a8e62dd13 100644 --- a/inventory/group_vars/taskotron-dev-clients +++ b/inventory/group_vars/taskotron-dev-clients @@ -1,2 +1,3 @@ --- lvm_size: 20000 +slave_user: buildslave diff --git a/playbooks/groups/taskotron-dev-clients.yml b/playbooks/groups/taskotron-dev-clients.yml index a910640b66..8c09dc6fb2 100644 --- a/playbooks/groups/taskotron-dev-clients.yml +++ b/playbooks/groups/taskotron-dev-clients.yml @@ -62,5 +62,6 @@ - /srv/web/infra/ansible/vars/{{ ansible_distribution }}.yml roles: -# - { role: taskotron/taskotron-client, tags: ['taskotronclient'] } +# - { role: taskotron/buildslave, tags: ['buildslave'] } + - { role: taskotron/taskotron-client, tags: ['taskotronclient'] } diff --git a/roles/taskotron/taskotron-client/files/yumrepoinfo.conf b/roles/taskotron/taskotron-client/files/yumrepoinfo.conf new file mode 100644 index 0000000000..2c985bffeb --- /dev/null +++ b/roles/taskotron/taskotron-client/files/yumrepoinfo.conf @@ -0,0 +1,66 @@ +## A Taskotron configuration file representing available YUM repositories inside +## Fedora infrastructure. +## This file is in a ConfigParser syntax, very similar to INI syntax known from +## Windows. + +[DEFAULT] +# URLs to yum repos +# Please note: 'download.fedoraproject.org' is a redirect that points you to a +# random mirror every time. For faster and more reliable operation, pick a close +# mirror from http://mirrors.fedoraproject.org and use it in 'baseurl'. +baseurl = http://download.fedoraproject.org/pub/fedora/linux +goldurl = %(baseurl)s/releases/%(path)s/Everything/%(arch)s/os +updatesurl = %(baseurl)s/updates/%(path)s/%(arch)s +rawhideurl = %(baseurl)s/%(path)s/%(arch)s/os + +# list of supported architectures +arches = i386, x86_64 + +# a direct parent of this repo, essential for operations (dependencies) +parent = + +# koji tag defaults to section name +tag = %(__name__)s + +# true for "top" repos corresponding to currently supported Fedora releases +supported = no + + +# Rawhide +[rawhide] +path = development/rawhide +url = %(rawhideurl)s +tag = f21 + +# Fedora 20 +[f20] +url = %(goldurl)s +path = 20 +supported = yes + +[f20-updates] +url = %(updatesurl)s +path = 20 +parent = f20 + +[f20-updates-testing] +url = %(updatesurl)s +path = testing/20 +parent = f20-updates + +# Fedora 19 +[f19] +url = %(goldurl)s +path = 19 +supported = yes + +[f19-updates] +url = %(updatesurl)s +path = 19 +parent = f19 + +[f19-updates-testing] +url = %(updatesurl)s +path = testing/19 +parent = f19-updates + diff --git a/roles/taskotron/taskotron-client/tasks/main.yml b/roles/taskotron/taskotron-client/tasks/main.yml new file mode 100644 index 0000000000..92f2059232 --- /dev/null +++ b/roles/taskotron/taskotron-client/tasks/main.yml @@ -0,0 +1,25 @@ +- name: ensure packages required for libtaskotron are installed + action: yum name={{ item }} state=latest + with_items: + - PyYAML + - libtaskotron + +- name: ensure packages required for taskotron tasks are installed + action: yum name={{ item }} state=latest + with_items: + - python-solv + - python-librepo + - rpmlint + +- name: generate taskotron.yaml config file + template: src=taskotron.yaml.j2 dest=/etc/taskotron/taskotron.yaml owner=root group=root mode=0644 + +- name: upload yumrepoinfo config + copy: src=yumrepoinfo.conf dest=/etc/taskotron/yumrepoinfo.conf owner=root group=root mode=0644 + +# disabled for now until interaction with hosts role is figured out +#- name: update /etc/hosts so that koji downloads work +# template: src=hosts.j2 dest=/etc/hosts owner=root group=root mode=0644 + +- name: create /var/log/taskotron for task logfiles + file: path=/var/log/taskotron state=directory owner={{ slave_user }} group={{ slave_user }} mode=1755 diff --git a/roles/taskotron/taskotron-client/templates/taskotron.yaml.j2 b/roles/taskotron/taskotron-client/templates/taskotron.yaml.j2 new file mode 100644 index 0000000000..7fa12f9491 --- /dev/null +++ b/roles/taskotron/taskotron-client/templates/taskotron.yaml.j2 @@ -0,0 +1,89 @@ +## Main configuration file for Taskotron +## The file is in YAML syntax, read more about it at: +## http://en.wikipedia.org/wiki/Yaml +## FIXME: add a link to Taskotron docs + +## ==== GENERAL section ==== +## There are two major config profiles in Taskotron - development and +## production. +## /Development/ profile is used for developing libtaskotron, developing checks +## based on libtaskotron and local execution of these checks. +## /Production/ profile is used for deploying Taskotron as a service on a +## server, periodically executing the checks and reporting results to relevant +## result consumers. +## *The default profile is /development/*. If you want to switch to the +## /production/ profile, uncomment the following line. +## You can also switch a profile temporarily by using TASKOTRON_PROFILE=name +## environment variable, it has a higher priority. All other options set in this +## file still apply of course. +## [choices: production, development; default: development] +profile: production + + +## ==== REPORTING section ==== +## This section controls which result reports you want to send after the test +## execution is complete + +## Overall setting whether to send any reports at all. If this is False, no +## reports will be sent anywhere, regardless of your configuration for +## individual recipient systems. +## [default: True for production, False for development] +reporting_enabled: True + +## If True, test results (for selected tests) will be sent as comments to +## Fedora Update System (Bodhi). This requires that you have Bodhi +## credentials filled in secrets.conf. +#report_to_bodhi: True + +## Whether to send test results to the configured ResultsDB server. +report_to_resultsdb: True + + +## ==== RESOURCES section ==== +## This section specifies access details to various external services + +## URL of Koji instance used for querying about new builds +#koji_url: http://koji.fedoraproject.org/kojihub +koji_url: {{ kojihub_url }} + +## URL of repository of all the RPM packages built in Koji +#pkg_url: http://kojipkgs.fedoraproject.org/packages + +## URL of Bodhi instance used for communication about package updates +bodhi_server: {{ bodhi_server }} + +## URL of ResultsDB server API interface, which can store all test results +resultsdb_server: {{ resultsdb_server }} + +## URL of taskotron buildmaster +taskotron_master: {{ taskotron_master }} + +## name of step in buildbot that executes the task +buildbot_task_step: 'runtask' + +## ==== BODHI EMAIL section ==== +## These configuration options affect how Taskotron decideds to send emails +## through Bodhi in specific situations. + +## How long (in minutes) should we wait before allowing consequent test to +## re-post a 'FAILED' comment into Bodhi once again. +## By default 3 days (3*24*60 = 4320). +#bodhi_email_failed_span: 4320 + + +## ==== PATHS section ==== +## Location of various pieces of the project. + +## The main log file location for Taskotron +#logfile: /var/log/taskotron/taskotron.log + + +## ==== SECRETS section ==== +## All login credentials and other secrets are here. If you add some secret +## here, make sure you make this file readable just for the right user accounts. + +## FAS (Fedora Accounts System) credentials +## These credentials are used when reporting results into Bodhi. +fas_username: '{{ taskotron_fas_user }}' +fas_password: '{{ taskotron_fas_password}}' +