[libvirt-ci PATCH 0/4] lcitool: Use more dictionaries in the inventory

It's the most sensible way to represent related data in YAML. Andrea Bolognani (4): lcitool: Tweak formatting lcitool: Store OS information a dictionary lcitool: Store packaging information as a dictionary lcitool: Store paths information as a dictionary guests/host_vars/libvirt-centos-7/main.yml | 30 ++-- guests/host_vars/libvirt-centos-8/main.yml | 30 ++-- guests/host_vars/libvirt-debian-10/main.yml | 30 ++-- guests/host_vars/libvirt-debian-9/main.yml | 30 ++-- guests/host_vars/libvirt-debian-sid/main.yml | 30 ++-- guests/host_vars/libvirt-fedora-30/main.yml | 30 ++-- guests/host_vars/libvirt-fedora-31/main.yml | 30 ++-- .../host_vars/libvirt-fedora-rawhide/main.yml | 30 ++-- guests/host_vars/libvirt-freebsd-11/main.yml | 30 ++-- guests/host_vars/libvirt-freebsd-12/main.yml | 30 ++-- .../libvirt-freebsd-current/main.yml | 30 ++-- .../host_vars/libvirt-opensuse-151/main.yml | 30 ++-- guests/host_vars/libvirt-ubuntu-1604/main.yml | 30 ++-- guests/host_vars/libvirt-ubuntu-1804/main.yml | 30 ++-- guests/lcitool | 154 ++++++++---------- guests/playbooks/update/tasks/base.yml | 72 ++++---- guests/playbooks/update/tasks/bootloader.yml | 2 +- guests/playbooks/update/tasks/bootstrap.yml | 6 +- guests/playbooks/update/tasks/gitlab.yml | 2 +- guests/playbooks/update/tasks/global.yml | 4 +- guests/playbooks/update/tasks/jenkins.yml | 2 +- guests/playbooks/update/tasks/kludges.yml | 8 +- guests/playbooks/update/tasks/packages.yml | 24 +-- guests/playbooks/update/tasks/services.yml | 2 +- guests/playbooks/update/tasks/users.yml | 4 +- guests/playbooks/update/templates/bashrc.j2 | 12 +- .../update/templates/jenkins.service.j2 | 2 +- 27 files changed, 380 insertions(+), 334 deletions(-) -- 2.25.4

This will make further changes nicer. Signed-off-by: Andrea Bolognani <abologna@redhat.com> --- guests/lcitool | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/guests/lcitool b/guests/lcitool index dfb1ebc..f4565bc 100755 --- a/guests/lcitool +++ b/guests/lcitool @@ -714,7 +714,12 @@ class Application: pkgs = {} cross_pkgs = {} pip_pkgs = {} - base_keys = ["default", package_format, os_name, os_full] + base_keys = [ + "default", + package_format, + os_name, + os_full, + ] cross_keys = [] if cross_arch: keys = base_keys + [cross_arch + "-" + k for k in base_keys] @@ -782,7 +787,12 @@ class Application: pkgs = {} cross_pkgs = {} pip_pkgs = {} - keys = ["default", package_format, os_name, os_full] + keys = [ + "default", + package_format, + os_name, + os_full, + ] # We need to add the base project manually here: the standard # machinery hides it because it's an implementation detail -- 2.25.4

On Tue, Apr 28, 2020 at 03:37:57PM +0200, Andrea Bolognani wrote:
This will make further changes nicer.
Signed-off-by: Andrea Bolognani <abologna@redhat.com>
Reviewed-by: Erik Skultety <eskultet@redhat.com>

Ansible and Python both support actual dictionaries, so make use of them in the inventory instead of emulating them by using variable names sharing the same prefix. Signed-off-by: Andrea Bolognani <abologna@redhat.com> --- guests/host_vars/libvirt-centos-7/main.yml | 6 ++- guests/host_vars/libvirt-centos-8/main.yml | 6 ++- guests/host_vars/libvirt-debian-10/main.yml | 6 ++- guests/host_vars/libvirt-debian-9/main.yml | 6 ++- guests/host_vars/libvirt-debian-sid/main.yml | 6 ++- guests/host_vars/libvirt-fedora-30/main.yml | 6 ++- guests/host_vars/libvirt-fedora-31/main.yml | 6 ++- .../host_vars/libvirt-fedora-rawhide/main.yml | 6 ++- guests/host_vars/libvirt-freebsd-11/main.yml | 6 ++- guests/host_vars/libvirt-freebsd-12/main.yml | 6 ++- .../libvirt-freebsd-current/main.yml | 6 ++- .../host_vars/libvirt-opensuse-151/main.yml | 6 ++- guests/host_vars/libvirt-ubuntu-1604/main.yml | 6 ++- guests/host_vars/libvirt-ubuntu-1804/main.yml | 6 ++- guests/lcitool | 49 ++++++++----------- guests/playbooks/update/tasks/base.yml | 44 ++++++++--------- guests/playbooks/update/tasks/bootloader.yml | 2 +- guests/playbooks/update/tasks/gitlab.yml | 2 +- guests/playbooks/update/tasks/kludges.yml | 8 +-- guests/playbooks/update/tasks/packages.yml | 16 +++--- 20 files changed, 112 insertions(+), 93 deletions(-) diff --git a/guests/host_vars/libvirt-centos-7/main.yml b/guests/host_vars/libvirt-centos-7/main.yml index 104b702..ac40c7c 100644 --- a/guests/host_vars/libvirt-centos-7/main.yml +++ b/guests/host_vars/libvirt-centos-7/main.yml @@ -15,10 +15,12 @@ projects: - osinfo-db-tools - virt-viewer +os: + name: 'CentOS' + version: '7' + package_format: 'rpm' package_manager: 'yum' -os_name: 'CentOS' -os_version: '7' bash: /bin/bash cc: /usr/bin/gcc diff --git a/guests/host_vars/libvirt-centos-8/main.yml b/guests/host_vars/libvirt-centos-8/main.yml index 441802c..77ba6b1 100644 --- a/guests/host_vars/libvirt-centos-8/main.yml +++ b/guests/host_vars/libvirt-centos-8/main.yml @@ -15,10 +15,12 @@ projects: - virt-manager - virt-viewer +os: + name: 'CentOS' + version: '8' + package_format: 'rpm' package_manager: 'dnf' -os_name: 'CentOS' -os_version: '8' bash: /bin/bash cc: /usr/bin/gcc diff --git a/guests/host_vars/libvirt-debian-10/main.yml b/guests/host_vars/libvirt-debian-10/main.yml index e3aca55..cb859d1 100644 --- a/guests/host_vars/libvirt-debian-10/main.yml +++ b/guests/host_vars/libvirt-debian-10/main.yml @@ -17,10 +17,12 @@ projects: - virt-manager - virt-viewer +os: + name: 'Debian' + version: '10' + package_format: 'deb' package_manager: 'apt-get' -os_name: 'Debian' -os_version: '10' bash: /bin/bash cc: /usr/bin/gcc diff --git a/guests/host_vars/libvirt-debian-9/main.yml b/guests/host_vars/libvirt-debian-9/main.yml index 0599aa4..c9b739d 100644 --- a/guests/host_vars/libvirt-debian-9/main.yml +++ b/guests/host_vars/libvirt-debian-9/main.yml @@ -17,10 +17,12 @@ projects: - virt-manager - virt-viewer +os: + name: 'Debian' + version: '9' + package_format: 'deb' package_manager: 'apt-get' -os_name: 'Debian' -os_version: '9' bash: /bin/bash cc: /usr/bin/gcc diff --git a/guests/host_vars/libvirt-debian-sid/main.yml b/guests/host_vars/libvirt-debian-sid/main.yml index 565b0be..6e1adda 100644 --- a/guests/host_vars/libvirt-debian-sid/main.yml +++ b/guests/host_vars/libvirt-debian-sid/main.yml @@ -17,10 +17,12 @@ projects: - virt-manager - virt-viewer +os: + name: 'Debian' + version: 'Sid' + package_format: 'deb' package_manager: 'apt-get' -os_name: 'Debian' -os_version: 'Sid' bash: /bin/bash cc: /usr/bin/gcc diff --git a/guests/host_vars/libvirt-fedora-30/main.yml b/guests/host_vars/libvirt-fedora-30/main.yml index d31a84a..2a317c3 100644 --- a/guests/host_vars/libvirt-fedora-30/main.yml +++ b/guests/host_vars/libvirt-fedora-30/main.yml @@ -30,10 +30,12 @@ projects: - virt-viewer+mingw32 - virt-viewer+mingw64 +os: + name: 'Fedora' + version: '30' + package_format: 'rpm' package_manager: 'dnf' -os_name: 'Fedora' -os_version: '30' bash: /bin/bash cc: /usr/bin/gcc diff --git a/guests/host_vars/libvirt-fedora-31/main.yml b/guests/host_vars/libvirt-fedora-31/main.yml index 389cfac..ade64ed 100644 --- a/guests/host_vars/libvirt-fedora-31/main.yml +++ b/guests/host_vars/libvirt-fedora-31/main.yml @@ -18,10 +18,12 @@ projects: - virt-manager - virt-viewer +os: + name: 'Fedora' + version: '31' + package_format: 'rpm' package_manager: 'dnf' -os_name: 'Fedora' -os_version: '31' bash: /bin/bash cc: /usr/bin/gcc diff --git a/guests/host_vars/libvirt-fedora-rawhide/main.yml b/guests/host_vars/libvirt-fedora-rawhide/main.yml index 374cb4c..b11e37c 100644 --- a/guests/host_vars/libvirt-fedora-rawhide/main.yml +++ b/guests/host_vars/libvirt-fedora-rawhide/main.yml @@ -18,10 +18,12 @@ projects: - virt-manager - virt-viewer +os: + name: 'Fedora' + version: 'Rawhide' + package_format: 'rpm' package_manager: 'dnf' -os_name: 'Fedora' -os_version: 'Rawhide' bash: /bin/bash cc: /usr/bin/gcc diff --git a/guests/host_vars/libvirt-freebsd-11/main.yml b/guests/host_vars/libvirt-freebsd-11/main.yml index c289221..b01c62b 100644 --- a/guests/host_vars/libvirt-freebsd-11/main.yml +++ b/guests/host_vars/libvirt-freebsd-11/main.yml @@ -16,10 +16,12 @@ projects: - virt-manager - virt-viewer +os: + name: 'FreeBSD' + version: '11' + package_format: 'pkg' package_manager: 'pkg' -os_name: 'FreeBSD' -os_version: '11' bash: /usr/local/bin/bash cc: /usr/bin/clang diff --git a/guests/host_vars/libvirt-freebsd-12/main.yml b/guests/host_vars/libvirt-freebsd-12/main.yml index 3bc3cc6..5da1446 100644 --- a/guests/host_vars/libvirt-freebsd-12/main.yml +++ b/guests/host_vars/libvirt-freebsd-12/main.yml @@ -16,10 +16,12 @@ projects: - virt-manager - virt-viewer +os: + name: 'FreeBSD' + version: '12' + package_format: 'pkg' package_manager: 'pkg' -os_name: 'FreeBSD' -os_version: '12' bash: /usr/local/bin/bash cc: /usr/bin/clang diff --git a/guests/host_vars/libvirt-freebsd-current/main.yml b/guests/host_vars/libvirt-freebsd-current/main.yml index 02297e0..03e3615 100644 --- a/guests/host_vars/libvirt-freebsd-current/main.yml +++ b/guests/host_vars/libvirt-freebsd-current/main.yml @@ -16,10 +16,12 @@ projects: - virt-manager - virt-viewer +os: + name: 'FreeBSD' + version: 'Current' + package_format: 'pkg' package_manager: 'pkg' -os_name: 'FreeBSD' -os_version: 'Current' bash: /usr/local/bin/bash cc: /usr/bin/clang diff --git a/guests/host_vars/libvirt-opensuse-151/main.yml b/guests/host_vars/libvirt-opensuse-151/main.yml index 656de36..4050817 100644 --- a/guests/host_vars/libvirt-opensuse-151/main.yml +++ b/guests/host_vars/libvirt-opensuse-151/main.yml @@ -16,10 +16,12 @@ projects: - virt-manager - virt-viewer +os: + name: 'OpenSUSE' + version: '151' + package_format: 'rpm' package_manager: 'zypper' -os_name: 'OpenSUSE' -os_version: '151' bash: /bin/bash cc: /usr/bin/gcc diff --git a/guests/host_vars/libvirt-ubuntu-1604/main.yml b/guests/host_vars/libvirt-ubuntu-1604/main.yml index 476d7ed..1e7ab72 100644 --- a/guests/host_vars/libvirt-ubuntu-1604/main.yml +++ b/guests/host_vars/libvirt-ubuntu-1604/main.yml @@ -16,10 +16,12 @@ projects: - osinfo-db-tools - virt-viewer +os: + name: 'Ubuntu' + version: '1604' + package_format: 'deb' package_manager: 'apt-get' -os_name: 'Ubuntu' -os_version: '1604' bash: /bin/bash cc: /usr/bin/gcc diff --git a/guests/host_vars/libvirt-ubuntu-1804/main.yml b/guests/host_vars/libvirt-ubuntu-1804/main.yml index 5a1ffcf..73e4842 100644 --- a/guests/host_vars/libvirt-ubuntu-1804/main.yml +++ b/guests/host_vars/libvirt-ubuntu-1804/main.yml @@ -17,10 +17,12 @@ projects: - virt-manager - virt-viewer +os: + name: 'Ubuntu' + version: '1804' + package_format: 'deb' package_manager: 'apt-get' -os_name: 'Ubuntu' -os_version: '1804' bash: /bin/bash cc: /usr/bin/gcc diff --git a/guests/lcitool b/guests/lcitool index f4565bc..0a8ad49 100755 --- a/guests/lcitool +++ b/guests/lcitool @@ -582,11 +582,11 @@ class Application: # Different operating systems require different configuration # files for unattended installation to work, but some operating # systems simply don't support unattended installation at all - if facts["os_name"] in ["Debian", "Ubuntu"]: + if facts["os"]["name"] in ["Debian", "Ubuntu"]: install_config = "preseed.cfg" - elif facts["os_name"] in ["CentOS", "Fedora"]: + elif facts["os"]["name"] in ["CentOS", "Fedora"]: install_config = "kickstart.cfg" - elif facts["os_name"] == "OpenSUSE": + elif facts["os"]["name"] == "OpenSUSE": install_config = "autoinst.xml" else: raise Exception( @@ -707,9 +707,6 @@ class Application: def _dockerfile_build_varmap_deb(self, facts, mappings, pip_mappings, projects, cross_arch): package_format = facts["package_format"] package_manager = facts["package_manager"] - os_name = facts["os_name"] - os_version = facts["os_version"] - os_full = os_name + os_version pkgs = {} cross_pkgs = {} @@ -717,8 +714,8 @@ class Application: base_keys = [ "default", package_format, - os_name, - os_full, + facts["os"]["name"], + facts["os"]["name"] + facts["os"]["version"], ] cross_keys = [] if cross_arch: @@ -780,9 +777,6 @@ class Application: def _dockerfile_build_varmap_rpm(self, facts, mappings, pip_mappings, projects, cross_arch): package_format = facts["package_format"] package_manager = facts["package_manager"] - os_name = facts["os_name"] - os_version = facts["os_version"] - os_full = os_name + os_version pkgs = {} cross_pkgs = {} @@ -790,8 +784,8 @@ class Application: keys = [ "default", package_format, - os_name, - os_full, + facts["os"]["name"], + facts["os"]["name"] + facts["os"]["version"], ] # We need to add the base project manually here: the standard @@ -846,8 +840,6 @@ class Application: def _dockerfile_format(self, facts, cross_arch, varmap): package_format = facts["package_format"] package_manager = facts["package_manager"] - os_name = facts["os_name"] - os_version = facts["os_version"] print("FROM {}".format(facts["docker_base"])) @@ -867,15 +859,15 @@ class Application: elif package_format == "rpm": # Rawhide needs this because the keys used to sign packages are # cycled from time to time - if os_name == "Fedora" and os_version == "Rawhide": + if facts["os"]["name"] == "Fedora" and facts["os"]["version"] == "Rawhide": commands.extend([ "{package_manager} update -y --nogpgcheck fedora-gpg-keys" ]) - if os_name == "CentOS": + if facts["os"]["name"] == "CentOS": # Starting with CentOS 8, most -devel packages are shipped in # the PowerTools repository, which is not enabled by default - if os_version != "7": + if facts["os"]["version"] != "7": commands.extend([ "{package_manager} install 'dnf-command(config-manager)' -y", "{package_manager} config-manager --set-enabled PowerTools -y", @@ -883,7 +875,7 @@ class Application: # VZ development packages are only available for CentOS/RHEL-7 # right now and need a 3rd party repository enabled - if os_version == "7": + if facts["os"]["version"] == "7": repo = self._get_openvz_repo() varmap["vzrepo"] = "\\n\\\n".join(repo.split("\n")) key = self._get_openvz_key() @@ -908,7 +900,7 @@ class Application: # openSUSE doesn't seem to have a convenient way to remove all # unnecessary packages, but CentOS and Fedora do - if os_name == "OpenSUSE": + if facts["os"]["name"] == "OpenSUSE": commands.extend([ "{package_manager} clean --all", ]) @@ -995,28 +987,27 @@ class Application: facts = self._inventory.get_facts(host) package_format = facts["package_format"] package_manager = facts["package_manager"] - os_name = facts["os_name"] - os_version = facts["os_version"] - os_full = os_name + os_version cross_arch = args.cross_arch if package_format not in ["deb", "rpm"]: raise Exception("Host {} doesn't support Dockerfiles".format(host)) if cross_arch: - if os_name not in ["Debian", "Fedora"]: - raise Exception("Cannot cross compile on {}".format(os_name)) - if os_name == "Debian" and cross_arch.startswith("mingw"): + if facts["os"]["name"] not in ["Debian", "Fedora"]: + raise Exception("Cannot cross compile on {}".format( + facts["os"]["name"], + )) + if facts["os"]["name"] == "Debian" and cross_arch.startswith("mingw"): raise Exception( "Cannot cross compile for {} on {}".format( cross_arch, - os_name, + facts["os"]["name"], ) ) - if os_name == "Fedora" and not cross_arch.startswith("mingw"): + if facts["os"]["name"] == "Fedora" and not cross_arch.startswith("mingw"): raise Exception( "Cannot cross compile for {} on {}".format( cross_arch, - os_name, + facts["os"]["name"], ) ) if cross_arch == self._native_arch: diff --git a/guests/playbooks/update/tasks/base.yml b/guests/playbooks/update/tasks/base.yml index 97f365e..e962c56 100644 --- a/guests/playbooks/update/tasks/base.yml +++ b/guests/playbooks/update/tasks/base.yml @@ -6,23 +6,23 @@ owner: root group: root when: - - os_name == 'Fedora' - - os_version == 'Rawhide' + - os.name == 'Fedora' + - os.version == 'Rawhide' - name: Enable PowerTools repository command: '{{ package_manager }} config-manager --set-enabled PowerTools -y' args: warn: no when: - - os_name == 'CentOS' - - os_version == '8' + - os.name == 'CentOS' + - os.version == '8' - name: Enable EPEL repository package: name: epel-release state: latest when: - - os_name == 'CentOS' + - os.name == 'CentOS' - name: Create OpenVZ key template: @@ -31,16 +31,16 @@ owner: root group: root when: - - os_name == 'CentOS' - - os_version == '7' + - os.name == 'CentOS' + - os.version == '7' - name: Import OpenVZ key command: 'rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-OpenVZ' args: warn: no when: - - os_name == 'CentOS' - - os_version == '7' + - os.name == 'CentOS' + - os.version == '7' - name: Enable OpenVZ repository template: @@ -49,8 +49,8 @@ owner: root group: root when: - - os_name == 'CentOS' - - os_version == '7' + - os.name == 'CentOS' + - os.version == '7' - name: Update installed packages package: @@ -58,8 +58,8 @@ state: latest when: - package_format == 'rpm' - - not ( os_name == 'Fedora' and - os_version == 'Rawhide' ) + - not ( os.name == 'Fedora' and + os.version == 'Rawhide' ) - name: Update installed packages package: @@ -67,24 +67,24 @@ state: latest disable_gpg_check: yes when: - - os_name == 'Fedora' - - os_version == 'Rawhide' + - os.name == 'Fedora' + - os.version == 'Rawhide' - name: Update installed packages command: '{{ package_manager }} update --refresh --exclude "kernel*" -y' args: warn: no when: - - os_name == 'Fedora' - - os_version == 'Rawhide' + - os.name == 'Fedora' + - os.version == 'Rawhide' - name: Update installed packages command: '{{ package_manager }} update --disablerepo="*" --enablerepo=fedora-rawhide-kernel-nodebug "kernel*" -y' args: warn: no when: - - os_name == 'Fedora' - - os_version == 'Rawhide' + - os.name == 'Fedora' + - os.version == 'Rawhide' - name: Update installed packages apt: @@ -105,7 +105,7 @@ args: warn: no when: - - os_name == 'Fedora' + - os.name == 'Fedora' - name: Clean up packages after update shell: '{{ package_manager }} clean packages -y && {{ package_manager }} autoremove -y' @@ -113,14 +113,14 @@ warn: no when: - package_format == 'rpm' - - os_name != 'OpenSUSE' + - os.name != 'OpenSUSE' - name: Clean up packages after update shell: '{{ package_manager }} clean' args: warn: no when: - - os_name == 'OpenSUSE' + - os.name == 'OpenSUSE' - name: Clean up packages after update apt: diff --git a/guests/playbooks/update/tasks/bootloader.yml b/guests/playbooks/update/tasks/bootloader.yml index 3de8c0d..eeaebe6 100644 --- a/guests/playbooks/update/tasks/bootloader.yml +++ b/guests/playbooks/update/tasks/bootloader.yml @@ -48,4 +48,4 @@ - { key: 'console', value: 'comconsole' } - { key: 'autoboot_delay', value: '1' } when: - - os_name == 'FreeBSD' + - os.name == 'FreeBSD' diff --git a/guests/playbooks/update/tasks/gitlab.yml b/guests/playbooks/update/tasks/gitlab.yml index 7691442..f07279c 100644 --- a/guests/playbooks/update/tasks/gitlab.yml +++ b/guests/playbooks/update/tasks/gitlab.yml @@ -14,7 +14,7 @@ force: yes - name: Register the gitlab-runner agent - shell: 'gitlab-runner register --non-interactive --config "{{ gitlab_runner_config_dir }}/config.toml" --registration-token "{{ gitlab_runner_secret }}" --url "{{ gitlab_url }}" --executor shell --tag-list "{{ os_name|lower }}-{{ os_version }}"' + shell: 'gitlab-runner register --non-interactive --config "{{ gitlab_runner_config_dir }}/config.toml" --registration-token "{{ gitlab_runner_secret }}" --url "{{ gitlab_url }}" --executor shell --tag-list "{{ os.name|lower }}-{{ os.version }}"' args: creates: '{{ gitlab_runner_config_dir }}/config.toml' diff --git a/guests/playbooks/update/tasks/kludges.yml b/guests/playbooks/update/tasks/kludges.yml index 8af36ab..96fe1a5 100644 --- a/guests/playbooks/update/tasks/kludges.yml +++ b/guests/playbooks/update/tasks/kludges.yml @@ -11,7 +11,7 @@ owner: root group: wheel when: - - os_name == 'FreeBSD' + - os.name == 'FreeBSD' - flavor == "jenkins" # FreeBSD compiles bash without defining SSH_SOURCE_BASHRC, which means @@ -24,7 +24,7 @@ replace: '\1:setenv=BASH_ENV=~/.bashrc,\3:\\' register: loginconf when: - - os_name == 'FreeBSD' + - os.name == 'FreeBSD' - name: Enable ~/.bashrc command: cap_mkdb /etc/login.conf @@ -41,7 +41,7 @@ path: /usr/local/bin/intltool-update register: intltoolupdate when: - - os_name == 'FreeBSD' + - os.name == 'FreeBSD' - name: Fix intltool-update replace: @@ -49,5 +49,5 @@ regexp: '^(.*) !~ /\\\$\{\?\$2\}\?/;$' replace: '\1 !~ /\\$\\{?$2}?/;' when: - - os_name == 'FreeBSD' + - os.name == 'FreeBSD' - intltoolupdate.stat.exists diff --git a/guests/playbooks/update/tasks/packages.yml b/guests/playbooks/update/tasks/packages.yml index 4e7d5f6..4517a86 100644 --- a/guests/playbooks/update/tasks/packages.yml +++ b/guests/playbooks/update/tasks/packages.yml @@ -38,19 +38,19 @@ - name: '{{ project }}: Look up mappings (OS name)' set_fact: - resolved: '{{ resolved|combine({ item: mappings[item][os_name] }) }}' + resolved: '{{ resolved|combine({ item: mappings[item][os.name] }) }}' with_items: '{{ packages }}' when: - - mappings[item][os_name] is defined + - mappings[item][os.name] is defined - name: '{{ project }}: Look up mappings (OS version)' set_fact: - resolved: '{{ resolved|combine({ item: mappings[item][os_name + os_version] }) }}' + resolved: '{{ resolved|combine({ item: mappings[item][os.name + os.version] }) }}' with_items: '{{ packages }}' when: - - mappings[item][os_name + os_version] is defined + - mappings[item][os.name + os.version] is defined - name: '{{ project }}: Look up mappings (arch with default)' set_fact: @@ -70,19 +70,19 @@ - name: '{{ project }}: Look up mappings (arch with OS name)' set_fact: - resolved: '{{ resolved|combine({ item: mappings[item]["x86_64" + "-" + os_name] }) }}' + resolved: '{{ resolved|combine({ item: mappings[item]["x86_64" + "-" + os.name] }) }}' with_items: '{{ packages }}' when: - - mappings[item]["x86_64" + "-" + os_name] is defined + - mappings[item]["x86_64" + "-" + os.name] is defined - name: '{{ project }}: Look up mappings (arch with OS version)' set_fact: - resolved: '{{ resolved|combine({ item: mappings[item]["x86_64" + "-" + os_name + os_version] }) }}' + resolved: '{{ resolved|combine({ item: mappings[item]["x86_64" + "-" + os.name + os.version] }) }}' with_items: '{{ packages }}' when: - - mappings[item]["x86_64" + "-" + os_name + os_version] is defined + - mappings[item]["x86_64" + "-" + os.name + os.version] is defined - set_fact: flattened: [] -- 2.25.4

On Tue, Apr 28, 2020 at 03:37:58PM +0200, Andrea Bolognani wrote:
Ansible and Python both support actual dictionaries, so make use of them in the inventory instead of emulating them by using variable names sharing the same prefix.
Signed-off-by: Andrea Bolognani <abologna@redhat.com> Reviewed-by: Erik Skultety <eskultet@redhat.com>

Ansible and Python both support actual dictionaries, so make use of them in the inventory instead of emulating them by using variable names sharing the same prefix. Signed-off-by: Andrea Bolognani <abologna@redhat.com> --- guests/host_vars/libvirt-centos-7/main.yml | 5 +- guests/host_vars/libvirt-centos-8/main.yml | 5 +- guests/host_vars/libvirt-debian-10/main.yml | 5 +- guests/host_vars/libvirt-debian-9/main.yml | 5 +- guests/host_vars/libvirt-debian-sid/main.yml | 5 +- guests/host_vars/libvirt-fedora-30/main.yml | 5 +- guests/host_vars/libvirt-fedora-31/main.yml | 5 +- .../host_vars/libvirt-fedora-rawhide/main.yml | 5 +- guests/host_vars/libvirt-freebsd-11/main.yml | 5 +- guests/host_vars/libvirt-freebsd-12/main.yml | 5 +- .../libvirt-freebsd-current/main.yml | 5 +- .../host_vars/libvirt-opensuse-151/main.yml | 5 +- guests/host_vars/libvirt-ubuntu-1604/main.yml | 5 +- guests/host_vars/libvirt-ubuntu-1804/main.yml | 5 +- guests/lcitool | 79 ++++++++----------- guests/playbooks/update/tasks/base.yml | 28 +++---- guests/playbooks/update/tasks/bootstrap.yml | 6 +- guests/playbooks/update/tasks/packages.yml | 8 +- guests/playbooks/update/tasks/services.yml | 2 +- guests/playbooks/update/templates/bashrc.j2 | 6 +- 20 files changed, 101 insertions(+), 98 deletions(-) diff --git a/guests/host_vars/libvirt-centos-7/main.yml b/guests/host_vars/libvirt-centos-7/main.yml index ac40c7c..66cb113 100644 --- a/guests/host_vars/libvirt-centos-7/main.yml +++ b/guests/host_vars/libvirt-centos-7/main.yml @@ -19,8 +19,9 @@ os: name: 'CentOS' version: '7' -package_format: 'rpm' -package_manager: 'yum' +packaging: + format: rpm + command: yum bash: /bin/bash cc: /usr/bin/gcc diff --git a/guests/host_vars/libvirt-centos-8/main.yml b/guests/host_vars/libvirt-centos-8/main.yml index 77ba6b1..e48c1ff 100644 --- a/guests/host_vars/libvirt-centos-8/main.yml +++ b/guests/host_vars/libvirt-centos-8/main.yml @@ -19,8 +19,9 @@ os: name: 'CentOS' version: '8' -package_format: 'rpm' -package_manager: 'dnf' +packaging: + format: 'rpm' + command: 'dnf' bash: /bin/bash cc: /usr/bin/gcc diff --git a/guests/host_vars/libvirt-debian-10/main.yml b/guests/host_vars/libvirt-debian-10/main.yml index cb859d1..da30dac 100644 --- a/guests/host_vars/libvirt-debian-10/main.yml +++ b/guests/host_vars/libvirt-debian-10/main.yml @@ -21,8 +21,9 @@ os: name: 'Debian' version: '10' -package_format: 'deb' -package_manager: 'apt-get' +packaging: + format: 'deb' + command: 'apt-get' bash: /bin/bash cc: /usr/bin/gcc diff --git a/guests/host_vars/libvirt-debian-9/main.yml b/guests/host_vars/libvirt-debian-9/main.yml index c9b739d..82ed8b2 100644 --- a/guests/host_vars/libvirt-debian-9/main.yml +++ b/guests/host_vars/libvirt-debian-9/main.yml @@ -21,8 +21,9 @@ os: name: 'Debian' version: '9' -package_format: 'deb' -package_manager: 'apt-get' +packaging: + format: 'deb' + command: 'apt-get' bash: /bin/bash cc: /usr/bin/gcc diff --git a/guests/host_vars/libvirt-debian-sid/main.yml b/guests/host_vars/libvirt-debian-sid/main.yml index 6e1adda..f0c0c8e 100644 --- a/guests/host_vars/libvirt-debian-sid/main.yml +++ b/guests/host_vars/libvirt-debian-sid/main.yml @@ -21,8 +21,9 @@ os: name: 'Debian' version: 'Sid' -package_format: 'deb' -package_manager: 'apt-get' +packaging: + format: 'deb' + command: 'apt-get' bash: /bin/bash cc: /usr/bin/gcc diff --git a/guests/host_vars/libvirt-fedora-30/main.yml b/guests/host_vars/libvirt-fedora-30/main.yml index 2a317c3..d9e539e 100644 --- a/guests/host_vars/libvirt-fedora-30/main.yml +++ b/guests/host_vars/libvirt-fedora-30/main.yml @@ -34,8 +34,9 @@ os: name: 'Fedora' version: '30' -package_format: 'rpm' -package_manager: 'dnf' +packaging: + format: 'rpm' + command: 'dnf' bash: /bin/bash cc: /usr/bin/gcc diff --git a/guests/host_vars/libvirt-fedora-31/main.yml b/guests/host_vars/libvirt-fedora-31/main.yml index ade64ed..b884e7f 100644 --- a/guests/host_vars/libvirt-fedora-31/main.yml +++ b/guests/host_vars/libvirt-fedora-31/main.yml @@ -22,8 +22,9 @@ os: name: 'Fedora' version: '31' -package_format: 'rpm' -package_manager: 'dnf' +packaging: + format: 'rpm' + command: 'dnf' bash: /bin/bash cc: /usr/bin/gcc diff --git a/guests/host_vars/libvirt-fedora-rawhide/main.yml b/guests/host_vars/libvirt-fedora-rawhide/main.yml index b11e37c..732b988 100644 --- a/guests/host_vars/libvirt-fedora-rawhide/main.yml +++ b/guests/host_vars/libvirt-fedora-rawhide/main.yml @@ -22,8 +22,9 @@ os: name: 'Fedora' version: 'Rawhide' -package_format: 'rpm' -package_manager: 'dnf' +packaging: + format: 'rpm' + command: 'dnf' bash: /bin/bash cc: /usr/bin/gcc diff --git a/guests/host_vars/libvirt-freebsd-11/main.yml b/guests/host_vars/libvirt-freebsd-11/main.yml index b01c62b..e22b688 100644 --- a/guests/host_vars/libvirt-freebsd-11/main.yml +++ b/guests/host_vars/libvirt-freebsd-11/main.yml @@ -20,8 +20,9 @@ os: name: 'FreeBSD' version: '11' -package_format: 'pkg' -package_manager: 'pkg' +packaging: + format: 'pkg' + command: 'pkg' bash: /usr/local/bin/bash cc: /usr/bin/clang diff --git a/guests/host_vars/libvirt-freebsd-12/main.yml b/guests/host_vars/libvirt-freebsd-12/main.yml index 5da1446..1fa718e 100644 --- a/guests/host_vars/libvirt-freebsd-12/main.yml +++ b/guests/host_vars/libvirt-freebsd-12/main.yml @@ -20,8 +20,9 @@ os: name: 'FreeBSD' version: '12' -package_format: 'pkg' -package_manager: 'pkg' +packaging: + format: 'pkg' + command: 'pkg' bash: /usr/local/bin/bash cc: /usr/bin/clang diff --git a/guests/host_vars/libvirt-freebsd-current/main.yml b/guests/host_vars/libvirt-freebsd-current/main.yml index 03e3615..706abc8 100644 --- a/guests/host_vars/libvirt-freebsd-current/main.yml +++ b/guests/host_vars/libvirt-freebsd-current/main.yml @@ -20,8 +20,9 @@ os: name: 'FreeBSD' version: 'Current' -package_format: 'pkg' -package_manager: 'pkg' +packaging: + format: 'pkg' + command: 'pkg' bash: /usr/local/bin/bash cc: /usr/bin/clang diff --git a/guests/host_vars/libvirt-opensuse-151/main.yml b/guests/host_vars/libvirt-opensuse-151/main.yml index 4050817..b80a497 100644 --- a/guests/host_vars/libvirt-opensuse-151/main.yml +++ b/guests/host_vars/libvirt-opensuse-151/main.yml @@ -20,8 +20,9 @@ os: name: 'OpenSUSE' version: '151' -package_format: 'rpm' -package_manager: 'zypper' +packaging: + format: 'rpm' + command: 'zypper' bash: /bin/bash cc: /usr/bin/gcc diff --git a/guests/host_vars/libvirt-ubuntu-1604/main.yml b/guests/host_vars/libvirt-ubuntu-1604/main.yml index 1e7ab72..2d99e3a 100644 --- a/guests/host_vars/libvirt-ubuntu-1604/main.yml +++ b/guests/host_vars/libvirt-ubuntu-1604/main.yml @@ -20,8 +20,9 @@ os: name: 'Ubuntu' version: '1604' -package_format: 'deb' -package_manager: 'apt-get' +packaging: + format: 'deb' + command: 'apt-get' bash: /bin/bash cc: /usr/bin/gcc diff --git a/guests/host_vars/libvirt-ubuntu-1804/main.yml b/guests/host_vars/libvirt-ubuntu-1804/main.yml index 73e4842..4c63b35 100644 --- a/guests/host_vars/libvirt-ubuntu-1804/main.yml +++ b/guests/host_vars/libvirt-ubuntu-1804/main.yml @@ -21,8 +21,9 @@ os: name: 'Ubuntu' version: '1804' -package_format: 'deb' -package_manager: 'apt-get' +packaging: + format: 'deb' + command: 'apt-get' bash: /bin/bash cc: /usr/bin/gcc diff --git a/guests/lcitool b/guests/lcitool index 0a8ad49..89d5ef9 100755 --- a/guests/lcitool +++ b/guests/lcitool @@ -687,12 +687,12 @@ class Application: return r.read().rstrip() def _dockerfile_build_varmap(self, facts, mappings, pip_mappings, projects, cross_arch): - if facts["package_format"] == "deb": + if facts["packaging"]["format"] == "deb": varmap = self._dockerfile_build_varmap_deb(facts, mappings, pip_mappings, projects, cross_arch) - if facts["package_format"] == "rpm": + if facts["packaging"]["format"] == "rpm": varmap = self._dockerfile_build_varmap_rpm(facts, mappings, pip_mappings, projects, cross_arch) - varmap["package_manager"] = facts["package_manager"] + varmap["packaging_command"] = facts["packaging"]["command"] varmap["cc"] = facts["cc"] varmap["ccache"] = facts["ccache"] varmap["make"] = facts["make"] @@ -705,15 +705,12 @@ class Application: return varmap def _dockerfile_build_varmap_deb(self, facts, mappings, pip_mappings, projects, cross_arch): - package_format = facts["package_format"] - package_manager = facts["package_manager"] - pkgs = {} cross_pkgs = {} pip_pkgs = {} base_keys = [ "default", - package_format, + facts["packaging"]["format"], facts["os"]["name"], facts["os"]["name"] + facts["os"]["version"], ] @@ -752,7 +749,7 @@ class Application: if pkgs[package] is None or cross_policy in ["skip", "foreign"]: del pkgs[package] - pkg_align = " \\\n" + (" " * len("RUN " + package_manager + " ")) + pkg_align = " \\\n" + (" " * len("RUN " + facts["packaging"]["command"] + " ")) pip_pkg_align = " \\\n" + (" " * len("RUN pip3 ")) varmap = {} @@ -775,15 +772,12 @@ class Application: return varmap def _dockerfile_build_varmap_rpm(self, facts, mappings, pip_mappings, projects, cross_arch): - package_format = facts["package_format"] - package_manager = facts["package_manager"] - pkgs = {} cross_pkgs = {} pip_pkgs = {} keys = [ "default", - package_format, + facts["packaging"]["format"], facts["os"]["name"], facts["os"]["name"] + facts["os"]["version"], ] @@ -823,7 +817,7 @@ class Application: if cross_pkgs[package] is None: del cross_pkgs[package] - pkg_align = " \\\n" + (" " * len("RUN " + package_manager + " ")) + pkg_align = " \\\n" + (" " * len("RUN " + facts["packaging"]["format"] + " ")) pip_pkg_align = " \\\n" + (" " * len("RUN pip3 ")) varmap = {} @@ -838,30 +832,27 @@ class Application: return varmap def _dockerfile_format(self, facts, cross_arch, varmap): - package_format = facts["package_format"] - package_manager = facts["package_manager"] - print("FROM {}".format(facts["docker_base"])) commands = [] - if package_format == "deb": + if facts["packaging"]["format"] == "deb": commands.extend([ "export DEBIAN_FRONTEND=noninteractive", - "{package_manager} update", - "{package_manager} dist-upgrade -y", - "{package_manager} install --no-install-recommends -y {pkgs}", - "{package_manager} autoremove -y", - "{package_manager} autoclean -y", + "{packaging_command} update", + "{packaging_command} dist-upgrade -y", + "{packaging_command} install --no-install-recommends -y {pkgs}", + "{packaging_command} autoremove -y", + "{packaging_command} autoclean -y", "sed -Ei 's,^# (en_US\\.UTF-8 .*)$,\\1,' /etc/locale.gen", "dpkg-reconfigure locales", ]) - elif package_format == "rpm": + elif facts["packaging"]["format"] == "rpm": # Rawhide needs this because the keys used to sign packages are # cycled from time to time if facts["os"]["name"] == "Fedora" and facts["os"]["version"] == "Rawhide": commands.extend([ - "{package_manager} update -y --nogpgcheck fedora-gpg-keys" + "{packaging_command} update -y --nogpgcheck fedora-gpg-keys" ]) if facts["os"]["name"] == "CentOS": @@ -869,8 +860,8 @@ class Application: # the PowerTools repository, which is not enabled by default if facts["os"]["version"] != "7": commands.extend([ - "{package_manager} install 'dnf-command(config-manager)' -y", - "{package_manager} config-manager --set-enabled PowerTools -y", + "{packaging_command} install 'dnf-command(config-manager)' -y", + "{packaging_command} config-manager --set-enabled PowerTools -y", ]) # VZ development packages are only available for CentOS/RHEL-7 @@ -890,24 +881,24 @@ class Application: # Some of the packages we need are not part of CentOS proper # and are only available through EPEL commands.extend([ - "{package_manager} install -y epel-release", + "{packaging_command} install -y epel-release", ]) commands.extend([ - "{package_manager} update -y", - "{package_manager} install -y {pkgs}", + "{packaging_command} update -y", + "{packaging_command} install -y {pkgs}", ]) # openSUSE doesn't seem to have a convenient way to remove all # unnecessary packages, but CentOS and Fedora do if facts["os"]["name"] == "OpenSUSE": commands.extend([ - "{package_manager} clean --all", + "{packaging_command} clean --all", ]) else: commands.extend([ - "{package_manager} autoremove -y", - "{package_manager} clean all -y", + "{packaging_command} autoremove -y", + "{packaging_command} clean all -y", ]) commands.extend([ @@ -934,21 +925,21 @@ class Application: # Intentionally a separate RUN command from the above # so that the common packages of all cross-built images # share a Docker image layer. - if package_format == "deb": + if facts["packaging"]["format"] == "deb": cross_commands.extend([ "export DEBIAN_FRONTEND=noninteractive", "dpkg --add-architecture {cross_arch}", - "{package_manager} update", - "{package_manager} dist-upgrade -y", - "{package_manager} install --no-install-recommends -y dpkg-dev", - "{package_manager} install --no-install-recommends -y {cross_pkgs}", - "{package_manager} autoremove -y", - "{package_manager} autoclean -y", + "{packaging_command} update", + "{packaging_command} dist-upgrade -y", + "{packaging_command} install --no-install-recommends -y dpkg-dev", + "{packaging_command} install --no-install-recommends -y {cross_pkgs}", + "{packaging_command} autoremove -y", + "{packaging_command} autoclean -y", ]) - elif package_format == "rpm": + elif facts["packaging"]["format"] == "rpm": cross_commands.extend([ - "{package_manager} install -y {cross_pkgs}", - "{package_manager} clean all -y", + "{packaging_command} install -y {cross_pkgs}", + "{packaging_command} clean all -y", ]) cross_script = "\nRUN " + (" && \\\n ".join(cross_commands)) + "\n" @@ -985,11 +976,9 @@ class Application: host = hosts[0] facts = self._inventory.get_facts(host) - package_format = facts["package_format"] - package_manager = facts["package_manager"] cross_arch = args.cross_arch - if package_format not in ["deb", "rpm"]: + if facts["packaging"]["format"] not in ["deb", "rpm"]: raise Exception("Host {} doesn't support Dockerfiles".format(host)) if cross_arch: if facts["os"]["name"] not in ["Debian", "Fedora"]: diff --git a/guests/playbooks/update/tasks/base.yml b/guests/playbooks/update/tasks/base.yml index e962c56..d299988 100644 --- a/guests/playbooks/update/tasks/base.yml +++ b/guests/playbooks/update/tasks/base.yml @@ -10,7 +10,7 @@ - os.version == 'Rawhide' - name: Enable PowerTools repository - command: '{{ package_manager }} config-manager --set-enabled PowerTools -y' + command: '{{ packaging.command }} config-manager --set-enabled PowerTools -y' args: warn: no when: @@ -57,7 +57,7 @@ name: '*' state: latest when: - - package_format == 'rpm' + - packaging.format == 'rpm' - not ( os.name == 'Fedora' and os.version == 'Rawhide' ) @@ -71,7 +71,7 @@ - os.version == 'Rawhide' - name: Update installed packages - command: '{{ package_manager }} update --refresh --exclude "kernel*" -y' + command: '{{ packaging.command }} update --refresh --exclude "kernel*" -y' args: warn: no when: @@ -79,7 +79,7 @@ - os.version == 'Rawhide' - name: Update installed packages - command: '{{ package_manager }} update --disablerepo="*" --enablerepo=fedora-rawhide-kernel-nodebug "kernel*" -y' + command: '{{ packaging.command }} update --disablerepo="*" --enablerepo=fedora-rawhide-kernel-nodebug "kernel*" -y' args: warn: no when: @@ -91,32 +91,32 @@ upgrade: dist update_cache: yes when: - - package_format == 'deb' + - packaging.format == 'deb' - name: Update installed packages - shell: '{{ package_manager }} update && {{ package_manager }} upgrade -y' + shell: '{{ packaging.command }} update && {{ packaging.command }} upgrade -y' args: warn: no when: - - package_format == 'pkg' + - packaging.format == 'pkg' - name: Clean up packages after update - command: '{{ package_manager }} mark install "kernel*"' + command: '{{ packaging.command }} mark install "kernel*"' args: warn: no when: - os.name == 'Fedora' - name: Clean up packages after update - shell: '{{ package_manager }} clean packages -y && {{ package_manager }} autoremove -y' + shell: '{{ packaging.command }} clean packages -y && {{ packaging.command }} autoremove -y' args: warn: no when: - - package_format == 'rpm' + - packaging.format == 'rpm' - os.name != 'OpenSUSE' - name: Clean up packages after update - shell: '{{ package_manager }} clean' + shell: '{{ packaging.command }} clean' args: warn: no when: @@ -127,14 +127,14 @@ autoclean: yes autoremove: yes when: - - package_format == 'deb' + - packaging.format == 'deb' - name: Clean up packages after update - shell: '{{ package_manager }} clean -y && {{ package_manager }} autoremove -y' + shell: '{{ packaging.command }} clean -y && {{ packaging.command }} autoremove -y' args: warn: no when: - - package_format == 'pkg' + - packaging.format == 'pkg' - name: Configure hostname hostname: diff --git a/guests/playbooks/update/tasks/bootstrap.yml b/guests/playbooks/update/tasks/bootstrap.yml index 410fe66..ed36cb5 100644 --- a/guests/playbooks/update/tasks/bootstrap.yml +++ b/guests/playbooks/update/tasks/bootstrap.yml @@ -1,8 +1,8 @@ --- - name: Bootstrap the pkgng package manager - raw: 'env ASSUME_ALWAYS_YES=YES {{ package_manager }} bootstrap' + raw: 'env ASSUME_ALWAYS_YES=YES {{ packaging.command }} bootstrap' when: - - package_format == 'pkg' + - packaging.format == 'pkg' - name: Bootstrap Ansible - raw: '{{ package_manager }} install -y {{ ansible_python_package }}' + raw: '{{ packaging.command }} install -y {{ ansible_python_package }}' diff --git a/guests/playbooks/update/tasks/packages.yml b/guests/playbooks/update/tasks/packages.yml index 4517a86..f656cf5 100644 --- a/guests/playbooks/update/tasks/packages.yml +++ b/guests/playbooks/update/tasks/packages.yml @@ -30,11 +30,11 @@ - name: '{{ project }}: Look up mappings (package format)' set_fact: - resolved: '{{ resolved|combine({ item: mappings[item][package_format] }) }}' + resolved: '{{ resolved|combine({ item: mappings[item][packaging.format] }) }}' with_items: '{{ packages }}' when: - - mappings[item][package_format] is defined + - mappings[item][packaging.format] is defined - name: '{{ project }}: Look up mappings (OS name)' set_fact: @@ -62,11 +62,11 @@ - name: '{{ project }}: Look up mappings (arch with package format)' set_fact: - resolved: '{{ resolved|combine({ item: mappings[item]["x86_64" + "-" + package_format] }) }}' + resolved: '{{ resolved|combine({ item: mappings[item]["x86_64" + "-" + packaging.format] }) }}' with_items: '{{ packages }}' when: - - mappings[item]["x86_64" + "-" + package_format] is defined + - mappings[item]["x86_64" + "-" + packaging.format] is defined - name: '{{ project }}: Look up mappings (arch with OS name)' set_fact: diff --git a/guests/playbooks/update/tasks/services.yml b/guests/playbooks/update/tasks/services.yml index 81e282a..d4cf395 100644 --- a/guests/playbooks/update/tasks/services.yml +++ b/guests/playbooks/update/tasks/services.yml @@ -5,7 +5,7 @@ - set_fact: chrony: chronyd when: - - package_format != 'deb' + - packaging.format != 'deb' - name: 'Enable services' service: diff --git a/guests/playbooks/update/templates/bashrc.j2 b/guests/playbooks/update/templates/bashrc.j2 index 0f9c6c1..1c90a42 100644 --- a/guests/playbooks/update/templates/bashrc.j2 +++ b/guests/playbooks/update/templates/bashrc.j2 @@ -19,13 +19,13 @@ export OSINFO_SYSTEM_DIR="$VIRT_PREFIX/share/osinfo" # These search paths need to encode the OS architecture in some way # in order to work, so use the appropriate tool to obtain this # information and adjust them accordingly -package_format="{{ package_format }}" -if test "$package_format" = "deb"; then +packaging_format="{{ packaging.format }}" +if test "$packaging_format" = "deb"; then multilib=$(dpkg-architecture -q DEB_TARGET_MULTIARCH) export LD_LIBRARY_PATH="$VIRT_PREFIX/lib/$multilib:$LD_LIBRARY_PATH" export PKG_CONFIG_PATH="$VIRT_PREFIX/lib/$multilib/pkgconfig:$PKG_CONFIG_PATH" export GI_TYPELIB_PATH="$VIRT_PREFIX/lib/$multilib/girepository-1.0:$GI_TYPELIB_PATH" -elif test "$package_format" = "rpm"; then +elif test "$packaging_format" = "rpm"; then multilib=$(rpm --eval '%{_lib}') export LD_LIBRARY_PATH="$VIRT_PREFIX/$multilib:$LD_LIBRARY_PATH" export PKG_CONFIG_PATH="$VIRT_PREFIX/$multilib/pkgconfig:$PKG_CONFIG_PATH" -- 2.25.4

On Tue, Apr 28, 2020 at 03:37:59PM +0200, Andrea Bolognani wrote:
Ansible and Python both support actual dictionaries, so make use of them in the inventory instead of emulating them by using variable names sharing the same prefix.
Signed-off-by: Andrea Bolognani <abologna@redhat.com> Reviewed-by: Erik Skultety <eskultet@redhat.com>

Ansible and Python both support actual dictionaries, so make use of them in the inventory instead of having a bunch of randomly named variables lumped together. This commit is best viewed with 'git show -w'. Signed-off-by: Andrea Bolognani <abologna@redhat.com> --- guests/host_vars/libvirt-centos-7/main.yml | 19 ++++++++------- guests/host_vars/libvirt-centos-8/main.yml | 19 ++++++++------- guests/host_vars/libvirt-debian-10/main.yml | 19 ++++++++------- guests/host_vars/libvirt-debian-9/main.yml | 19 ++++++++------- guests/host_vars/libvirt-debian-sid/main.yml | 19 ++++++++------- guests/host_vars/libvirt-fedora-30/main.yml | 19 ++++++++------- guests/host_vars/libvirt-fedora-31/main.yml | 19 ++++++++------- .../host_vars/libvirt-fedora-rawhide/main.yml | 19 ++++++++------- guests/host_vars/libvirt-freebsd-11/main.yml | 19 ++++++++------- guests/host_vars/libvirt-freebsd-12/main.yml | 19 ++++++++------- .../libvirt-freebsd-current/main.yml | 19 ++++++++------- .../host_vars/libvirt-opensuse-151/main.yml | 19 ++++++++------- guests/host_vars/libvirt-ubuntu-1604/main.yml | 19 ++++++++------- guests/host_vars/libvirt-ubuntu-1804/main.yml | 19 ++++++++------- guests/lcitool | 24 +++++++++---------- guests/playbooks/update/tasks/global.yml | 4 ++-- guests/playbooks/update/tasks/jenkins.yml | 2 +- guests/playbooks/update/tasks/users.yml | 4 ++-- guests/playbooks/update/templates/bashrc.j2 | 6 ++--- .../update/templates/jenkins.service.j2 | 2 +- 20 files changed, 161 insertions(+), 147 deletions(-) diff --git a/guests/host_vars/libvirt-centos-7/main.yml b/guests/host_vars/libvirt-centos-7/main.yml index 66cb113..d6efd00 100644 --- a/guests/host_vars/libvirt-centos-7/main.yml +++ b/guests/host_vars/libvirt-centos-7/main.yml @@ -23,15 +23,16 @@ packaging: format: rpm command: yum -bash: /bin/bash -cc: /usr/bin/gcc -ccache: /usr/bin/ccache -java: /usr/bin/java -make: /usr/bin/make -ninja: /usr/bin/ninja-build -python: /usr/bin/python3 -su: /bin/su -sudoers: /etc/sudoers +paths: + bash: /bin/bash + cc: /usr/bin/gcc + ccache: /usr/bin/ccache + java: /usr/bin/java + make: /usr/bin/make + ninja: /usr/bin/ninja-build + python: /usr/bin/python3 + su: /bin/su + sudoers: /etc/sudoers ansible_python_package: python2 ansible_python_interpreter: /usr/bin/python2 diff --git a/guests/host_vars/libvirt-centos-8/main.yml b/guests/host_vars/libvirt-centos-8/main.yml index e48c1ff..debc6df 100644 --- a/guests/host_vars/libvirt-centos-8/main.yml +++ b/guests/host_vars/libvirt-centos-8/main.yml @@ -23,15 +23,16 @@ packaging: format: 'rpm' command: 'dnf' -bash: /bin/bash -cc: /usr/bin/gcc -ccache: /usr/bin/ccache -java: /usr/bin/java -make: /usr/bin/make -ninja: /usr/bin/ninja -python: /usr/bin/python3 -su: /bin/su -sudoers: /etc/sudoers +paths: + bash: /bin/bash + cc: /usr/bin/gcc + ccache: /usr/bin/ccache + java: /usr/bin/java + make: /usr/bin/make + ninja: /usr/bin/ninja + python: /usr/bin/python3 + su: /bin/su + sudoers: /etc/sudoers ansible_python_package: python3 ansible_python_interpreter: /usr/bin/python3 diff --git a/guests/host_vars/libvirt-debian-10/main.yml b/guests/host_vars/libvirt-debian-10/main.yml index da30dac..4d1f9cb 100644 --- a/guests/host_vars/libvirt-debian-10/main.yml +++ b/guests/host_vars/libvirt-debian-10/main.yml @@ -25,15 +25,16 @@ packaging: format: 'deb' command: 'apt-get' -bash: /bin/bash -cc: /usr/bin/gcc -ccache: /usr/bin/ccache -java: /usr/bin/java -make: /usr/bin/make -ninja: /usr/bin/ninja -python: /usr/bin/python3 -su: /bin/su -sudoers: /etc/sudoers +paths: + bash: /bin/bash + cc: /usr/bin/gcc + ccache: /usr/bin/ccache + java: /usr/bin/java + make: /usr/bin/make + ninja: /usr/bin/ninja + python: /usr/bin/python3 + su: /bin/su + sudoers: /etc/sudoers ansible_python_package: python3 ansible_python_interpreter: /usr/bin/python3 diff --git a/guests/host_vars/libvirt-debian-9/main.yml b/guests/host_vars/libvirt-debian-9/main.yml index 82ed8b2..5bcb75d 100644 --- a/guests/host_vars/libvirt-debian-9/main.yml +++ b/guests/host_vars/libvirt-debian-9/main.yml @@ -25,15 +25,16 @@ packaging: format: 'deb' command: 'apt-get' -bash: /bin/bash -cc: /usr/bin/gcc -ccache: /usr/bin/ccache -java: /usr/bin/java -make: /usr/bin/make -ninja: /usr/bin/ninja -python: /usr/bin/python3 -su: /bin/su -sudoers: /etc/sudoers +paths: + bash: /bin/bash + cc: /usr/bin/gcc + ccache: /usr/bin/ccache + java: /usr/bin/java + make: /usr/bin/make + ninja: /usr/bin/ninja + python: /usr/bin/python3 + su: /bin/su + sudoers: /etc/sudoers ansible_python_package: python3 ansible_python_interpreter: /usr/bin/python3 diff --git a/guests/host_vars/libvirt-debian-sid/main.yml b/guests/host_vars/libvirt-debian-sid/main.yml index f0c0c8e..2616678 100644 --- a/guests/host_vars/libvirt-debian-sid/main.yml +++ b/guests/host_vars/libvirt-debian-sid/main.yml @@ -25,15 +25,16 @@ packaging: format: 'deb' command: 'apt-get' -bash: /bin/bash -cc: /usr/bin/gcc -ccache: /usr/bin/ccache -java: /usr/bin/java -make: /usr/bin/make -ninja: /usr/bin/ninja -python: /usr/bin/python3 -su: /bin/su -sudoers: /etc/sudoers +paths: + bash: /bin/bash + cc: /usr/bin/gcc + ccache: /usr/bin/ccache + java: /usr/bin/java + make: /usr/bin/make + ninja: /usr/bin/ninja + python: /usr/bin/python3 + su: /bin/su + sudoers: /etc/sudoers ansible_python_package: python3 ansible_python_interpreter: /usr/bin/python3 diff --git a/guests/host_vars/libvirt-fedora-30/main.yml b/guests/host_vars/libvirt-fedora-30/main.yml index d9e539e..33d3361 100644 --- a/guests/host_vars/libvirt-fedora-30/main.yml +++ b/guests/host_vars/libvirt-fedora-30/main.yml @@ -38,15 +38,16 @@ packaging: format: 'rpm' command: 'dnf' -bash: /bin/bash -cc: /usr/bin/gcc -ccache: /usr/bin/ccache -java: /usr/bin/java -make: /usr/bin/make -ninja: /usr/bin/ninja -python: /usr/bin/python3 -su: /bin/su -sudoers: /etc/sudoers +paths: + bash: /bin/bash + cc: /usr/bin/gcc + ccache: /usr/bin/ccache + java: /usr/bin/java + make: /usr/bin/make + ninja: /usr/bin/ninja + python: /usr/bin/python3 + su: /bin/su + sudoers: /etc/sudoers ansible_python_package: python3 ansible_python_interpreter: /usr/bin/python3 diff --git a/guests/host_vars/libvirt-fedora-31/main.yml b/guests/host_vars/libvirt-fedora-31/main.yml index b884e7f..810c1f2 100644 --- a/guests/host_vars/libvirt-fedora-31/main.yml +++ b/guests/host_vars/libvirt-fedora-31/main.yml @@ -26,15 +26,16 @@ packaging: format: 'rpm' command: 'dnf' -bash: /bin/bash -cc: /usr/bin/gcc -ccache: /usr/bin/ccache -java: /usr/bin/java -make: /usr/bin/make -ninja: /usr/bin/ninja -python: /usr/bin/python3 -su: /bin/su -sudoers: /etc/sudoers +paths: + bash: /bin/bash + cc: /usr/bin/gcc + ccache: /usr/bin/ccache + java: /usr/bin/java + make: /usr/bin/make + ninja: /usr/bin/ninja + python: /usr/bin/python3 + su: /bin/su + sudoers: /etc/sudoers ansible_python_package: python3 ansible_python_interpreter: /usr/bin/python3 diff --git a/guests/host_vars/libvirt-fedora-rawhide/main.yml b/guests/host_vars/libvirt-fedora-rawhide/main.yml index 732b988..c1fe726 100644 --- a/guests/host_vars/libvirt-fedora-rawhide/main.yml +++ b/guests/host_vars/libvirt-fedora-rawhide/main.yml @@ -26,15 +26,16 @@ packaging: format: 'rpm' command: 'dnf' -bash: /bin/bash -cc: /usr/bin/gcc -ccache: /usr/bin/ccache -java: /usr/bin/java -make: /usr/bin/make -ninja: /usr/bin/ninja -python: /usr/bin/python3 -su: /bin/su -sudoers: /etc/sudoers +paths: + bash: /bin/bash + cc: /usr/bin/gcc + ccache: /usr/bin/ccache + java: /usr/bin/java + make: /usr/bin/make + ninja: /usr/bin/ninja + python: /usr/bin/python3 + su: /bin/su + sudoers: /etc/sudoers ansible_python_package: python3 ansible_python_interpreter: /usr/bin/python3 diff --git a/guests/host_vars/libvirt-freebsd-11/main.yml b/guests/host_vars/libvirt-freebsd-11/main.yml index e22b688..5e57368 100644 --- a/guests/host_vars/libvirt-freebsd-11/main.yml +++ b/guests/host_vars/libvirt-freebsd-11/main.yml @@ -24,15 +24,16 @@ packaging: format: 'pkg' command: 'pkg' -bash: /usr/local/bin/bash -cc: /usr/bin/clang -ccache: /usr/local/bin/ccache -java: /usr/local/bin/java -make: /usr/local/bin/gmake -ninja: /usr/local/bin/ninja -python: /usr/local/bin/python3 -su: /usr/bin/su -sudoers: /usr/local/etc/sudoers +paths: + bash: /usr/local/bin/bash + cc: /usr/bin/clang + ccache: /usr/local/bin/ccache + java: /usr/local/bin/java + make: /usr/local/bin/gmake + ninja: /usr/local/bin/ninja + python: /usr/local/bin/python3 + su: /usr/bin/su + sudoers: /usr/local/etc/sudoers ansible_python_package: python3 ansible_python_interpreter: /usr/local/bin/python3 diff --git a/guests/host_vars/libvirt-freebsd-12/main.yml b/guests/host_vars/libvirt-freebsd-12/main.yml index 1fa718e..8dfd1b8 100644 --- a/guests/host_vars/libvirt-freebsd-12/main.yml +++ b/guests/host_vars/libvirt-freebsd-12/main.yml @@ -24,15 +24,16 @@ packaging: format: 'pkg' command: 'pkg' -bash: /usr/local/bin/bash -cc: /usr/bin/clang -ccache: /usr/local/bin/ccache -java: /usr/local/bin/java -make: /usr/local/bin/gmake -ninja: /usr/local/bin/ninja -python: /usr/local/bin/python3 -su: /usr/bin/su -sudoers: /usr/local/etc/sudoers +paths: + bash: /usr/local/bin/bash + cc: /usr/bin/clang + ccache: /usr/local/bin/ccache + java: /usr/local/bin/java + make: /usr/local/bin/gmake + ninja: /usr/local/bin/ninja + python: /usr/local/bin/python3 + su: /usr/bin/su + sudoers: /usr/local/etc/sudoers ansible_python_package: python3 ansible_python_interpreter: /usr/local/bin/python3 diff --git a/guests/host_vars/libvirt-freebsd-current/main.yml b/guests/host_vars/libvirt-freebsd-current/main.yml index 706abc8..8f0e3fb 100644 --- a/guests/host_vars/libvirt-freebsd-current/main.yml +++ b/guests/host_vars/libvirt-freebsd-current/main.yml @@ -24,15 +24,16 @@ packaging: format: 'pkg' command: 'pkg' -bash: /usr/local/bin/bash -cc: /usr/bin/clang -ccache: /usr/local/bin/ccache -java: /usr/local/bin/java -make: /usr/local/bin/gmake -ninja: /usr/local/bin/ninja -python: /usr/local/bin/python3 -su: /usr/bin/su -sudoers: /usr/local/etc/sudoers +paths: + bash: /usr/local/bin/bash + cc: /usr/bin/clang + ccache: /usr/local/bin/ccache + java: /usr/local/bin/java + make: /usr/local/bin/gmake + ninja: /usr/local/bin/ninja + python: /usr/local/bin/python3 + su: /usr/bin/su + sudoers: /usr/local/etc/sudoers ansible_python_package: python3 ansible_python_interpreter: /usr/local/bin/python3 diff --git a/guests/host_vars/libvirt-opensuse-151/main.yml b/guests/host_vars/libvirt-opensuse-151/main.yml index b80a497..27d68dc 100644 --- a/guests/host_vars/libvirt-opensuse-151/main.yml +++ b/guests/host_vars/libvirt-opensuse-151/main.yml @@ -24,15 +24,16 @@ packaging: format: 'rpm' command: 'zypper' -bash: /bin/bash -cc: /usr/bin/gcc -ccache: /usr/bin/ccache -java: /usr/bin/java -make: /usr/bin/make -ninja: /usr/bin/ninja -python: /usr/bin/python3 -su: /bin/su -sudoers: /etc/sudoers +paths: + bash: /bin/bash + cc: /usr/bin/gcc + ccache: /usr/bin/ccache + java: /usr/bin/java + make: /usr/bin/make + ninja: /usr/bin/ninja + python: /usr/bin/python3 + su: /bin/su + sudoers: /etc/sudoers ansible_python_package: python3 ansible_python_interpreter: /usr/bin/python3 diff --git a/guests/host_vars/libvirt-ubuntu-1604/main.yml b/guests/host_vars/libvirt-ubuntu-1604/main.yml index 2d99e3a..4eca69b 100644 --- a/guests/host_vars/libvirt-ubuntu-1604/main.yml +++ b/guests/host_vars/libvirt-ubuntu-1604/main.yml @@ -24,15 +24,16 @@ packaging: format: 'deb' command: 'apt-get' -bash: /bin/bash -cc: /usr/bin/gcc -ccache: /usr/bin/ccache -java: /usr/bin/java -make: /usr/bin/make -ninja: /usr/bin/ninja -python: /usr/bin/python3 -su: /bin/su -sudoers: /etc/sudoers +paths: + bash: /bin/bash + cc: /usr/bin/gcc + ccache: /usr/bin/ccache + java: /usr/bin/java + make: /usr/bin/make + ninja: /usr/bin/ninja + python: /usr/bin/python3 + su: /bin/su + sudoers: /etc/sudoers ansible_python_package: python3 ansible_python_interpreter: /usr/bin/python3 diff --git a/guests/host_vars/libvirt-ubuntu-1804/main.yml b/guests/host_vars/libvirt-ubuntu-1804/main.yml index 4c63b35..7407241 100644 --- a/guests/host_vars/libvirt-ubuntu-1804/main.yml +++ b/guests/host_vars/libvirt-ubuntu-1804/main.yml @@ -25,15 +25,16 @@ packaging: format: 'deb' command: 'apt-get' -bash: /bin/bash -cc: /usr/bin/gcc -ccache: /usr/bin/ccache -java: /usr/bin/java -make: /usr/bin/make -ninja: /usr/bin/ninja -python: /usr/bin/python3 -su: /bin/su -sudoers: /etc/sudoers +paths: + bash: /bin/bash + cc: /usr/bin/gcc + ccache: /usr/bin/ccache + java: /usr/bin/java + make: /usr/bin/make + ninja: /usr/bin/ninja + python: /usr/bin/python3 + su: /bin/su + sudoers: /etc/sudoers ansible_python_package: python3 ansible_python_interpreter: /usr/bin/python3 diff --git a/guests/lcitool b/guests/lcitool index 89d5ef9..0c89e13 100755 --- a/guests/lcitool +++ b/guests/lcitool @@ -693,11 +693,11 @@ class Application: varmap = self._dockerfile_build_varmap_rpm(facts, mappings, pip_mappings, projects, cross_arch) varmap["packaging_command"] = facts["packaging"]["command"] - varmap["cc"] = facts["cc"] - varmap["ccache"] = facts["ccache"] - varmap["make"] = facts["make"] - varmap["ninja"] = facts["ninja"] - varmap["python"] = facts["python"] + varmap["paths_cc"] = facts["paths"]["cc"] + varmap["paths_ccache"] = facts["paths"]["ccache"] + varmap["paths_make"] = facts["paths"]["make"] + varmap["paths_ninja"] = facts["paths"]["ninja"] + varmap["paths_python"] = facts["paths"]["python"] if cross_arch: varmap["cross_abi"] = Util.native_arch_to_abi(cross_arch) @@ -907,13 +907,13 @@ class Application: if cross_arch: commands.extend([ - "ln -s {ccache} /usr/libexec/ccache-wrappers/{cross_abi}-cc", - "ln -s {ccache} /usr/libexec/ccache-wrappers/{cross_abi}-$(basename {cc})", + "ln -s {paths_ccache} /usr/libexec/ccache-wrappers/{cross_abi}-cc", + "ln -s {paths_ccache} /usr/libexec/ccache-wrappers/{cross_abi}-$(basename {paths_cc})", ]) else: commands.extend([ - "ln -s {ccache} /usr/libexec/ccache-wrappers/cc", - "ln -s {ccache} /usr/libexec/ccache-wrappers/$(basename {cc})", + "ln -s {paths_ccache} /usr/libexec/ccache-wrappers/cc", + "ln -s {paths_ccache} /usr/libexec/ccache-wrappers/$(basename {paths_cc})", ]) script = "\nRUN " + (" && \\\n ".join(commands)) + "\n" @@ -953,9 +953,9 @@ class Application: sys.stdout.write(textwrap.dedent(""" ENV LANG "en_US.UTF-8" - ENV MAKE "{make}" - ENV NINJA "{ninja}" - ENV PYTHON "{python}" + ENV MAKE "{paths_make}" + ENV NINJA "{paths_ninja}" + ENV PYTHON "{paths_python}" ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers" """).format(**varmap)) diff --git a/guests/playbooks/update/tasks/global.yml b/guests/playbooks/update/tasks/global.yml index db74a47..ca4a374 100644 --- a/guests/playbooks/update/tasks/global.yml +++ b/guests/playbooks/update/tasks/global.yml @@ -6,9 +6,9 @@ - name: 'Create ccache wrappers' file: - src: '{{ ccache }}' + src: '{{ paths.ccache }}' dest: /usr/libexec/ccache-wrappers/{{ item }} state: link with_items: - cc - - '{{ cc | basename }}' + - '{{ paths.cc | basename }}' diff --git a/guests/playbooks/update/tasks/jenkins.yml b/guests/playbooks/update/tasks/jenkins.yml index 479e5d6..5da3418 100644 --- a/guests/playbooks/update/tasks/jenkins.yml +++ b/guests/playbooks/update/tasks/jenkins.yml @@ -24,7 +24,7 @@ path: /etc/rc.local create: yes regexp: '^nohup.*jenkins.*java.*slave\.jar.*&$' - line: "nohup {{ su }} - jenkins -c '{{ java }} -jar /home/jenkins/slave.jar -jnlpUrl \"{{ jenkins_url }}\" -secret \"{{ jenkins_secret }}\"' >/var/log/jenkins.log 2>&1 &" + line: "nohup {{ paths.su }} - jenkins -c '{{ paths.java }} -jar /home/jenkins/slave.jar -jnlpUrl \"{{ jenkins_url }}\" -secret \"{{ jenkins_secret }}\"' >/var/log/jenkins.log 2>&1 &" insertbefore: '^exit .*$' when: - jenkins_secret is defined diff --git a/guests/playbooks/update/tasks/users.yml b/guests/playbooks/update/tasks/users.yml index 28ee96a..5c6ce8f 100644 --- a/guests/playbooks/update/tasks/users.yml +++ b/guests/playbooks/update/tasks/users.yml @@ -28,7 +28,7 @@ group: '{{ flavor }}' comment: '{{ flavor }}' password: '*' - shell: '{{ bash }}' + shell: '{{ paths.bash }}' - name: '{{ flavor }}: Set password' user: @@ -45,7 +45,7 @@ - name: '{{ flavor }}: Grant passwordless sudo access' lineinfile: - path: '{{ sudoers }}' + path: '{{ paths.sudoers }}' line: '{{ flavor }} ALL=(ALL) NOPASSWD: ALL' state: present validate: 'visudo -cf %s' diff --git a/guests/playbooks/update/templates/bashrc.j2 b/guests/playbooks/update/templates/bashrc.j2 index 1c90a42..8775864 100644 --- a/guests/playbooks/update/templates/bashrc.j2 +++ b/guests/playbooks/update/templates/bashrc.j2 @@ -1,8 +1,8 @@ export PS1="[\u@\h \w]\$ " -export MAKE="{{ make }}" -export NINJA="{{ ninja }}" -export PYTHON="{{ python }}" +export MAKE="{{ paths.make }}" +export NINJA="{{ paths.ninja }}" +export PYTHON="{{ paths.python }}" export MAKEFLAGS="-j{{ install_vcpus|int + 1 }}" export CCACHE_MAXSIZE="2G" diff --git a/guests/playbooks/update/templates/jenkins.service.j2 b/guests/playbooks/update/templates/jenkins.service.j2 index 0b68e75..9bbd985 100644 --- a/guests/playbooks/update/templates/jenkins.service.j2 +++ b/guests/playbooks/update/templates/jenkins.service.j2 @@ -4,7 +4,7 @@ Wants=network.target After=network.target [Service] -ExecStart={{ bash }} -l -c '{{ java }} -jar /home/jenkins/slave.jar -jnlpUrl "{{ jenkins_url }}" -secret "{{ jenkins_secret }}"' +ExecStart={{ paths.bash }} -l -c '{{ paths.java }} -jar /home/jenkins/slave.jar -jnlpUrl "{{ jenkins_url }}" -secret "{{ jenkins_secret }}"' User=jenkins Group=jenkins WorkingDirectory=/home/jenkins -- 2.25.4

On Tue, Apr 28, 2020 at 03:38:00PM +0200, Andrea Bolognani wrote:
Ansible and Python both support actual dictionaries, so make use of them in the inventory instead of having a bunch of randomly named variables lumped together.
This commit is best viewed with 'git show -w'.
Signed-off-by: Andrea Bolognani <abologna@redhat.com> Reviewed-by: Erik Skultety <eskultet@redhat.com>
participants (2)
-
Andrea Bolognani
-
Erik Skultety