diff --git a/inventory/group_vars/taskotron-dev-client-hosts b/inventory/group_vars/taskotron-dev-client-hosts index 72ad37128e..2e35eba3e7 100644 --- a/inventory/group_vars/taskotron-dev-client-hosts +++ b/inventory/group_vars/taskotron-dev-client-hosts @@ -47,6 +47,8 @@ artifacts_base_url: https://taskotron-dev.fedoraproject.org/artifacts client_report_to_bodhi: 'False' +imagesdir: /srv/diskimages + ############################################################ # testcloud config @@ -68,8 +70,6 @@ buildmaster_pubkey: "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDYzVmGYh6EHH8UAlgX6FI # imagefactory config ############################################################ -imagefactory_user: imgfac_user -imagefactory_user_home: '/home/{{imagefactory_user}}' -imagefactory_shared_dir: '{{imagefactory_user_home}}/images' - +imagefactory_host: qa11.qa.fedoraproject.org +imagefactory_baseurl: 'http://{{imagefactory_host}}:8075/imagefactory' diff --git a/inventory/group_vars/taskotron-prod-client-hosts b/inventory/group_vars/taskotron-prod-client-hosts index 08ed988a13..5ca82d9d93 100644 --- a/inventory/group_vars/taskotron-prod-client-hosts +++ b/inventory/group_vars/taskotron-prod-client-hosts @@ -45,6 +45,7 @@ artifacts_base_url: https://taskotron.fedoraproject.org/artifacts client_report_to_bodhi: 'False' +imagesdir: /srv/diskimages ############################################################ # testcloud config @@ -60,3 +61,12 @@ buildslave_pubkey: 'ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA3Fhg7qUJ1+3N2YficTWQGEPm buildslave_private_sshkey_file: prod-buildslave-sshkey/prod_buildslave buildslave_public_sshkey_file: prod-buildslave-sshkey/prod_buildslave.pub buildmaster_pubkey: 'ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDZ0I2cVUiU0VBj0E0qd9knPffShU16LJYNTPz5IlgEaWtr4KQly1aC3uTNtDBy2fKX9YZxmupTPsQw0F3sneHosDZlpWSh8+iOOi5pT/hH3/YxwwT+Uq1X/8ebAcQ/OHUhMcDb6TWOw8PltaOFMGxhVq5yJtzViknxY+7Z0sbKCtzHEYM9ABKiVfxyyow31sPLAHiv4aLjOfJBE09mmR79TiTk797SYNA+LXVLO18h05kDy3Y/pufoPFA3+j3AFQW1WyFqFG3O62J4TJHxFwtXGyimDjXho/7Km0QvQOxBx8d7mhdA9oNYEo2pGUJeYcXNjj34Bc/4A2bjw2m8elkz' + + +############################################################ +# imagefactory config +############################################################ + +imagefactory_host: qa11.qa.fedoraproject.org +imagefactory_baseurl: 'http://{{imagefactory_host}}:8075/imagefactory' + diff --git a/inventory/group_vars/taskotron-stg-client-hosts b/inventory/group_vars/taskotron-stg-client-hosts index ff2914635d..c04f992336 100644 --- a/inventory/group_vars/taskotron-stg-client-hosts +++ b/inventory/group_vars/taskotron-stg-client-hosts @@ -48,6 +48,8 @@ artifacts_base_url: https://taskotron.stg.fedoraproject.org/artifacts client_report_to_bodhi: 'False' +imagesdir: /srv/diskimages + ############################################################ # testcloud config @@ -63,3 +65,12 @@ buildslave_pubkey: "ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA4EOTNfPIvIjCLNRYauVquS2L buildslave_private_sshkey_file: dev-buildslave-sshkey/dev_buildslave buildslave_public_sshkey_file: dev-buildslave-sshkey/dev_buildslave.pub buildmaster_pubkey: 'ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC3cGfl2hdHA7PsP+ZrhhJDjrLnw8AdP3myMHb0/RHSCg7iPATR6CiljeU6oM0ZT0neKH4/DXtQr9zMT2OCrUXz/T94md8AzCbuLFrHPgSiJ5GciYyQ6E3edM7ATTU3qj1NsT/Uuiwqer/Sb7z1NrVWjzfyDXCSppHZfskQ3TDRVQFgAunrGmmUfbgOueftDXePHq8ozOf4v1bzR+9tCeqcfa0Xmzo/hpbav4IIhAoIJNknitw71BPFOd4ublNUzX7TLmi5zoxRxYU6F8rwm9kBMQ9+crpOpvHrY4qnk9Yq6TBt6UC/HbLwFhxCeU3s+cr2U4GmF/lk7sqo3Pz7Q3BR' + + +############################################################ +# imagefactory config +############################################################ + +imagefactory_host: qa11.qa.fedoraproject.org +imagefactory_baseurl: 'http://{{imagefactory_host}}:8075/imagefactory' + diff --git a/playbooks/groups/taskotron-client-hosts.yml b/playbooks/groups/taskotron-client-hosts.yml index 5976148bdf..08d8fe3432 100644 --- a/playbooks/groups/taskotron-client-hosts.yml +++ b/playbooks/groups/taskotron-client-hosts.yml @@ -33,26 +33,8 @@ 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/taskotron-client, tags: ['taskotronclient'] } - - { role: taskotron/buildslave, tags: ['buildslave'] } - - { role: taskotron/buildslave-configure, tags: ['buildslaveconfigure'] } - - handlers: - - include: "{{ handlers }}/restart_services.yml" - - name: configure taskotron imagefactory - hosts: qa11.qa.fedoraproject.org + hosts: '{{imagefactory_host}}' user: root gather_facts: True @@ -66,4 +48,24 @@ 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/taskotron-client, tags: ['taskotronclient'] } + - { role: taskotron/imagefactory-client, tags: ['imagefactoryclient'] } + - { role: taskotron/buildslave, tags: ['buildslave'] } + - { role: taskotron/buildslave-configure, tags: ['buildslaveconfigure'] } + + handlers: + - include: "{{ handlers }}/restart_services.yml" + diff --git a/roles/taskotron/imagefactory-client/defaults/main.yml b/roles/taskotron/imagefactory-client/defaults/main.yml new file mode 100644 index 0000000000..25264b73d1 --- /dev/null +++ b/roles/taskotron/imagefactory-client/defaults/main.yml @@ -0,0 +1,2 @@ +--- +extra_enablerepos: '' diff --git a/roles/taskotron/imagefactory-client/tasks/main.yml b/roles/taskotron/imagefactory-client/tasks/main.yml new file mode 100644 index 0000000000..4c06054e9a --- /dev/null +++ b/roles/taskotron/imagefactory-client/tasks/main.yml @@ -0,0 +1,33 @@ +--- +- name: create directory for git clone + file: path=/var/lib/fedoraqa state=directory owner=root group=root mode=1755 + when: deployment_type in ['dev'] + +- name: create directory for configuration + file: path=/etc/taskotron_base_images state=directory owner=root group=root mode=0755 + when: deployment_type in ['dev'] + +- name: create directory for disposable clients images + file: path={{ imagesdir }} state=directory owner=root group={{ slaves_group }} mode=1755 + when: deployment_type in ['dev'] + +- name: Check out our imagefactory tools + git: + repo: https://bitbucket.org/fedoraqa/base_images + dest: '/var/lib/fedoraqa/base_images' + update: yes + when: deployment_type in ['dev'] + +- name: Generate configuration + template: src=config.ini.j2 dest=/etc/taskotron_base_images/config.ini owner=root group=root mode=0644 + +- name: Download/update images + command: '/var/lib/fedoraqa/base_images/get_latest_image/get_latest_image.py update --get-missing --outdir {{imagesdir}} {{imagesdir}}' + when: deployment_type in ['dev'] + +- name: Create cronjob to download new images + cron: + name: "Download new images from ImageFactory" + special_time: hourly + job: '/var/lib/fedoraqa/base_images/get_latest_image/get_latest_image.py update --get-missing --outdir {{imagesdir}} {{imagesdir}}' + when: deployment_type in ['dev'] diff --git a/roles/taskotron/imagefactory-client/templates/config.ini.j2 b/roles/taskotron/imagefactory-client/templates/config.ini.j2 new file mode 100644 index 0000000000..29e174b849 --- /dev/null +++ b/roles/taskotron/imagefactory-client/templates/config.ini.j2 @@ -0,0 +1,6 @@ +[default] +imgfac_base_url={{imagefactory_baseurl}} +repourl_base=http://dl.fedoraproject.org/pub/fedora/linux/ +rawhide=24 +download_dir={{imagesdir}} + diff --git a/roles/taskotron/imagefactory/tasks/main.yml b/roles/taskotron/imagefactory/tasks/main.yml index 70c06028ab..acbe44a0fc 100644 --- a/roles/taskotron/imagefactory/tasks/main.yml +++ b/roles/taskotron/imagefactory/tasks/main.yml @@ -15,14 +15,23 @@ - name: enable imagefactory service: name=imagefactoryd state=started enabled=yes -- name: add the imgfac user - user: name={{imagefactory_user}} - -- name: create directory for shared built images - file: path={{ imagefactory_shared_dir }} state=directory owner={{ imagefactory_user }} group={{ imagefactory_user }} mode=1755 +- name: create directory for git clone + file: path=/var/lib/fedoraqa state=directory owner=root group=root mode=1755 - name: Check out our imagefactory tools git: repo: https://bitbucket.org/fedoraqa/base_images - dest: '{{imagefactory_user_home}}/base_images' + dest: '/var/lib/fedoraqa/base_images' update: yes + +- name: Create cronjob to build new images + cron: + name: "Build new taskotron_cloud images in ImageFactory" + hour: "3" + job: '/var/lib/fedoraqa/base_images/trigger_build/trigger_build.py build --release 23 --arch x86_64 --flavor="taskotron_cloud" --disksize="3G"' + +- name: Create cronjob to prune old + cron: + name: "Prune old taskotron_cloud images in ImageFactory" + hour: "5" + job: '/var/lib/fedoraqa/base_images/trigger_build/trigger_build.py prune-old --keep 5' diff --git a/roles/taskotron/taskotron-client/tasks/main.yml b/roles/taskotron/taskotron-client/tasks/main.yml index d58f72620c..4244bb2f34 100644 --- a/roles/taskotron/taskotron-client/tasks/main.yml +++ b/roles/taskotron/taskotron-client/tasks/main.yml @@ -51,8 +51,8 @@ file: path=/var/log/taskotron state=directory owner={{ slave_user }} group={{ slave_user }} mode=1755 when: deployment_type == 'local' -- name: create /srv/diskimages for disposable clients images - file: path=/srv/diskimages state=directory owner=root group={{ slaves_group }} mode=1755 +- name: create directory for disposable clients images + file: path={{ imagesdir }} state=directory owner=root group={{ slaves_group }} mode=1755 when: deployment_type in ['dev', 'stg', 'prod'] - name: ensure buildslaves group exists