2017-07-04 17:46:17 -07:00
---
- name : Configure a Buildbot worker for Zcash CI
hosts : zcash-ci-worker-unix
become : true
gather_facts : False
2017-07-10 08:30:23 -07:00
vars_files :
- vars/default.yml
2017-07-10 09:08:36 -07:00
- vars/buildbot.yml
vars_prompt :
- name : "buildbot_worker_admin"
prompt : "Admin details"
default : "Zcash <sysadmin@z.cash>"
- name : "buildbot_worker_name"
prompt : "Buildbot worker name (provided by ZECC)"
private : no
- name : "buildbot_worker_password"
prompt : "Buildbot worker password (provided by ZECC)"
2017-07-10 08:30:23 -07:00
2017-07-04 17:46:17 -07:00
pre_tasks :
2017-07-10 08:30:23 -07:00
- name : Install Python 2 for Ansible and Buildbot
raw : test -e /usr/bin/python || test -e /usr/bin/python2 || test -e /usr/bin/python2.7 || test -e /usr/local/bin/python2.7 || (test -e /usr/bin/apt && apt -qqy update && apt install -qqy python) || (test -e /usr/bin/dnf && dnf install -qqy python2) || (test -e /usr/sbin/pkg && pkg install -qqy python2)
2017-07-04 17:46:17 -07:00
register : output
changed_when :
- output.stdout != ""
- output.stdout != "\r\n"
2017-07-10 08:30:23 -07:00
- name : Check if Python is in the configured location
raw : test -e {{ ansible_python_interpreter }}
2017-07-04 17:46:17 -07:00
ignore_errors : true
2017-07-10 08:30:23 -07:00
register : python_check
when : ansible_python_interpreter is defined
- name : Fail if configured Python is unavailable
fail :
msg : Python is not accessible at {{ ansible_python_interpreter }} on this host! Please set the inventory variable 'ansible_python_interpreter' to the location of the Python 2 binary.
when : ansible_python_interpreter is defined and python_check.rc == 1
- name : Check if Python is in the default location
raw : test -e /usr/bin/python
ignore_errors : true
register : python_check
when : ansible_python_interpreter is undefined
- name : Fail if default Python is unavailable
fail :
msg : Python is not accessible at /usr/bin/python on this host! Please set the inventory variable 'ansible_python_interpreter' to the location of the Python 2 binary.
when : ansible_python_interpreter is undefined and python_check.rc == 1
2017-07-04 17:46:17 -07:00
- name : Gathering Facts
setup :
tasks :
- name : Get dependencies for distribution
include_vars : "{{ item }}"
with_first_found :
- files :
- "vars/{{ ansible_distribution }}-{{ ansible_distribution_version }}.yml"
- "vars/{{ ansible_distribution }}-{{ ansible_distribution_major_version | int }}.yml"
- "vars/{{ ansible_distribution }}.yml"
- "vars/{{ ansible_os_family }}.yml"
skip : true
- name : Collate dependencies
set_fact :
package_deps : "{{ buildbot_deps + fetch_deps + conf_deps + build_deps + link_deps + dist_deps }}"
python_modules : "{{ buildbot_modules + rpc_test_modules }}"
- name : Install required packages
package :
name : "{{ item }}"
state : present
with_items : "{{ package_deps }}"
- name : Install required Python modules
pip :
name : "{{ item }}"
state : latest
with_items : "{{ python_modules }}"
2017-07-10 09:08:36 -07:00
notify : restart buildbot-worker
- name : Set up the Buildbot worker user
user :
name : "{{ buildbot_worker_user }}"
comment : Buildbot worker
shell : /bin/bash
state : present
- name : Create Buildbot worker
command : >
buildbot-worker create-worker ~/{{ buildbot_worker_name }}
{{ buildbot_master_host }}:{{ buildbot_master_port }}
{{ buildbot_worker_name|quote }} {{ buildbot_worker_password|quote }}
args :
creates : "~/{{ buildbot_worker_name }}/buildbot.tac"
become_user : "{{ buildbot_worker_user }}"
- name : Set admin details for Buildbot worker
copy :
content : "{{ buildbot_worker_admin }}"
2017-08-01 04:35:58 -07:00
dest : "~{{ buildbot_worker_user }}/{{ buildbot_worker_name }}/info/admin"
owner : "{{ buildbot_worker_user }}"
group : "{{ buildbot_worker_user }}"
mode : "0644"
2017-07-10 09:08:36 -07:00
- name : Set host details for Buildbot worker
template :
2017-07-14 10:24:01 -07:00
src : "{{ buildbot_worker_host_template }}"
2017-08-01 04:35:58 -07:00
dest : "~{{ buildbot_worker_user }}/{{ buildbot_worker_name }}/info/host"
owner : "{{ buildbot_worker_user }}"
group : "{{ buildbot_worker_user }}"
mode : "0644"
2017-07-10 09:08:36 -07:00
- name : Copy Buildbot worker systemd service unit
template :
src : templates/buildbot-worker.service.j2
dest : "/etc/systemd/system/buildbot-worker.service"
owner : root
group : root
mode : "0644"
notify : reload systemd
- name : Start Buildbot worker.
service :
name : buildbot-worker
state : started
enabled : yes
handlers :
- name : restart buildbot-worker
service :
name : buildbot-worker
state : restarted
- name : reload systemd
command : /bin/systemctl daemon-reload