From fe5073d8f5d8d563ff2d88548f4ec9a474e1a54a Mon Sep 17 00:00:00 2001 From: Pavel Raiskup Date: Fri, 7 May 2021 19:12:35 +0200 Subject: [PATCH] copr-hv: prepare qcow2 images on hypervisors --- .../files/provision/local-image-update.yml | 19 ++++++++ roles/copr/backend/tasks/resalloc.yml | 44 +++---------------- .../tasks/setup_provisioning_environment.yml | 36 +++++++++++++++ roles/copr/hypervisor/tasks/main.yml | 25 +++++++++++ 4 files changed, 87 insertions(+), 37 deletions(-) create mode 100644 roles/copr/backend/files/provision/local-image-update.yml create mode 100644 roles/copr/backend/tasks/setup_provisioning_environment.yml diff --git a/roles/copr/backend/files/provision/local-image-update.yml b/roles/copr/backend/files/provision/local-image-update.yml new file mode 100644 index 0000000000..c1707d3696 --- /dev/null +++ b/roles/copr/backend/files/provision/local-image-update.yml @@ -0,0 +1,19 @@ +--- +# This playbook is used on copr hypervisor for preparing qcow2 copr builder +# images. + +- name: prepare local VM for creating copr builder image + hosts: all + remote_user: root + gather_facts: false + + vars_files: + - vars.yml + - aws_cloud_vars.yml + + vars: + - updatebuilder: true + - prepare_base_image: 1 + + tasks: + - include: "provision_builder_tasks.yml" diff --git a/roles/copr/backend/tasks/resalloc.yml b/roles/copr/backend/tasks/resalloc.yml index 486e9b186d..f0b974b25a 100644 --- a/roles/copr/backend/tasks/resalloc.yml +++ b/roles/copr/backend/tasks/resalloc.yml @@ -1,3 +1,4 @@ +--- - name: install packages needed by resalloc server dnf: state: present @@ -31,23 +32,17 @@ become: yes become_user: postgres -- name: install .ansible.cfg for resalloc user +- name: setup provision directory + include_tasks: setup_provisioning_environment.yml + vars: + provision_directory: /var/lib/resallocserver/provision + +- name: install .ansible.cfg for {{ provision_user }} user copy: src=ansible.cfg dest=/var/lib/resallocserver/.ansible.cfg owner=resalloc group=resalloc mode=600 tags: - provision_config -- name: resalloc, sync copr provisioning files - synchronize: src="provision/" dest="/var/lib/resallocserver/provision/" - tags: - - provision_config - -- name: "resalloc, sync copr provisioning files [remove mock config leftovers]" - synchronize: src="provision/files/mock/" dest="/var/lib/resallocserver/provision/files/mock/" - delete=yes - tags: - - provision_config - - name: resalloc, sync resalloc provisioning files synchronize: src="resalloc_provision/" dest="/var/lib/resallocserver/resalloc_provision/" tags: @@ -64,31 +59,6 @@ tags: - provision_config -- name: resalloc, generate vars files - template: - src: "provision/{{ item }}" - dest: "/var/lib/resallocserver/provision/{{ item }}" - with_items: - - vars.yml - - nova_cloud_vars.yml - - aws_cloud_vars.yml - tags: - - provision_config - -- name: resalloc, rpmbuild config - template: - src: provision/copr-rpmbuild/main.ini.j2 - dest: /var/lib/resallocserver/provision/files/main.ini - tags: - - provision_config - -- name: resalloc, rpkg config - template: - src: provision/rpkg.conf.j2 - dest: /var/lib/resallocserver/provision/files/rpkg.conf - tags: - - provision_config - - name: resalloc, ssh directory file: path: /var/lib/resallocserver/.ssh diff --git a/roles/copr/backend/tasks/setup_provisioning_environment.yml b/roles/copr/backend/tasks/setup_provisioning_environment.yml new file mode 100644 index 0000000000..7c6db9cd55 --- /dev/null +++ b/roles/copr/backend/tasks/setup_provisioning_environment.yml @@ -0,0 +1,36 @@ +--- +- name: sync copr provisioning files + synchronize: src="provision/" dest="{{ provision_directory }}/" + tags: + - provision_config + +- name: "sync copr provisioning files [remove mock config leftovers]" + synchronize: src="provision/files/mock/" dest="{{ provision_directory }}/files/mock/" + delete=yes + tags: + - provision_config + +- name: resalloc, generate vars files + template: + src: "provision/{{ item }}" + dest: "{{ provision_directory }}/{{ item }}" + with_items: + - vars.yml + - nova_cloud_vars.yml + - aws_cloud_vars.yml + tags: + - provision_config + +- name: resalloc, rpmbuild config + template: + src: provision/copr-rpmbuild/main.ini.j2 + dest: "{{ provision_directory }}/files/main.ini" + tags: + - provision_config + +- name: resalloc, rpkg config + template: + src: provision/rpkg.conf.j2 + dest: "{{ provision_directory }}/files/rpkg.conf" + tags: + - provision_config diff --git a/roles/copr/hypervisor/tasks/main.yml b/roles/copr/hypervisor/tasks/main.yml index 29c7426e4a..b0e0356ea8 100644 --- a/roles/copr/hypervisor/tasks/main.yml +++ b/roles/copr/hypervisor/tasks/main.yml @@ -129,6 +129,10 @@ group: copr mode: 0600 +- name: provide pub key, too, so we can install them to generated builder images + copy: src=buildsys.pub dest=/home/copr/.ssh/id_rsa.pub + owner=copr group=ćopr mode=0600 + - name: install libvirt packages package: name={{ item }} state=present with_items: @@ -136,3 +140,24 @@ - libguestfs-tools-c - libvirt - virt-install + +- name: Enable praiskup-helpers repo + community.general.copr: + state: enabled + name: praiskup/helpers + chroot: epel-8-x86_64 + +- name: install latest packages + package: name=praiskup-helpers state=latest + +- name: install configuration for /bin/copr-image + copy: + dest: /etc/eimg/eimg.sh + content: | + EIMG_COPR_PLAYBOOK_DIR=/home/copr/vm-provisioning + EIMG_COPR_PLAYBOOK=local-image-update.yml + +- name: setup provision directory + include_tasks: setup_provisioning_environment.yml + vars: + provision_directory: /home/copr/provision