From 38ef08a6bba66784f1b72f2fdb48f27ce54326c0 Mon Sep 17 00:00:00 2001 From: Trevor Cooper Date: Sun, 26 Feb 2023 00:04:40 -0800 Subject: [PATCH 1/3] deploy rocky branding --- .../share/openqa/assets/assetpack.def.patch | 15 ++++++++ .../usr/share/openqa/assets/images/rocky.png | Bin 0 -> 34623 bytes .../usr/share/openqa/assets/images/rocky.svg | 12 ++++++ .../webapi/branding/rocky/docbox.html.ep | 1 + .../webapi/branding/rocky/sponsorbox.html.ep | 5 +++ .../templates/webapi/main/index.html.ep.patch | 15 ++++++++ init-rocky-openqa-developer-host.yml | 3 ++ tasks/openqa_branding.yml | 35 ++++++++++++++++++ templates/etc/openqa/openqa.ini.j2 | 2 +- vars/openqa_branding.yml | 14 +++++++ 10 files changed, 101 insertions(+), 1 deletion(-) create mode 100644 files/usr/share/openqa/assets/assetpack.def.patch create mode 100644 files/usr/share/openqa/assets/images/rocky.png create mode 100644 files/usr/share/openqa/assets/images/rocky.svg create mode 100644 files/usr/share/openqa/templates/webapi/branding/rocky/docbox.html.ep create mode 100644 files/usr/share/openqa/templates/webapi/branding/rocky/sponsorbox.html.ep create mode 100644 files/usr/share/openqa/templates/webapi/main/index.html.ep.patch create mode 100644 tasks/openqa_branding.yml create mode 100644 vars/openqa_branding.yml diff --git a/files/usr/share/openqa/assets/assetpack.def.patch b/files/usr/share/openqa/assets/assetpack.def.patch new file mode 100644 index 0000000..21f83dc --- /dev/null +++ b/files/usr/share/openqa/assets/assetpack.def.patch @@ -0,0 +1,15 @@ +--- assetpack.def.orig 2023-01-24 03:37:58.521562449 +0000 ++++ assetpack.def 2023-01-24 03:38:14.488517673 +0000 +@@ -246,6 +246,12 @@ + ! terminal.svg + < images/terminal.svg + ++! rocky.png ++< images/rocky.png ++ ++! rocky.svg ++< images/rocky.svg ++ + ! suse.png + < images/suse.png + diff --git a/files/usr/share/openqa/assets/images/rocky.png b/files/usr/share/openqa/assets/images/rocky.png new file mode 100644 index 0000000000000000000000000000000000000000..d600b12b8d976a88c7bb9306173d4bf273c31312 GIT binary patch literal 34623 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 + + + + + + + + + + + diff --git a/files/usr/share/openqa/templates/webapi/branding/rocky/docbox.html.ep b/files/usr/share/openqa/templates/webapi/branding/rocky/docbox.html.ep new file mode 100644 index 0000000..bc1a2d9 --- /dev/null +++ b/files/usr/share/openqa/templates/webapi/branding/rocky/docbox.html.ep @@ -0,0 +1 @@ +%=include 'branding/plain/docbox' diff --git a/files/usr/share/openqa/templates/webapi/branding/rocky/sponsorbox.html.ep b/files/usr/share/openqa/templates/webapi/branding/rocky/sponsorbox.html.ep new file mode 100644 index 0000000..46e8287 --- /dev/null +++ b/files/usr/share/openqa/templates/webapi/branding/rocky/sponsorbox.html.ep @@ -0,0 +1,5 @@ + diff --git a/files/usr/share/openqa/templates/webapi/main/index.html.ep.patch b/files/usr/share/openqa/templates/webapi/main/index.html.ep.patch new file mode 100644 index 0000000..b767e62 --- /dev/null +++ b/files/usr/share/openqa/templates/webapi/main/index.html.ep.patch @@ -0,0 +1,15 @@ +--- index.html.ep 2023-01-24 03:34:10.861205160 +0000 ++++ index.html.ep 2023-01-24 03:34:44.364110582 +0000 +@@ -10,10 +10,10 @@ +
+
+
+-
++
+ %= include_branding 'docbox' +
+-
++
+ %= include_branding 'sponsorbox' +
+
diff --git a/init-rocky-openqa-developer-host.yml b/init-rocky-openqa-developer-host.yml index f462e9b..b946e2b 100644 --- a/init-rocky-openqa-developer-host.yml +++ b/init-rocky-openqa-developer-host.yml @@ -20,6 +20,7 @@ become: true vars_files: - vars/openqa.yml + - vars/openqa_branding.yml # This is to try to avoid the handler issue in pre/post tasks handlers: @@ -41,6 +42,8 @@ tasks: - name: Install and configure OpenQA import_tasks: tasks/openqa.yml + - name: Apply Rocky Linux OpenQA Branding + import_tasks: tasks/openqa_branding.yml post_tasks: - name: Touching run file that ansible has ran here diff --git a/tasks/openqa_branding.yml b/tasks/openqa_branding.yml new file mode 100644 index 0000000..29f6e6e --- /dev/null +++ b/tasks/openqa_branding.yml @@ -0,0 +1,35 @@ +--- +- name: Copy assets hierarchy + ansible.posix.synchronize: + src: "{{ assets_src_dir }}/" + dest: "{{ assets_dest_dir }}" + recursive: true + tags: + - branding + +- name: Copy templates hierarchy + ansible.posix.synchronize: + src: "{{ templates_src_dir }}/" + dest: "{{ templates_dest_dir }}" + recursive: true + tags: + - branding + +- name: Apply patches to specific assets, template and config files + ansible.posix.patch: + src: "{{ item.patch }}" + dest: "{{ item.path }}" + # optional parameters, see documentation for details + # strip: 1 + backup: true + with_items: "{{ branding_patches }}" + tags: + - branding + +- name: Restart openqa-webui service + ansible.builtin.systemd: + name: openqa-webui + state: restarted + tags: + - branding +... diff --git a/templates/etc/openqa/openqa.ini.j2 b/templates/etc/openqa/openqa.ini.j2 index 932c182..7cadafc 100644 --- a/templates/etc/openqa/openqa.ini.j2 +++ b/templates/etc/openqa/openqa.ini.j2 @@ -1,5 +1,5 @@ [global] -branding=plain +branding = {{ openqa_branding }} download_domains = rockylinux.org fedoraproject.org opensuse.org [auth] diff --git a/vars/openqa_branding.yml b/vars/openqa_branding.yml new file mode 100644 index 0000000..e294070 --- /dev/null +++ b/vars/openqa_branding.yml @@ -0,0 +1,14 @@ +--- +# Branding type used, default is plain but we are rocky +openqa_branding: "rocky" + +assets_src_dir: "{{ playbook_dir }}/files/usr/share/openqa/assets" +assets_dest_dir: "/usr/share/openqa/assets" + +templates_src_dir: "{{ playbook_dir }}/files/usr/share/openqa/templates" +templates_dest_dir: "/usr/share/openqa/templates" + +branding_patches: + - { path: /usr/share/openqa/assets/assetpack.def, patch: /usr/share/openqa/assets/assetpack.def.patch } + - { path: /usr/share/openqa/templates/webapi/main/index.html.ep, patch: /usr/share/openqa/templates/webapi/main/index.html.ep.patch } +... -- 2.43.5 From fcafb602c13e754593183f507e3304723fe170a3 Mon Sep 17 00:00:00 2001 From: Al Bowles Date: Thu, 2 Mar 2023 21:52:16 -0600 Subject: [PATCH 2/3] Automation to uninstall openQA on developer hosts --- handlers/main.yml | 1 + remove-rocky-openqa-developer-host.yml | 41 ++++++++++++++++++++++++++ 2 files changed, 42 insertions(+) create mode 100644 remove-rocky-openqa-developer-host.yml diff --git a/handlers/main.yml b/handlers/main.yml index 839209c..56ea28c 100644 --- a/handlers/main.yml +++ b/handlers/main.yml @@ -13,3 +13,4 @@ # range "end" parameter is exclusive, so add 1 loop: "{{ range(1, (openqa_worker_count | int + 1)) | list }}" ignore_errors: "{{ ansible_check_mode }}" +... diff --git a/remove-rocky-openqa-developer-host.yml b/remove-rocky-openqa-developer-host.yml new file mode 100644 index 0000000..18c1aad --- /dev/null +++ b/remove-rocky-openqa-developer-host.yml @@ -0,0 +1,41 @@ +# Delete local OpenQA testing environment +# This playbook is *NOT* intended for WAN-facing systems! +# Created: @akatch +--- +- name: Rocky OpenQA Runbook + hosts: localhost + connection: local + become: true + vars_files: + - vars/openqa.yml + + # This is to try to avoid the handler issue in pre/post tasks + handlers: + - name: Import handlers + ansible.builtin.import_tasks: handlers/main.yml + + pre_tasks: + - name: Check if ansible cannot be run here + ansible.builtin.stat: + path: /etc/no-ansible + register: no_ansible + + - name: Verify if we can run ansible + ansible.builtin.assert: + that: + - "not no_ansible.stat.exists" + success_msg: "We are able to run on this node" + fail_msg: "/etc/no-ansible exists - skipping run on this node" + + tasks: + - name: Remove OpenQA installation from this system + ansible.builtin.import_tasks: tasks/remove_openqa.yml + + post_tasks: + - name: Touching run file that ansible has ran here + ansible.builtin.file: + path: /var/log/ansible.run + state: touch + mode: '0644' + owner: root + group: root -- 2.43.5 From 70eaaf01121cb7646ac5b6215d5d481224e979bd Mon Sep 17 00:00:00 2001 From: Al Bowles Date: Fri, 17 Mar 2023 01:05:00 -0500 Subject: [PATCH 3/3] Refinements to the devbox setup --- handlers/main.yml | 7 ++++ tasks/openqa.yml | 83 ++++++++++------------------------------------- 2 files changed, 25 insertions(+), 65 deletions(-) diff --git a/handlers/main.yml b/handlers/main.yml index 839209c..62a52e3 100644 --- a/handlers/main.yml +++ b/handlers/main.yml @@ -13,3 +13,10 @@ # range "end" parameter is exclusive, so add 1 loop: "{{ range(1, (openqa_worker_count | int + 1)) | list }}" ignore_errors: "{{ ansible_check_mode }}" + +- name: Restart httpd + ansible.builtin.service: + name: httpd + state: restarted + enabled: true + ignore_errors: "{{ ansible_check_mode }}" diff --git a/tasks/openqa.yml b/tasks/openqa.yml index f449fc1..c3cbf72 100644 --- a/tasks/openqa.yml +++ b/tasks/openqa.yml @@ -11,15 +11,16 @@ remote_src: true src: /etc/httpd/conf.d/{{ item }}.template dest: /etc/httpd/conf.d/{{ item }} - mode: '0644' + mode: "0644" owner: root group: root loop: - openqa.conf - openqa-ssl.conf - notify: restart_httpd + notify: Restart httpd tags: - configure + ignore_errors: "{{ ansible_check_mode }}" - name: Template OpenQA configuration files ansible.builtin.template: @@ -33,9 +34,11 @@ - client.conf tags: - configure + notify: Restart openQA workers - name: Get service facts ansible.builtin.service_facts: + check_mode: false - name: Check for non-empty postgres data directory ansible.builtin.stat: @@ -47,6 +50,7 @@ when: not ( ansible_facts.services["postgresql.service"]["state"] == "running" ) and not postgres_data_dir.stat.exists changed_when: true + ignore_errors: "{{ ansible_check_mode }}" - name: Enable and start postgresql service ansible.builtin.systemd: @@ -55,6 +59,7 @@ enabled: true when: not ( ansible_facts.services["postgresql.service"]["state"] == "running" ) and not postgres_data_dir.stat.exists + ignore_errors: "{{ ansible_check_mode }}" - name: Configure SELinux to allow httpd connection to network ansible.posix.seboolean: @@ -72,6 +77,7 @@ loop: "{{ openqa_services }}" tags: - configure + ignore_errors: "{{ ansible_check_mode }}" - name: Create openqa-vnc firewalld service ansible.builtin.template: @@ -82,13 +88,11 @@ mode: "0644" tags: - configure + notify: Reload firewalld -- name: Load openqa-vnc firewalld service +- name: Systemctl daemon-reload ansible.builtin.systemd: - name: firewalld - state: reloaded - tags: - - configure + daemon_reload: true - name: Permit traffic for http and openqa-vnc services ansible.posix.firewalld: @@ -100,13 +104,7 @@ - openqa-vnc tags: - configure - -- name: Reload FirewallD - ansible.builtin.systemd: - name: firewalld - state: reloaded - tags: - - configure + notify: Reload firewalld - name: Check for existing repository ansible.builtin.stat: @@ -131,63 +129,18 @@ recurse: true owner: "{{ openqa_user }}" group: "{{ openqa_group }}" - mode: "u+rwX,g+rwX,o+rX,o-w" + mode: "0775" tags: - configure -# fifloader.py will fail if the Demo user is not logged in -- name: Authenticate to web UI the first time - ansible.builtin.uri: - url: "http://{{ openqa_host }}/login" - -- name: Run fifloader.py - ansible.builtin.command: ./fifloader.py -l -c templates.fif.json templates-updates.fif.json - changed_when: "1 != 1" - args: - chdir: "{{ openqa_homedir }}/share/tests/rocky" - -- name: Create ISO directory +- name: Create asset directories ansible.builtin.file: - path: "{{ openqa_homedir }}/share/factory/iso/fixed" + path: "{{ openqa_homedir }}/share/factory/{{ item }}/fixed" state: directory owner: "{{ openqa_user }}" group: "{{ openqa_group }}" mode: "0775" - tags: - - download_isos - -- name: Download ISOs - ansible.builtin.get_url: - dest: "{{ openqa_homedir }}/share/factory/iso/fixed/{{ item.name }}" - url: "{{ rocky_iso_download_url }}/{{ item.name }}" - checksum: "{{ item.checksum }}" - owner: "{{ openqa_user }}" - group: "{{ openqa_group }}" - tmp_dest: "/var/tmp" - mode: "0644" - loop: "{{ openqa_isos }}" - tags: - - download_isos - -- name: Start OpenQA workers - ansible.builtin.systemd: - name: "openqa-worker@{{ item }}" - state: started - enabled: true - # range 'end' parameter is exclusive, so add 1 - loop: "{{ range(1, (openqa_worker_count | int + 1)) | list }}" - tags: - - start_workers - - configure - -- name: POST a job - ansible.builtin.command: | - openqa-cli api -X POST isos \ - ISO=Rocky-{{ rocky_version }}-{{ rocky_arch }}-minimal.iso \ - ARCH={{ rocky_arch }} \ - DISTRI=rocky \ - FLAVOR=minimal-iso \ - VERSION={{ rocky_version }} \ - BUILD="{{ '%Y%m%d.%H%M%S' | strftime }}.0" - changed_when: "1 != 1" + loop: + - iso + - hdd ... -- 2.43.5