diff --git a/inventory/group_vars/taskotron-dev b/inventory/group_vars/taskotron-dev
index c3030659a6..20f62b4dbe 100644
--- a/inventory/group_vars/taskotron-dev
+++ b/inventory/group_vars/taskotron-dev
@@ -32,7 +32,7 @@ grokmirror_default_branch: develop
############################################################
execdb_endpoint: execdb
-execdb_statuspush: http://resultsdb-dev01.qa.fedoraproject.org/execdb/buildbottest
+execdb_statuspush: http://resultsdb-dev01.qa.fedoraproject.org/execdb/buildbot
execdb_server: http://resultsdb-dev01.qa.fedoraproject.org/execdb
vault_endpoint: vault
diff --git a/inventory/group_vars/taskotron-dev-client-hosts b/inventory/group_vars/taskotron-dev-client-hosts
index 546e69fc1a..bf5483b3d2 100644
--- a/inventory/group_vars/taskotron-dev-client-hosts
+++ b/inventory/group_vars/taskotron-dev-client-hosts
@@ -24,6 +24,7 @@ slaves_group: buildslaves
buildmaster: 10.5.124.181
buildslave_port: 9989
buildslave_password: "{{ dev_buildslave_password }}"
+buildslaves_home: /srv/buildslaves
taskotron_admin_email: taskotron-admin-members@fedoraproject.org
diff --git a/roles/taskotron/buildmaster-configure/templates/buildmaster.service.j2 b/roles/taskotron/buildmaster-configure/templates/buildmaster.service.j2
index 38ed3ef8b6..e3bab685c1 100644
--- a/roles/taskotron/buildmaster-configure/templates/buildmaster.service.j2
+++ b/roles/taskotron/buildmaster-configure/templates/buildmaster.service.j2
@@ -3,7 +3,7 @@ Description=Buildmaster for taskbot
After=network.target
# Workaround for builmaster not starting on system reboot
# https://pagure.io/taskotron/issue/139
-StartLimitIntervalSec=30m
+StartLimitIntervalSec=15m
StartLimitBurst=5
[Service]
@@ -18,7 +18,7 @@ Group={{ buildmaster_user }}
# Workaround for builmaster not starting on system reboot
# https://pagure.io/taskotron/issue/139
Restart=on-failure
-RestartSec=60
+RestartSec=30
[Install]
WantedBy=multi-user.target
diff --git a/roles/taskotron/buildmaster-configure/templates/taskotron.master.cfg.j2.dev b/roles/taskotron/buildmaster-configure/templates/taskotron.master.cfg.j2.dev
new file mode 100644
index 0000000000..55b29e3c37
--- /dev/null
+++ b/roles/taskotron/buildmaster-configure/templates/taskotron.master.cfg.j2.dev
@@ -0,0 +1,443 @@
+# -*- python -*-
+# ex: set filetype=python:
+
+from buildbot.plugins import *
+
+# This is a buildmaster config file. It must be installed as
+# 'master.cfg' in your buildmaster's base directory.
+
+# This is the dictionary that the buildmaster pays attention to. We also use
+# a shorter alias to save typing.
+c = BuildmasterConfig = {}
+
+c['buildbotNetUsageData'] = 'basic'
+
+
+####### WORKERS
+
+# The 'workers' list defines the set of recognized workers. Each element is
+# a Worker object, specifying a unique worker name and password. The same
+# worker name and password must be configured on the worker.
+c['workers'] = [
+{% for buildslave in buildslaves %}
+{% if deployment_type in ['dev', 'stg', 'prod'] %}
+ worker.Worker("{{ buildslave }}", "{{ buildslave_password }}"),
+{% elif deployment_type == 'local' %}
+ worker.Worker("{{ buildslave }}", "{{ local_buildslave_password }}"),
+{% endif %}
+{% endfor %}
+]
+
+# 'protocols' contains information about protocols which master will use for
+# communicating with workers. You must define at least 'port' option that workers
+# could connect to your master with this protocol.
+# 'port' must match the value configured into the workers (with their
+# --master option)
+c['protocols'] = {'pb': {'port': {{ buildslave_port }} }}
+
+
+####### SCHEDULERS
+
+# Configure the Schedulers, which decide how to react to incoming changes. In this
+# case, just kick off a 'runtests' build
+
+import buildbot.schedulers.basic
+
+class JobScheduler(buildbot.schedulers.basic.BaseBasicScheduler):
+
+ def __init__(self, name, **kwargs):
+ buildbot.schedulers.basic.BaseBasicScheduler.__init__(self, name, **kwargs)
+
+ def getChangeFilter(self, branch, branches, change_filter, categories):
+ return util.ChangeFilter.fromSchedulerConstructorArgs(
+ change_filter=change_filter, categories=categories)
+
+ def getTimerNameForChange(self, changes):
+ return "only"
+
+ def getChangeClassificationsForTimer(self, objectid, timer_name):
+ return self.master.db.schedulers.getChangeClassifications(
+ self.objectid)
+
+
+c['schedulers'] = []
+c['schedulers'].append(JobScheduler(
+ name="jobsched-noarch",
+ builderNames=["all"],
+ treeStableTimer=None,
+ change_filter=util.ChangeFilter(project='rpmcheck',
+ category='noarch')))
+
+c['schedulers'].append(JobScheduler(
+ name="jobsched-i386",
+ builderNames=['i386'],
+ treeStableTimer=None,
+ change_filter=util.ChangeFilter(project='rpmcheck',
+ category='i386')))
+
+c['schedulers'].append(JobScheduler(
+ name="jobsched-x86_64",
+ builderNames=['x86_64'],
+ treeStableTimer=None,
+ change_filter=util.ChangeFilter(project='rpmcheck',
+ category='x86_64')))
+
+c['schedulers'].append(schedulers.ForceScheduler(
+ name="force",
+ builderNames=["all", 'x86_64', 'i386']))
+
+c['schedulers'].append(schedulers.ForceScheduler(
+ name="rpmcheck",
+ builderNames=["all", 'x86_64', 'i386'],
+ properties=[
+ util.StringParameter(
+ name='taskname',
+ label='name of check to run',
+ default='',
+ size=256,
+ ),
+ util.StringParameter(
+ name='item',
+ label='object to use',
+ default='',
+ size=256,
+ ),
+ util.StringParameter(
+ name='item_type',
+ label='type of object to use',
+ default='',
+ size=256,
+ ),
+ util.StringParameter(
+ name='uuid',
+ label='UUID of the build in progress',
+ default='',
+ size=256,
+ ),
+ util.StringParameter(
+ name='arch',
+ label='arch of rpm to test',
+ default='x86_64',
+ size=128,
+ ),
+ ]))
+
+
+####### RESOURCE LOCKS
+#
+# This is a set of resource locks to make sure that we don't have too many things
+# going on on each slave at one time.
+
+build_lock = util.WorkerLock("worker_builds",
+ maxCount=1)
+
+
+####### BUILDERS
+
+# The 'builders' list defines the Builders, which tell Buildbot how to perform a build:
+# what steps, and which workers can execute them. Note that any particular build will
+# only take place on one worker.
+
+factory = util.BuildFactory()
+
+
+{% if deployment_type in ['local'] %}
+# clean out /var/tmp/taskotron (see T253)
+factory.addStep(steps.ShellCommand(
+ command="rm -rf /var/tmp/taskotron/*",
+ name="rm_tmp",
+ descriptionDone=['Clean tmp'],
+))
+
+# clean the log (see T230)
+factory.addStep(steps.ShellCommand(
+ command=["rm", "-f", "/var/log/taskotron/taskotron.log"],
+ name="rm_log",
+ descriptionDone=['Clean log'],
+))
+{% endif %}
+
+{% if deployment_type in ['dev', 'stg', 'prod'] %}
+# clean out /var/tmp/taskotron (see T253)
+factory.addStep(steps.ShellCommand(
+ command=util.Interpolate("rm -rf /var/tmp/taskotron/%(prop:workername)s/*"),
+ name="rm_tmp",
+ description='Clean tmp',
+))
+{% endif %}
+
+# check out the source
+factory.addStep(steps.Git(
+ repourl=util.Property('git_repo', default=util.Interpolate('file:///var/lib/git/mirror/fedoraqa/%(prop:taskname)s/')),
+ branch=util.Property('git_branch', default='{{ grokmirror_default_branch }}'),
+ mode='full',
+ method='clobber',
+ shallow=True,
+ descriptionDone='Clone task',
+))
+
+# run the runner
+factory.addStep(steps.ShellCommand(
+ command=['sudo', "runtask",
+ '-i', util.Interpolate('%(prop:item)s'),
+ '-t', util.Interpolate('%(prop:item_type)s'),
+ '-a', util.Interpolate('%(prop:arch)s'),
+ '-j', util.Interpolate('%(prop:buildername)s/%(prop:buildnumber)s'),
+ '--uuid', util.Interpolate('%(prop:uuid)s'),
+ '.',
+ ],
+ description=[
+ util.Interpolate('%(prop:taskname)s on '),
+ util.Interpolate('%(prop:item)s (%(prop:arch)s)')
+ ],
+ name='runtask',
+ timeout=20*60,
+{% if deployment_type in ['dev', 'stg', 'prod'] %}
+ sigtermTime=5*60,
+ lazylogfiles=True,
+ logfiles={
+ 'taskotron.log': {'filename': util.Interpolate('/var/lib/taskotron/artifacts/%(prop:uuid)s/taskotron/taskotron.log')},
+ 'heartbeat.log': {'filename': util.Interpolate('/var/lib/taskotron/artifacts/%(prop:uuid)s/taskotron/heartbeat.log')},
+ },
+{% elif deployment_type in ['local'] %}
+ logfiles={
+ 'taskotron.log': {'filename': '/var/log/taskotron/taskotron.log'},
+ },
+{% endif %}
+))
+
+# make sure minion is removed
+factory.addStep(steps.ShellCommand(
+ command=util.Interpolate('testcloud instance remove --force taskotron-%(prop:uuid)s; true'),
+ description='Remove minion',
+))
+
+# create artifacts dir on master
+factory.addStep(steps.MasterShellCommand(
+ command=["mkdir", '-m', '0755', util.Interpolate('{{ public_artifacts_dir }}/%(prop:uuid)s')],
+ descriptionDone='Create artifacs dir',
+))
+
+# copy artifacts to master
+factory.addStep(steps.DirectoryUpload(
+ workersrc=util.Interpolate('/var/lib/taskotron/artifacts/%(prop:uuid)s/'),
+ masterdest=util.Interpolate('{{ public_artifacts_dir }}/%(prop:uuid)s/'),
+ descriptionDone='Copy artifacts',
+))
+
+# save stdio from runtask step
+# FIXME: worked with buildbot 0.8, later buildbots changed URLs
+# factory.addStep(steps.MasterShellCommand(
+# command=['curl', '-o', util.Interpolate('/srv/taskotron/artifacts/%(prop:uuid)s/taskotron/stdio.log'),
+# util.Interpolate('http://127.0.0.1/taskmaster/builders/%(prop:buildername)s/builds/'
+# '%(prop:buildnumber)s/steps/runtask/logs/stdio/text')
+# ],
+# descriptionDone='Save runtask stdio log',
+# ))
+
+# ensure all artifacts are readable
+factory.addStep(steps.MasterShellCommand(
+ command=['chmod', '-R', 'o+r', util.Interpolate('/srv/taskotron/artifacts/%(prop:uuid)s/')],
+ descriptionDone='Set file permissions',
+))
+
+# gzip artifacts
+factory.addStep(steps.MasterShellCommand(
+ command=util.Interpolate('find {{ public_artifacts_dir }}/%(prop:uuid)s/ -type f -exec gzip {} \;'),
+ descriptionDone='Compress artifacs',
+))
+
+{% if deployment_type in ['local'] %}
+# copy taskotron log to master
+factory.addStep(steps.FileUpload(
+ workersrc='/var/log/taskotron/taskotron.log',
+ masterdest=util.Interpolate('{{ public_artifacts_dir }}/%(prop:uuid)s/taskotron.log'),
+ mode=0644,
+))
+{% endif %}
+
+# render current time when needed
+import datetime
+from buildbot.process.properties import renderer
+
+@renderer
+def today(props):
+ return datetime.datetime.now().strftime("%Y%m%d")
+
+# move the artifacts to the correct dir on the master
+factory.addStep(steps.MasterShellCommand(
+ command=util.Interpolate(
+ 'mkdir -p -m 0755 {{ public_artifacts_dir }}/%(kw:today)s && '
+ 'mkdir -p -m 0755 {{ public_artifacts_dir }}/all && '
+ 'mv {{ public_artifacts_dir }}/%(prop:uuid)s/ {{ public_artifacts_dir }}/%(kw:today)s/ && '
+ 'ln -s {{ public_artifacts_dir }}/%(kw:today)s/%(prop:uuid)s {{ public_artifacts_dir }}/all/',
+ today=today),
+ descriptionDone='Move artifacs',
+))
+
+
+c['builders'] = []
+c['builders'].append(util.BuilderConfig(
+ name="x86_64",
+ workernames=[
+{% for buildslave in x86_64_buildslaves %}
+ "{{ buildslave }}",
+{% endfor %}
+ ],
+ factory=factory,
+ locks=[
+ build_lock.access('counting')
+ ],
+ collapseRequests=False,
+))
+
+c['builders'].append(util.BuilderConfig(
+ name="i386",
+ workernames=[
+{% for buildslave in i386_buildslaves %}
+ "{{ buildslave }}",
+{% endfor %}
+ ],
+ factory=factory,
+ locks=[
+ build_lock.access('counting')
+ ],
+ collapseRequests=False,
+))
+
+c['builders'].append(util.BuilderConfig(
+ name="all",
+ workernames=[
+{% for buildslave in buildslaves %}
+ "{{ buildslave }}",
+{% endfor %}
+ ],
+ factory=factory,
+ locks=[
+ build_lock.access('counting')
+ ],
+ collapseRequests=False,
+))
+
+
+####### BUILDBOT SERVICES
+
+# 'services' is a list of BuildbotService items like reporter targets. The
+# status of each build will be pushed to these targets. buildbot/reporters/*.py
+# has a variety to choose from, like IRC bots.
+
+c['services'] = []
+
+## Email notifications
+
+from buildbot.plugins import reporters
+
+{% raw %}
+email_template = u'''
+
Build status: {{ summary }}
+
+{% for step in build['steps'] if statuses[step.results] in ["warnings", "failure", "exception"] %}
+Step: {{ step['name'] }}: {{ statuses[step['results']] }}
+{% for log in step['logs'] %}
+Last 40 lines of {{ log['name'] }}:
+{# buildbot returns an extra first character for each line (a bug?) denoting its color #}
+
+{% for line in log['content']['content'].split('\n')[-40:] %}{{ line[1:] }}
+{% endfor %}
+
+{% endfor %}
+
+{% endfor %}
+'''
+{% endraw %}
+
+html_message_formatter = reporters.MessageFormatter(
+ template=email_template,
+ template_type='html',
+ wantProperties=True,
+ wantSteps=True,
+ wantLogs=True,
+ ctx=dict(statuses=util.Results),
+)
+
+mn = reporters.MailNotifier(
+ fromaddr='taskotron@fedoraproject.org',
+ sendToInterestedUsers=False,
+ subject="XXX %(projectName)s %(result)s on {{ deployment_type }} %(builder)s",
+ mode=('failing', 'exception', 'warnings'),
+ extraRecipients=['qa-taskotron-admin-members@fedoraproject.org'],
+ relayhost="bastion.phx2.fedoraproject.org",
+ messageFormatter=html_message_formatter)
+
+c['services'].append(mn)
+
+## ExecDB's push-notifications
+
+sp = reporters.HttpStatusPush(
+ serverUrl="{{ execdb_statuspush }}",
+ wantProperties=True,
+ wantSteps=True,
+)
+c['services'].append(sp)
+
+
+####### PROJECT IDENTITY
+
+# the 'title' string will appear at the top of this buildbot installation's
+# home pages (linked to the 'titleURL').
+
+c['title'] = "Taskotron"
+c['titleURL'] = "http://{{ external_hostname }}/{{buildmaster_endpoint}}/"
+
+# the 'buildbotURL' string should point to the location where the buildbot's
+# internal web server is visible. This typically uses the port number set in
+# the 'www' entry below, but with an externally-visible host name which the
+# buildbot cannot figure out without some help.
+
+c['buildbotURL'] = "http://{{ external_hostname }}/{{buildmaster_endpoint}}/"
+
+
+####### WEB
+
+c['www'] = {
+ 'port': 8010,
+ 'plugins': {
+ 'waterfall_view': {},
+ 'console_view': {},
+ 'grid_view': {},
+ },
+ 'change_hook_dialects': {
+ 'base': True,
+ },
+ 'auth': util.UserPasswordAuth({
+{% if deployment_type == 'dev' %}
+ "{{ dev_buildbot_user }}": "{{ dev_buildbot_password }}",
+{% elif deployment_type == 'stg' %}
+ "{{ stg_buildbot_user }}": "{{ stg_buildbot_password }}",
+{% elif deployment_type == 'prod' %}
+ "{{ prod_buildbot_user }}": "{{ prod_buildbot_password }}",
+{% elif deployment_type == 'local' %}
+ "{{ local_buildbot_user }}": "{{ local_buildbot_password }}",
+{% endif %}
+ }),
+}
+
+
+####### DB URL
+
+c['db'] = {
+ # This specifies what database buildbot uses to store its state.
+{% if deployment_type in ['dev', 'stg', 'prod'] %}
+ 'db_url' : "postgresql://{{ buildmaster_db_user }}:{{ buildmaster_db_password }}@{{ buildmaster_db_host }}/{{ buildmaster_db_name }}",
+{% elif deployment_type == 'local' %}
+ 'db_url' : "postgresql://{{ local_buildmaster_db_user }}:{{ local_buildmaster_db_password }}@127.0.0.1/{{ buildmaster_db_name }}",
+{% endif %}
+}
+
+# TODO: REMOVE THIS
+c['db'] = {
+ 'db_url' : "sqlite:///state.sqlite",
+}
diff --git a/roles/taskotron/buildmaster/tasks/main.yml b/roles/taskotron/buildmaster/tasks/main.yml
index e268919177..461bbc1ea8 100644
--- a/roles/taskotron/buildmaster/tasks/main.yml
+++ b/roles/taskotron/buildmaster/tasks/main.yml
@@ -2,17 +2,20 @@
- name: start httpd (provided in the apache role)
service: name=httpd state=started
-- name: ensure packages required for buildmaster are installed (yum)
- package: name={{ item }} state=present
+- name: ensure packages required for buildmaster are installed
+ dnf: name={{ item }} state=present
with_items:
- - buildbot
- buildbot-master
- - libsemanage-python
- - python-psycopg2
+ - buildbot-www
+ - python2-libsemanage
+ - python3-psycopg2
- policycoreutils-python-utils
- when: ansible_distribution_major_version|int < 22
+ - python3-treq
+ when: ansible_cmdline.ostree is not defined and deployment_type in ['dev']
-- name: ensure packages required for buildmaster are installed (dnf)
+###########
+## TODO: remove when transition to buildbot 1.7 is complete
+- name: ensure packages required for buildmaster are installed
dnf: name={{ item }} state=present
with_items:
- buildbot
@@ -20,17 +23,12 @@
- libsemanage-python
- python-psycopg2
- policycoreutils-python-utils
- when: ansible_distribution_major_version|int > 21 and ansible_cmdline.ostree is not defined
-
-- name: ensure additional packages required for CI buildmaster are installed
- package: name={{ item }} state=present
- when: ansible_distribution_major_version|int < 22 and (deployment_type == 'qa-prod' or deployment_type == 'qa-stg')
- with_items:
- - python-novaclient
+ when: ansible_cmdline.ostree is not defined and deployment_type in ['stg', 'prod']
+############
- name: ensure additional packages required for CI buildmaster are installed
dnf: name={{ item }} state=present
- when: ansible_distribution_major_version|int > 21 and (deployment_type == 'qa-prod' or deployment_type == 'qa-stg')
+ when: deployment_type in ['qa-prod', 'qa-stg']
with_items:
- python-novaclient
@@ -50,7 +48,7 @@
when: deployment_type in ['qa-stg']
- name: ensure correct fcontext for buildmaster home (new)
- file: path="{{ buildmaster_home }}(/. *)?" setype=var_lib_t owner=buildmaster group=buildmaster mode=0775 state=directory
+ file: path="{{ buildmaster_home }}" setype=var_lib_t owner=buildmaster group=buildmaster mode=0775 state=directory
when: deployment_type in ['dev', 'stg', 'prod']
#- name: make sure the selinux fcontext is restored
@@ -65,6 +63,12 @@
notify:
- reload httpd
+- name: ensure postgresql service is running
+ systemd:
+ name: postgresql
+ state: started
+ enabled: true
+
- name: ensure buildmaster database is created
when: buildmaster_db_host != 'localhost'
delegate_to: "{{ buildmaster_db_host }}"
diff --git a/roles/taskotron/buildmaster/templates/buildmaster.conf.j2 b/roles/taskotron/buildmaster/templates/buildmaster.conf.j2
index 1b9a8ece3e..91f4f91561 100644
--- a/roles/taskotron/buildmaster/templates/buildmaster.conf.j2
+++ b/roles/taskotron/buildmaster/templates/buildmaster.conf.j2
@@ -1,4 +1,13 @@
- ProxyPass http://127.0.0.1:8010/
- ProxyPassReverse http://127.0.0.1:8010/
+ ProxyPass "http://127.0.0.1:8010/"
+ ProxyPassReverse "http://127.0.0.1:8010/"
+
+ ProxyPreserveHost On
+
+
+
+ ProxyPass "ws://127.0.0.1:8010/ws"
+ ProxyPassReverse "ws://127.0.0.1:8010/ws"
+
+ ProxyPreserveHost On
diff --git a/roles/taskotron/buildslave-configure/defaults/main.yml b/roles/taskotron/buildslave-configure/defaults/main.yml
index cef18a0093..856b9a3e57 100644
--- a/roles/taskotron/buildslave-configure/defaults/main.yml
+++ b/roles/taskotron/buildslave-configure/defaults/main.yml
@@ -1,2 +1,6 @@
---
taskotron_admin_email: root@localhost.localdomain
+slaves:
+ - user: ""
+ home: ""
+ dir: ""
diff --git a/roles/taskotron/buildslave-configure/tasks/main.yml b/roles/taskotron/buildslave-configure/tasks/main.yml
index 70dd61458a..3e42b5ee32 100644
--- a/roles/taskotron/buildslave-configure/tasks/main.yml
+++ b/roles/taskotron/buildslave-configure/tasks/main.yml
@@ -7,7 +7,10 @@
- name: generate slave config
become: true
become_user: "{{ slave_user }}"
- template: src=buildbot.tac.j2 dest={{ slave_dir }}/buildbot.tac mode=0600 owner={{ slave_user }} group={{ slave_user }}
+ template: src={{ item }} dest={{ slave_dir }}/buildbot.tac mode=0600 owner={{ slave_user }} group={{ slave_user }}
+ with_first_found:
+ - 'buildbot.tac.j2.{{ deployment_type }}'
+ - buildbot.tac.j2
when: deployment_type in ['local', 'qa-stg']
- name: generate slave info
@@ -37,7 +40,10 @@
lineinfile: dest=/home/{{ slave_user }}/.ssh/known_hosts regexp='{{ buildmaster }}' line='{{ buildmaster }} {{ buildmaster_pubkey }}' create=yes owner={{ slave_user }} group={{ slave_user }}
- name: generate buildslave service file
- template: src=buildslave.service.j2 dest=/lib/systemd/system/buildslave.service owner=root group=root mode=0744
+ template: src={{ item }} dest=/lib/systemd/system/buildslave.service owner=root group=root mode=0744
+ with_first_found:
+ - 'buildslave.service.j2.{{ deployment_type }}'
+ - buildslave.service.j2
when: deployment_type in ['local', 'qa-stg']
register: buildslave_service
@@ -49,20 +55,38 @@
service: name=buildslave enabled=yes state={{ (buildslave_service.changed) | ternary('restarted','started') }}
when: deployment_type in ['local', 'qa-stg']
+- name: create slave
+ become: true
+ become_user: '{{ item.user }}'
+ command: creates={{ item.dir }} buildbot-worker create-worker {{ item.dir }} {{ buildmaster }} buildslave passwd
+ with_items:
+ - '{{ slaves }}'
+ when: deployment_type in ['dev']
+
+###########
+## TODO: remove when transition to buildbot 1.7 is complete
- name: create slave
become: true
become_user: '{{ item.user }}'
command: creates={{ item.dir }} buildslave create-slave {{ item.dir }} {{ buildmaster }} buildslave passwd
with_items:
- '{{ slaves|default([dict(user="", home="", dir="")]) }}'
- when: deployment_type in ['dev', 'stg', 'prod']
+ when: deployment_type in ['stg', 'prod']
+############
+
+- name: figure out which buildbot.tac.j2 file to use
+ set_fact: buildbot_tac_j2_file={{ item | basename }}
+ # this unfortunately searches in files/
+ with_first_found:
+ - '../templates/buildbot.tac.j2.{{ deployment_type }}'
+ - '../templates/buildbot.tac.j2'
- name: generate slave config
become: true
become_user: '{{ item.user }}'
- template: src=buildbot.tac.j2 dest={{ item.dir }}/buildbot.tac mode=0600 owner={{ item.user }} group={{ slaves_group }}
+ template: src={{ buildbot_tac_j2_file }} dest={{ item.dir }}/buildbot.tac mode=0600 owner={{ item.user }} group={{ slaves_group }}
with_items:
- - '{{ slaves|default([dict(user="", home="", dir="")]) }}'
+ - '{{ slaves }}'
when: deployment_type in ['dev', 'stg', 'prod']
- name: generate slave admin info
@@ -70,7 +94,7 @@
become_user: '{{ item.user }}'
template: src=admin.j2 dest={{ item.dir }}/info/admin mode=0644 owner={{ item.user }} group={{ slaves_group }}
with_items:
- - '{{ slaves|default([dict(user="", home="", dir="")]) }}'
+ - '{{ slaves }}'
when: deployment_type in ['dev', 'stg', 'prod']
- name: generate slave host info
@@ -78,41 +102,44 @@
become_user: '{{ item.user }}'
template: src=host.j2 dest={{ item.dir }}/info/host mode=0644 owner={{ item.user }} group={{ slaves_group }}
with_items:
- - '{{ slaves|default([dict(user="", home="", dir="")]) }}'
+ - '{{ slaves }}'
when: deployment_type in ['dev', 'stg', 'prod']
- name: create slave ssh directory
file: path={{ item.home }}/.ssh owner={{ item.user }} group={{ slaves_group }} mode=0700 state=directory
with_items:
- - '{{ slaves|default([dict(user="", home="", dir="")]) }}'
+ - '{{ slaves }}'
when: buildslave_public_sshkey_file is defined and deployment_type in ['dev', 'stg', 'prod']
- name: install slave ssh private key
copy: src={{ private }}/files/taskotron/{{ buildslave_private_sshkey_file }} dest={{ item.home }}/.ssh/id_rsa owner={{ item.user }} group={{ slaves_group }} mode=0600
with_items:
- - '{{ slaves|default([dict(user="", home="", dir="")]) }}'
+ - '{{ slaves }}'
when: buildslave_private_sshkey_file is defined and deployment_type in ['dev', 'stg', 'prod']
- name: install slave ssh public key
copy: src={{ private }}/files/taskotron/{{ buildslave_public_sshkey_file }} dest={{ item.home }}/.ssh/id_rsa.pub owner={{ item.user }} group={{ slaves_group }} mode=0644
with_items:
- - '{{ slaves|default([dict(user="", home="", dir="")]) }}'
+ - '{{ slaves }}'
when: buildslave_public_sshkey_file is defined and deployment_type in ['dev', 'stg', 'prod']
- name: make sure master is in known_hosts
lineinfile: dest={{ item.home }}/.ssh/known_hosts regexp='{{ buildmaster }}' line='{{ buildmaster }} {{ buildmaster_pubkey }}' create=yes owner={{ item.user }} group={{ slaves_group }}
with_items:
- - '{{ slaves|default([dict(user="", home="", dir="")]) }}'
+ - '{{ slaves }}'
when: buildslave_public_sshkey_file is defined and deployment_type in ['dev', 'stg', 'prod']
- name: ensure correct fcontext for buildslave dir
file: path={{ item.home }}/slave setype=var_lib_t owner={{ item.user }} group={{ slaves_group }} mode=0700 state=directory
with_items:
- - '{{ slaves|default([dict(user="", home="", dir="")]) }}'
+ - '{{ slaves }}'
when: deployment_type in ['dev', 'stg', 'prod']
- name: generate buildslave service file
- template: src=buildslave@.service.j2 dest=/lib/systemd/system/buildslave@.service owner=root group=root mode=0644
+ template: src={{ item }} dest=/lib/systemd/system/buildslave@.service owner=root group=root mode=0644
+ with_first_found:
+ - 'buildslave@.service.j2.{{ deployment_type }}'
+ - buildslave@.service.j2
when: deployment_type in ['dev', 'stg', 'prod']
register: buildslave_service
@@ -123,5 +150,5 @@
- name: start and enable buildslave services
service: name=buildslave@{{ item.user }} enabled=yes state={{ (buildslave_service.changed) | ternary('restarted','started') }}
with_items:
- - '{{ slaves|default([dict(user="", home="", dir="")]) }}'
+ - '{{ slaves }}'
when: deployment_type in ['dev', 'stg', 'prod']
diff --git a/roles/taskotron/buildslave-configure/templates/buildbot.tac.j2.dev b/roles/taskotron/buildslave-configure/templates/buildbot.tac.j2.dev
new file mode 100644
index 0000000000..d2e9cd84b8
--- /dev/null
+++ b/roles/taskotron/buildslave-configure/templates/buildbot.tac.j2.dev
@@ -0,0 +1,53 @@
+
+import os
+
+from buildbot_worker.bot import Worker
+from twisted.application import service
+
+{% if deployment_type in ['local', 'qa-stg'] %}
+basedir = '/home/buildslave/slave'
+{% endif %}
+{% if deployment_type in ['dev', 'stg', 'prod'] %}
+basedir = '{{ item.dir }}'
+{% endif %}
+rotateLength = 10000000
+maxRotatedFiles = 10
+
+# if this is a relocatable tac file, get the directory containing the TAC
+if basedir == '.':
+ import os.path
+ basedir = os.path.abspath(os.path.dirname(__file__))
+
+# note: this line is matched against to check that this is a worker
+# directory; do not edit it.
+application = service.Application('buildbot-worker')
+
+from twisted.python.logfile import LogFile
+from twisted.python.log import ILogObserver, FileLogObserver
+logfile = LogFile.fromFullPath(
+ os.path.join(basedir, "twistd.log"), rotateLength=rotateLength,
+ maxRotatedFiles=maxRotatedFiles)
+application.setComponent(ILogObserver, FileLogObserver(logfile).emit)
+
+buildmaster_host = '{{ buildmaster }}'
+port = 9989
+{% if deployment_type in ['local', 'qa-stg', 'qa-prod'] %}
+workername = '{{ buildslave_name }}'
+passwd = '{{ buildslave_password }}'
+{% endif %}
+{% if deployment_type in ['dev', 'stg', 'prod'] %}
+workername = '{{ item.user }}'
+passwd = '{{ buildslave_password }}'
+{% endif %}
+keepalive = 600
+umask = 0o0022
+maxdelay = 300
+numcpus = None
+allow_shutdown = None
+maxretries = None
+
+s = Worker(buildmaster_host, port, workername, passwd, basedir,
+ keepalive, umask=umask, maxdelay=maxdelay,
+ numcpus=numcpus, allow_shutdown=allow_shutdown,
+ maxRetries=maxretries)
+s.setServiceParent(application)
diff --git a/roles/taskotron/buildslave-configure/templates/buildslave.service.j2.dev b/roles/taskotron/buildslave-configure/templates/buildslave.service.j2.dev
new file mode 100644
index 0000000000..5bd5e5e431
--- /dev/null
+++ b/roles/taskotron/buildslave-configure/templates/buildslave.service.j2.dev
@@ -0,0 +1,15 @@
+[Unit]
+Description=Buildslave for taskbot
+After=network.target
+
+[Service]
+Type=forking
+# disabled because of https://pagure.io/taskotron/issue/236
+#PIDFile=/home/buildslave/slave/twistd.pid
+ExecStart=/usr/bin/buildbot-worker start /home/buildslave/slave/
+ExecStop=/usr/bin/buildbot-worker stop /home/buildslave/slave/
+User=buildslave
+Group=buildslave
+
+[Install]
+WantedBy=multi-user.target
diff --git a/roles/taskotron/buildslave-configure/templates/buildslave@.service.j2.dev b/roles/taskotron/buildslave-configure/templates/buildslave@.service.j2.dev
new file mode 100644
index 0000000000..0e35661fb5
--- /dev/null
+++ b/roles/taskotron/buildslave-configure/templates/buildslave@.service.j2.dev
@@ -0,0 +1,15 @@
+[Unit]
+Description=Buildslave for taskotron
+After=network.target
+
+[Service]
+Type=forking
+# disabled because of https://pagure.io/taskotron/issue/236
+#PIDFile=/home/%i/slave/twistd.pid
+ExecStart=/usr/bin/buildbot-worker start /srv/buildslaves/%i/slave/
+ExecStop=/usr/bin/buildbot-worker stop /srv/buildslaves/%i/slave/
+User=%i
+Group={{ slaves_group }}
+
+[Install]
+WantedBy=multi-user.target
diff --git a/roles/taskotron/buildslave/tasks/main.yml b/roles/taskotron/buildslave/tasks/main.yml
index 12cff17fbf..ff5b6701b6 100644
--- a/roles/taskotron/buildslave/tasks/main.yml
+++ b/roles/taskotron/buildslave/tasks/main.yml
@@ -1,9 +1,33 @@
---
-- name: ensure packages required for buildslave are installed (dnf)
+- name: ensure packages required for buildslave are installed
+ dnf: name={{ item }} state=present
+ with_items:
+ - buildbot-worker
+ - git
+ - policycoreutils-python-utils
+ when: ansible_cmdline.ostree is not defined and deployment_type in ['dev']
+
+###########
+## TODO: remove when transition to buildbot 1.7 is complete
+- name: ensure packages required for buildslave are installed
dnf: name={{ item }} state=present
with_items:
- buildbot-slave
- git
+ - policycoreutils-python-utils
+ when: ansible_cmdline.ostree is not defined and deployment_type in ['stg', 'prod']
+############
+
+- name: ensure packages required for CI buildslave are installed
+ dnf: name={{ item }} state=present
+ with_items:
+ - testcloud
+ - mash
+ - mock
+ - koji
+ - python-fedora
+ - python-doit
+ - python2-rpmfluff
- rpmlint
- koji
- bodhi-client
@@ -14,20 +38,7 @@
- pylint
- python-pep8
- moreutils
- - policycoreutils-python-utils
- when: ansible_distribution_major_version|int > 21 and ansible_cmdline.ostree is not defined
-
-- name: ensure packages required for CI buildslave are installed (dnf)
- dnf: name={{ item }} state=present
- with_items:
- - testcloud
- - mash
- - mock
- - koji
- - python-fedora
- - python-doit
- - python2-rpmfluff
- when: (deployment_type == 'qa-stg') and (ansible_distribution_major_version|int > 21) and (ansible_cmdline.ostree is not defined)
+ when: (deployment_type in ['qa-stg']) and (ansible_cmdline.ostree is not defined)
- name: set the selinux fcontext type for the buildmaster_home to var_lib_t
command: semanage fcontext -a -t var_lib_t "{{ slave_dir }}(/.*)?"
@@ -52,6 +63,13 @@
group: name={{ slaves_group }}
when: slaves_group is defined and (deployment_type in ['dev', 'stg', 'prod'])
+- name: create buildslaves home
+ file:
+ path: "{{ buildslaves_home }}"
+ state: directory
+ mode: 0755
+ when: slaves is defined and (deployment_type in ['dev', 'stg', 'prod'])
+
- name: add buildslave users
user: name={{ item.user }} group={{ slaves_group }} groups=testcloud,taskotron home={{ item.home }}
with_items: "{{ slaves }}"
@@ -63,13 +81,13 @@
when: slaves is defined and deployment_type in ['qa-prod', 'qa-stg']
- name: make sure the selinux fcontext is restored
- command: restorecon -R "{{ item.dir }}"
+ command: restorecon -R "{{ item.home }}"
with_items: "{{ slaves }}"
when: slaves is defined and deployment_type in ['dev', 'stg', 'prod', 'qa-prod', 'qa-stg']
- name: disable ansible host key checking
lineinfile:
dest: /etc/ansible/ansible.cfg
- regexp: '^#host_key_checking = False$'
+ regexp: '^#?host_key_checking = False$'
line: 'host_key_checking = False'
when: deployment_type in ['dev']
diff --git a/roles/taskotron/execdb/tasks/main.yml b/roles/taskotron/execdb/tasks/main.yml
index cb67845642..86572bf1b8 100644
--- a/roles/taskotron/execdb/tasks/main.yml
+++ b/roles/taskotron/execdb/tasks/main.yml
@@ -2,15 +2,17 @@
- name: start httpd (provided in the apache role)
service: name=httpd state=started
-- name: ensure packages required for execdb are installed (yum)
- package: name={{ item }} state=present
+- name: ensure packages required for execdb are installed (dnf)
+ dnf: name={{ item }} state=present
with_items:
- execdb
- - mod_wsgi
- - python-psycopg2
- - libsemanage-python
- when: ansible_distribution_major_version|int < 22
+ - python3-mod_wsgi
+ - python3-psycopg2
+ - python2-libsemanage
+ when: ansible_cmdline.ostree is not defined and deployment_type in ['dev']
+###########
+## TODO: remove when transition to buildbot 1.7 is complete
- name: ensure packages required for execdb are installed (dnf)
dnf: name={{ item }} state=present
with_items:
@@ -18,7 +20,8 @@
- mod_wsgi
- python-psycopg2
- libsemanage-python
- when: ansible_distribution_major_version|int > 21 and ansible_cmdline.ostree is not defined
+ when: ansible_cmdline.ostree is not defined and deployment_type in ['stg', 'prod']
+###########
- name: ensure database is created
delegate_to: "{{ execdb_db_host_machine }}"
diff --git a/roles/taskotron/resultsdb-backend/tasks/main.yml b/roles/taskotron/resultsdb-backend/tasks/main.yml
index 947957e5e7..9fbf6cdcac 100644
--- a/roles/taskotron/resultsdb-backend/tasks/main.yml
+++ b/roles/taskotron/resultsdb-backend/tasks/main.yml
@@ -2,23 +2,26 @@
- name: start httpd (provided in the apache role)
service: name=httpd state=started
-- name: ensure packages required for resultsdb are installed (yum)
- package: name={{ item }} state=present
- when: ansible_distribution_major_version|int < 22
- with_items:
- - resultsdb
- - mod_wsgi
- - python-psycopg2
- - libsemanage-python
-
- name: ensure packages required for resultsdb are installed (dnf)
dnf: name={{ item }} state=present
- when: ansible_distribution_major_version|int > 21 and ansible_cmdline.ostree is not defined
+ with_items:
+ - resultsdb
+ - python3-mod_wsgi
+ - python3-psycopg2
+ - python2-libsemanage
+ when: ansible_cmdline.ostree is not defined and deployment_type in ['dev']
+
+###########
+## TODO: remove when transition to buildbot 1.7 is complete
+- name: ensure packages required for resultsdb are installed (dnf)
+ dnf: name={{ item }} state=present
with_items:
- resultsdb
- mod_wsgi
- python-psycopg2
- libsemanage-python
+ when: ansible_cmdline.ostree is not defined and deployment_type in ['stg', 'prod']
+###########
- name: ensure database is created
delegate_to: "{{ resultsdb_db_host_machine }}"
diff --git a/roles/taskotron/resultsdb-frontend/tasks/main.yml b/roles/taskotron/resultsdb-frontend/tasks/main.yml
index e12555e6d3..aef3841365 100644
--- a/roles/taskotron/resultsdb-frontend/tasks/main.yml
+++ b/roles/taskotron/resultsdb-frontend/tasks/main.yml
@@ -2,19 +2,22 @@
- name: start httpd (provided in the apache role)
service: name=httpd state=started
-- name: ensure packages required for resultsdb_frontend are installed (yum)
- package: name={{ item }} state=present
- when: ansible_distribution_major_version|int < 22
- with_items:
- - resultsdb_frontend
- - mod_wsgi
-
+- name: ensure packages required for resultsdb_frontend are installed (dnf)
+ dnf: name={{ item }} state=present
+ with_items:
+ - resultsdb_frontend
+ - python3-mod_wsgi
+ when: ansible_cmdline.ostree is not defined and and deployment_type in ['dev']
+
+###########
+## TODO: remove when transition to buildbot 1.7 is complete
- name: ensure packages required for resultsdb_frontend are installed (dnf)
dnf: name={{ item }} state=present
with_items:
- resultsdb_frontend
- mod_wsgi
- when: ansible_distribution_major_version|int > 21 and ansible_cmdline.ostree is not defined
+ when: ansible_cmdline.ostree is not defined and deployment_type in ['stg', 'prod']
+###########
- name: ensure selinux lets httpd talk to the network
seboolean: name=httpd_can_network_connect persistent=yes state=yes
diff --git a/roles/taskotron/taskotron-client/tasks/main.yml b/roles/taskotron/taskotron-client/tasks/main.yml
index 171d4ffb80..04b9179731 100644
--- a/roles/taskotron/taskotron-client/tasks/main.yml
+++ b/roles/taskotron/taskotron-client/tasks/main.yml
@@ -1,12 +1,12 @@
---
-- name: ensure packages required for libtaskotron are installed (yum)
- package: name={{ item }} state=present
+- name: ensure packages required for libtaskotron are installed
+ dnf: name={{ item }} state=present
with_items:
- PyYAML
- libtaskotron
when: deployment_type == 'local'
-- name: ensure packages required for libtaskotron are installed (dnf)
+- name: ensure packages required for libtaskotron are installed
dnf: name={{ item }} state=present
with_items:
- PyYAML
@@ -15,21 +15,13 @@
- selinux-policy-devel
when: deployment_type in ['dev', 'stg', 'prod']
-- name: ensure packages required for taskotron tasks are installed (yum)
- package: name={{ item }} state=present
- with_items:
- - python-solv
- - python-librepo
- - rpmlint
- when: ansible_distribution_major_version|int < 22
-
-- name: ensure packages required for taskotron tasks are installed (dnf)
+- name: ensure packages required for taskotron tasks are installed
dnf: name={{ item }} state=present
with_items:
- python-solv
- python-librepo
- rpmlint
- when: ansible_distribution_major_version|int > 21 and ansible_cmdline.ostree is not defined
+ when: ansible_cmdline.ostree is not defined
- name: generate taskotron.yaml config file
template: src={{ item }} dest=/etc/taskotron/taskotron.yaml owner=root group=root mode=0644
@@ -109,16 +101,11 @@
command: chdir=/root/ semodule -i /root/service-virt-transition.pp
when: deployment_type in ['dev', 'stg', 'prod']
-- name: enable libvirtd
- service: name=libvirtd state=started enabled=yes
- when: ansible_distribution_major_version|int < 24
-
- name: start and enable libvirt services
service: name={{ item }} state=started enabled=yes
with_items:
- libvirtd
- virtlogd
- when: ansible_distribution_major_version|int >= 24
- name: copy custom libvirt network config
copy: src=default.xml dest=/etc/libvirt/qemu/networks/default.xml owner=root group=root mode=0600
diff --git a/roles/taskotron/taskotron-trigger/tasks/main.yml b/roles/taskotron/taskotron-trigger/tasks/main.yml
index aa67c3119b..5a7914464f 100644
--- a/roles/taskotron/taskotron-trigger/tasks/main.yml
+++ b/roles/taskotron/taskotron-trigger/tasks/main.yml
@@ -1,23 +1,13 @@
---
-- name: ensure packages required for taskotron-trigger are installed (yum)
- package: name={{ item }} state=present
- with_items:
- - fedmsg
- - fedmsg-hub
- - taskotron-trigger
- # needed for cron script
- - python-resultsdb_api
- when: ansible_distribution_major_version|int < 22
-
-- name: ensure packages required for taskotron-trigger are installed (dnf)
+- name: ensure packages required for taskotron-trigger are installed
dnf: name={{ item }} state=present
with_items:
- fedmsg
- fedmsg-hub
- taskotron-trigger
- # needed for cron script
- - python2-resultsdb_api
- when: ansible_distribution_major_version|int > 21 and ansible_cmdline.ostree is not defined
+ - python2-resultsdb_api # TODO: remove when transition to buildbot 1.7 is complete
+ - python3-resultsdb_api
+ when: ansible_cmdline.ostree is not defined
- name: generate trigger configuration
template: src={{ item }} dest=/etc/taskotron/trigger.cfg owner=root group=root mode=0744
@@ -25,7 +15,20 @@
- trigger.cfg.j2.{{ deployment_type }}
- trigger.cfg.j2
notify:
- - restart fedmsg-hub
+ - restart fedmsg-hub-3
+ when: deployment_type in ['dev']
+
+###########
+## TODO: remove when transition to buildbot 1.7 is complete
+- name: generate trigger configuration
+ template: src={{ item }} dest=/etc/taskotron/trigger.cfg owner=root group=root mode=0744
+ with_first_found:
+ - trigger.cfg.j2.{{ deployment_type }}
+ - trigger.cfg.j2
+ notify:
+ - restart fedmsg-hub
+ when: deployment_type in ['stg', 'prod']
+###########
- name: generate trigger rules
template: src={{ item }} dest=/etc/taskotron/trigger_rules.yml owner=root group=root mode=0744
@@ -33,12 +36,35 @@
- trigger_rules.yml.j2.{{ deployment_type }}
- trigger_rules.yml.j2
notify:
- - restart fedmsg-hub
+ - restart fedmsg-hub-3
+ when: deployment_type in ['dev']
+
+###########
+## TODO: remove when transition to buildbot 1.7 is complete
+- name: generate trigger rules
+ template: src={{ item }} dest=/etc/taskotron/trigger_rules.yml owner=root group=root mode=0744
+ with_first_found:
+ - trigger_rules.yml.j2.{{ deployment_type }}
+ - trigger_rules.yml.j2
+ notify:
+ - restart fedmsg-hub
+ when: deployment_type in ['stg', 'prod']
+#########
- name: copy fedmsg logging configuration
copy: src=logging.py dest=/etc/fedmsg.d/logging.py owner=root group=root mode=0744
notify:
- - restart fedmsg-hub
+ - restart fedmsg-hub-3
+ when: deployment_type in ['dev']
+
+###########
+## TODO: remove when transition to buildbot 1.7 is complete
+- name: copy fedmsg logging configuration
+ copy: src=logging.py dest=/etc/fedmsg.d/logging.py owner=root group=root mode=0744
+ notify:
+ - restart fedmsg-hub
+ when: deployment_type in ['stg', 'prod']
+###########
- name: install fetch_activity
copy: src=fetch_activity.py dest=/root/fetch_activity.py owner=root group=root mode=0644
@@ -54,5 +80,13 @@
- name: copy tmpfiles.d for trigger distgit cache
template: src=tmpfiles.d.trigger.conf.j2 dest=/etc/tmpfiles.d/trigger.conf owner=root group=root mode=0644
+- name: start and enable fedmsg-hub-3 service
+ service: name=fedmsg-hub-3 enabled=yes state=started
+ when: deployment_type in ['dev']
+
+###########
+## TODO: remove when transition to buildbot 1.7 is complete
- name: start and enable fedmsg-hub service
service: name=fedmsg-hub enabled=yes state=started
+ when: deployment_type in ['stg', 'prod']
+###########
diff --git a/roles/taskotron/taskotron-trigger/templates/trigger.cfg.j2 b/roles/taskotron/taskotron-trigger/templates/trigger.cfg.j2
index bc5823cf8f..411d650343 100644
--- a/roles/taskotron/taskotron-trigger/templates/trigger.cfg.j2
+++ b/roles/taskotron/taskotron-trigger/templates/trigger.cfg.j2
@@ -21,4 +21,3 @@ deployment_type = stg
[koji_build_completed]
; critpath_filepath = {{ trigger_critpath_file }}
critpath_filepath =
-
diff --git a/roles/taskotron/taskotron-trigger/templates/trigger.cfg.j2.dev b/roles/taskotron/taskotron-trigger/templates/trigger.cfg.j2.dev
new file mode 100644
index 0000000000..fd28318429
--- /dev/null
+++ b/roles/taskotron/taskotron-trigger/templates/trigger.cfg.j2.dev
@@ -0,0 +1,23 @@
+[buildbot]
+url = http://127.0.0.1:8010/change_hook
+
+[trigger]
+valid_arches = x86_64,armhfp
+koji_url = http://koji.fedoraproject.org/kojihub
+datagrepper_url = https://apps.fedoraproject.org/datagrepper/raw
+execdb_server = {{ execdb_server }}
+runner_type = BuildbotRunner
+job_logging = True
+joblog_file = {{ trigger_joblog_file }}
+fuse_delay = 900 ; 15 minutes in seconds
+git_cache_dir = {{ trigger_cache_dir }}
+rules_template = {{ trigger_rules_template_path }}
+{# enable this if you want taskotron-stg to react to just stg fedmsgs
+{% if deployment_type in ['stg'] %}
+deployment_type = stg
+{% endif%}
+#}
+
+[koji_build_completed]
+; critpath_filepath = {{ trigger_critpath_file }}
+critpath_filepath =
diff --git a/roles/taskotron/vault/tasks/main.yml b/roles/taskotron/vault/tasks/main.yml
index 3420397143..1934e1d4f3 100644
--- a/roles/taskotron/vault/tasks/main.yml
+++ b/roles/taskotron/vault/tasks/main.yml
@@ -2,15 +2,17 @@
- name: start httpd (provided in the apache role)
service: name=httpd state=started
-- name: ensure packages required for vault are installed (yum)
- package: name={{ item }} state=present
+- name: ensure packages required for vault are installed (dnf)
+ dnf: name={{ item }} state=present
with_items:
- vault
- - mod_wsgi
- - python-psycopg2
- - libsemanage-python
- when: ansible_distribution_major_version|int < 22
+ - python3-mod_wsgi
+ - python3-psycopg2
+ - python2-libsemanage
+ when: ansible_cmdline.ostree is not defined and deployment_type in ['dev']
+###########
+## TODO: remove when transition to buildbot 1.7 is complete
- name: ensure packages required for vault are installed (dnf)
dnf: name={{ item }} state=present
with_items:
@@ -18,7 +20,8 @@
- mod_wsgi
- python-psycopg2
- libsemanage-python
- when: ansible_distribution_major_version|int > 21 and ansible_cmdline.ostree is not defined
+ when: ansible_cmdline.ostree is not defined and deployment_type in ['stg', 'prod']
+###########
- name: ensure database is created
delegate_to: "{{ vault_db_host_machine }}"