diff --git a/inventory/group_vars/taskotron-dev b/inventory/group_vars/taskotron-dev index 2e1afbc6c7..433f190e00 100644 --- a/inventory/group_vars/taskotron-dev +++ b/inventory/group_vars/taskotron-dev @@ -13,7 +13,7 @@ buildmaster_db_host: db-qa01.qa.fedoraproject.org buildmaster_db_name: buildmaster buildmaster_template: taskotron.master.cfg.j2 buildmaster_endpoint: taskmaster -buildmaster_pubkey: '' +buildslave_ssh_pubkey: 'ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA4EOTNfPIvIjCLNRYauVquS2LA8CZvCi6f87TASDZv4moFTv3mrCIdA3ycYLg+r+ODdPDjF9Cjpw1os/8L07XegTt9gAJVIpxzu3ZgQDkSQbx/hlDi+RG4EOIHL8nNJmu27dOVd1tb3k3aOkP5twO4uEq9RygrQBWMZTmOHdS/q8ZVUQG0d1sKv2J8EuBENgICjjIhhYvdvluu3G65jKxMgDbSXjkK6vZpbDbS2d6JI3VeLbVGlyFbHkTu7vH/vzTJZfOYgp0ZbvW9Wo3VSq/ia5qtrLKwRcBkpyCkP6uOQ14zqj4zJd/Hv7qhEcUhC8Jsb7d/Z6b3q5ID0s/9nuHdQ== buildslave@taskotron-dev01.qa.fedoraproject.org' buildslave_port: 9989 cgit_root_title: "Taskotron Dev Server Git Mirror" buildmaster_dir: /home/buildmaster/master diff --git a/inventory/group_vars/taskotron-dev-clients b/inventory/group_vars/taskotron-dev-clients index b7f99a04eb..80df6d219a 100644 --- a/inventory/group_vars/taskotron-dev-clients +++ b/inventory/group_vars/taskotron-dev-clients @@ -13,3 +13,5 @@ slave_user: buildslave buildmaster: 10.5.124.230 buildslave_port: 9989 tcp_ports: [ "{{ buildslave_port }}" ] +buildslave_private_sshkey_file: dev-buildslave-sshkey/dev_buildslave +buildslave_public_sshkey_file: dev-buildslave-sshkey/dev_buildslave.pub diff --git a/roles/taskotron/buildslave-configure/tasks/main.yml b/roles/taskotron/buildslave-configure/tasks/main.yml new file mode 100644 index 0000000000..02ce5af6ee --- /dev/null +++ b/roles/taskotron/buildslave-configure/tasks/main.yml @@ -0,0 +1,30 @@ +- name: create slave + command: creates={{ slave_dir }} buildslave create-slave {{ slave_dir }} {{ buildmaster }} buildslave passwd + +- name: generate slave config + template: src={{ templates }}/buildslave/buildbot.tac.j2 dest={{ slave_dir }}/buildbot.tac mode=0600 owner={{ slave_user }} group={{ slave_user }} + +- name: generate slave info + template: src={{ templates }}/buildslave/{{ item }}.j2 dest={{ slave_dir }}/info/{{ item }} mode=0644 owner={{ slave_user }} group={{ slave_user }} + with_items: + - admin + - host + +- name: create slave ssh directory + file: path={{ slave_home }}/.ssh owner={{ slave_user }} group={{ slave_user }} mode=0700 state=directory + +- name: install slave ssh private key + copy: src={{ private }}/files/{{ buildslave_private_sshkey_file }} dest={{ slave_home }}/.ssh/id_rsa owner={{ slave_user }} group={{ slave_user }} mode=0600 + +- name: install slave ssh public key + copy: src={{ private }}/files/{{ buildslave_public_sshkey_file }} dest={{ slave_home }}/.ssh/id_rsa.pub owner={{ slave_user }} group={{ slave_user }} mode=0644 + +- name: generate buildslave service file + template: src={{ templates }}/buildslave/buildslave.service.j2 dest=/lib/systemd/system/buildslave.service owner=root group=root mode=0744 + sudo_user: root + +- name: start and enable buildslave service + service: name=buildslave enabled=yes state=started + sudo_user: root + + diff --git a/roles/taskotron/buildslave-configure/templates/admin.j2 b/roles/taskotron/buildslave-configure/templates/admin.j2 new file mode 100644 index 0000000000..ae6c41affe --- /dev/null +++ b/roles/taskotron/buildslave-configure/templates/admin.j2 @@ -0,0 +1 @@ +Taskbot Admin diff --git a/roles/taskotron/buildslave-configure/templates/buildbot.tac.j2 b/roles/taskotron/buildslave-configure/templates/buildbot.tac.j2 new file mode 100644 index 0000000000..0385231c91 --- /dev/null +++ b/roles/taskotron/buildslave-configure/templates/buildbot.tac.j2 @@ -0,0 +1,42 @@ + +import os + +from twisted.application import service +from buildslave.bot import BuildSlave + +basedir = r'/home/buildslave/slave' +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 buildslave +# directory; do not edit it. +application = service.Application('buildslave') + +try: + 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) +except ImportError: + # probably not yet twisted 8.2.0 and beyond, can't set log yet + pass + +buildmaster_host = '{{ buildmaster }}' +port = 9989 +slavename = '{{ buildslave_name }}' +passwd = '{{ buildslave_pw }}' +keepalive = 600 +usepty = 0 +umask = None +maxdelay = 300 + +s = BuildSlave(buildmaster_host, port, slavename, passwd, basedir, + keepalive, usepty, umask=umask, maxdelay=maxdelay) +s.setServiceParent(application) + diff --git a/roles/taskotron/buildslave-configure/templates/buildslave.service.j2 b/roles/taskotron/buildslave-configure/templates/buildslave.service.j2 new file mode 100644 index 0000000000..e8d41a18e1 --- /dev/null +++ b/roles/taskotron/buildslave-configure/templates/buildslave.service.j2 @@ -0,0 +1,14 @@ +[Unit] +Description=Buildslave for taskbot +After=network.target + +[Service] +Type=forking +PIDFile=/home/buildslave/slave/twistd.pid +ExecStart=/bin/buildslave start /home/buildslave/slave/ +ExecStop=/bin/buildslave stop /home/buildslave/slave/ +User=buildslave +Group=buildslave + +[Install] +WantedBy=multi-user.target diff --git a/roles/taskotron/buildslave-configure/templates/host.j2 b/roles/taskotron/buildslave-configure/templates/host.j2 new file mode 100644 index 0000000000..484c60d3a4 --- /dev/null +++ b/roles/taskotron/buildslave-configure/templates/host.j2 @@ -0,0 +1 @@ +Buildslave running on {{ inventory_hostname }}