[libvirt] [PATCH RFC V2] guests: Add support for openSUSE

Jim Fehlig jfehlig at suse.com
Tue Nov 26 00:50:19 UTC 2019


This change adds support for the latest openSUSE Leap and
openSUSE Tumbleweed guests.

Signed-off-by: Jim Fehlig <jfehlig at suse.com>
---

This version of the patch overcomes the 'lci build' issues noted in V1
and works well for openSUSE Leap 15.1 and Tumbleweed. I'm still of the
opinion of only supporting the latest Leap since there is only a six
month support overlap between versions. Version x-1 is only supported
six months after x is released.

'lci update ... libvirt' fails in task "Configure hostname":

fatal: [libvirt-opensuse-tumbleweed]: FAILED! => {"changed": false, "msg": "hostname module cannot be used on platform Linux (Opensuse-tumbleweed)"}

Not sure why that is the case. But more importantly, even though it
doesn't fail, the "Update installed packages" task doesn't install any
of the packages required to build libvirt. I suppose that agrees with
guests/REAMDME, but how then are the packages required to build $project
installed? How/when is the list of packages required to build $project
conveyed to $package_manager?

'lcitool build libvirt-opensuse-tumbleweed libvirt' fails in the
"Gathering Facts" task:

fatal: [libvirt-opensuse-tumbleweed]: UNREACHABLE! => {"changed": false, "msg": "Invalid/incorrect password: ", "unreachable": true}

Passing --debug to the command didn't help with determining what needed
the password. ssh? I can't find where the "Gathering Facts" task is
defined. The $root_password_file passed to /usr/bin/ansible-playbook
contains the correct password for the root user. /me needs to figure
out how to better debug this stuff :-).

 guests/configs/autoinst.xml                   | 75 +++++++++++++++++++
 .../host_vars/libvirt-opensuse-15/docker.yml  |  2 +
 .../host_vars/libvirt-opensuse-15/install.yml |  2 +
 guests/host_vars/libvirt-opensuse-15/main.yml | 22 ++++++
 .../libvirt-opensuse-tumbleweed/docker.yml    |  2 +
 .../libvirt-opensuse-tumbleweed/install.yml   |  2 +
 .../libvirt-opensuse-tumbleweed/main.yml      | 22 ++++++
 guests/inventory                              |  2 +
 guests/lcitool                                |  2 +
 guests/playbooks/update/tasks/base.yml        | 15 ++++
 guests/vars/mappings.yml                      | 41 +++++++++-
 11 files changed, 185 insertions(+), 2 deletions(-)

diff --git a/guests/configs/autoinst.xml b/guests/configs/autoinst.xml
new file mode 100644
index 0000000..42c42f8
--- /dev/null
+++ b/guests/configs/autoinst.xml
@@ -0,0 +1,75 @@
+<?xml version="1.0"?>
+<!DOCTYPE profile>
+<profile
+  xmlns="http://www.suse.com/1.0/yast2ns"
+  xmlns:config="http://www.suse.com/1.0/configns">
+  <general>
+    <mode>
+      <confirm config:type="boolean">false</confirm>
+    </mode>
+  </general>
+  <partitioning config:type="list">
+    <drive>
+      <device>/dev/vda</device>
+      <use>all</use>
+      <partitions config:type="list">
+        <partition>
+          <filesystem config:type="symbol">swap</filesystem>
+          <size>256M</size>
+          <mount>swap</mount>
+        </partition>
+        <partition>
+          <filesystem config:type="symbol">ext4</filesystem>
+          <mount>/</mount>
+          <size>max</size>
+        </partition>
+      </partitions>
+    </drive>
+  </partitioning>
+  <bootloader>
+    <global>
+      <terminal>console serial</terminal>
+    </global>
+  </bootloader>
+  <timezone>
+    <hwclock>UTC</hwclock>
+    <timezone>UTC</timezone>
+  </timezone>
+  <software>
+    <install_recommended config:type="boolean">false</install_recommended>
+    <products config:type="list">
+      <product>openSUSE</product>
+    </products>
+    <patterns config:type="list">
+      <pattern>base</pattern>
+      <pattern>minimal_base</pattern>
+      <pattern>yast2_basis</pattern>
+    </patterns>
+    <packages config:type="list">
+      <package>openssh</package>
+    </packages>
+  </software>
+  <networking>
+    <keep_install_network config:type="boolean">true</keep_install_network>
+  </networking>
+  <users config:type="list">
+    <user>
+      <username>root</username>
+      <user_password>root</user_password>
+      <encrypted config:type="boolean">false</encrypted>
+      <uid>0</uid>
+      <gid>0</gid>
+      <home>/root</home>
+      <shell>/bin/bash</shell>
+    </user>
+  </users>
+  <services-manager>
+    <default_target>multi-user</default_target>
+    <services config:type="list">
+      <service>
+        <service_name>sshd</service_name>
+        <service_status>enable</service_status>
+      </service>
+    </services>
+  </services-manager>
+</profile>
diff --git a/guests/host_vars/libvirt-opensuse-15/docker.yml b/guests/host_vars/libvirt-opensuse-15/docker.yml
new file mode 100644
index 0000000..8f32d06
--- /dev/null
+++ b/guests/host_vars/libvirt-opensuse-15/docker.yml
@@ -0,0 +1,2 @@
+---
+docker_base: opensuse/leap:15
diff --git a/guests/host_vars/libvirt-opensuse-15/install.yml b/guests/host_vars/libvirt-opensuse-15/install.yml
new file mode 100644
index 0000000..d0fdbe5
--- /dev/null
+++ b/guests/host_vars/libvirt-opensuse-15/install.yml
@@ -0,0 +1,2 @@
+---
+install_url: http://download.opensuse.org/distribution/leap/15.1/repo/oss/
diff --git a/guests/host_vars/libvirt-opensuse-15/main.yml b/guests/host_vars/libvirt-opensuse-15/main.yml
new file mode 100644
index 0000000..abd83c5
--- /dev/null
+++ b/guests/host_vars/libvirt-opensuse-15/main.yml
@@ -0,0 +1,22 @@
+---
+projects:
+  - libosinfo
+  - libvirt
+  - libvirt-cim
+  - libvirt-dbus
+  - libvirt-glib
+  - libvirt-perl
+  - libvirt-python
+  - libvirt-sandbox
+  - libvirt-tck
+  - osinfo-db
+  - osinfo-db-tools
+  - virt-manager
+  - virt-viewer
+
+package_format: 'rpm'
+package_manager: 'zypper'
+os_name: 'OpenSUSE'
+os_version: '15'
+
+ansible_python_interpreter: /usr/bin/python3
diff --git a/guests/host_vars/libvirt-opensuse-tumbleweed/docker.yml b/guests/host_vars/libvirt-opensuse-tumbleweed/docker.yml
new file mode 100644
index 0000000..cc79a22
--- /dev/null
+++ b/guests/host_vars/libvirt-opensuse-tumbleweed/docker.yml
@@ -0,0 +1,2 @@
+---
+docker_base: opensuse/tumbleweed
diff --git a/guests/host_vars/libvirt-opensuse-tumbleweed/install.yml b/guests/host_vars/libvirt-opensuse-tumbleweed/install.yml
new file mode 100644
index 0000000..36cea68
--- /dev/null
+++ b/guests/host_vars/libvirt-opensuse-tumbleweed/install.yml
@@ -0,0 +1,2 @@
+---
+install_url: http://download.opensuse.org/tumbleweed/repo/oss/
diff --git a/guests/host_vars/libvirt-opensuse-tumbleweed/main.yml b/guests/host_vars/libvirt-opensuse-tumbleweed/main.yml
new file mode 100644
index 0000000..828df81
--- /dev/null
+++ b/guests/host_vars/libvirt-opensuse-tumbleweed/main.yml
@@ -0,0 +1,22 @@
+---
+projects:
+  - libosinfo
+  - libvirt
+  - libvirt-cim
+  - libvirt-dbus
+  - libvirt-glib
+  - libvirt-perl
+  - libvirt-python
+  - libvirt-sandbox
+  - libvirt-tck
+  - osinfo-db
+  - osinfo-db-tools
+  - virt-manager
+  - virt-viewer
+
+package_format: 'rpm'
+package_manager: 'zypper'
+os_name: 'OpenSUSE'
+os_version: 'Tumbleweed'
+
+ansible_python_interpreter: /usr/bin/python3
diff --git a/guests/inventory b/guests/inventory
index 3b15513..71d3c91 100644
--- a/guests/inventory
+++ b/guests/inventory
@@ -8,5 +8,7 @@ libvirt-fedora-rawhide
 libvirt-freebsd-11
 libvirt-freebsd-12
 libvirt-freebsd-current
+libvirt-opensuse-15
+libvirt-opensuse-tumbleweed
 libvirt-ubuntu-16
 libvirt-ubuntu-18
diff --git a/guests/lcitool b/guests/lcitool
index a630971..7f26731 100755
--- a/guests/lcitool
+++ b/guests/lcitool
@@ -531,6 +531,8 @@ class Application:
                 install_config = "preseed.cfg"
             elif facts["os_name"] in ["CentOS", "Fedora"]:
                 install_config = "kickstart.cfg"
+            elif facts["os_name"] == "OpenSUSE":
+                install_config = "autoinst.xml"
             else:
                 raise Exception(
                     "Host {} doesn't support installation".format(host)
diff --git a/guests/playbooks/update/tasks/base.yml b/guests/playbooks/update/tasks/base.yml
index 3d83e78..b6a2cd2 100644
--- a/guests/playbooks/update/tasks/base.yml
+++ b/guests/playbooks/update/tasks/base.yml
@@ -65,12 +65,27 @@
   when:
     - package_format == 'pkg'
 
+- name: Update installed packages
+  command: '{{ package_manager }} update -y -l --force-resolution --no-recommends'
+  args:
+    warn: no
+  when:
+    - os_name == 'OpenSUSE'
+
 - name: Clean up packages after update
   shell: '{{ package_manager }} clean packages -y && {{ package_manager }} autoremove -y'
   args:
     warn: no
   when:
     - package_format == 'rpm'
+    - not os_name == "OpenSUSE"
+
+- name: Clean up packages after update
+  shell: '{{ package_manager }} clean'
+  args:
+    warn: no
+  when:
+    - os_name == "OpenSUSE"
 
 - name: Clean up packages after update
   apt:
diff --git a/guests/vars/mappings.yml b/guests/vars/mappings.yml
index bd9b161..8359ce2 100644
--- a/guests/vars/mappings.yml
+++ b/guests/vars/mappings.yml
@@ -19,10 +19,10 @@
 #   - deb, pkg, rpm
 #
 # Valid OS names are:
-#   - CentOS, Debian, Fedora, FreeBSD, Ubuntu
+#   - CentOS, Debian, Fedora, FreeBSD, OpenSUSE, Ubuntu
 #
 # Valid OS versions are:
-#   - CentOS7, Debian9, FedoraRawhide, Ubuntu18 and so on
+#   - CentOS7, Debian9, FedoraRawhide, OpenSUSE15, Ubuntu18 and so on
 #
 # The arch specific rules use a prefix "$ARCH-" where  $ARCH
 # is a libvirt arch name.
@@ -70,6 +70,7 @@ mappings:
 
   apparmor:
     deb: libapparmor-dev
+    OpenSUSE: libapparmor-devel
     cross-policy-deb: foreign
 
   augeas:
@@ -117,6 +118,7 @@ mappings:
   cppi:
     Fedora: cppi
     FreeBSD: cppi
+    OpenSUSE: cppi
 
   cyrus-sasl:
     deb: libsasl2-dev
@@ -127,6 +129,7 @@ mappings:
   dbus-daemon:
     default: dbus
     Fedora: dbus-daemon
+    OpenSUSE: dbus-1
 
   device-mapper:
     deb: libdevmapper-dev
@@ -196,6 +199,7 @@ mappings:
     deb: libglusterfs-dev
     rpm: glusterfs-api-devel
     Debian9: glusterfs-common
+    OpenSUSE: glusterfs-devel
     Ubuntu16: glusterfs-common
     Ubuntu18: glusterfs-common
     cross-policy-deb: foreign
@@ -204,6 +208,7 @@ mappings:
     deb: libgnutls28-dev
     pkg: gnutls
     rpm: gnutls-devel
+    OpenSUSE: libgnutls-devel
     cross-policy-deb: foreign
 
   go:
@@ -228,6 +233,7 @@ mappings:
 
   gtk-update-icon-cache:
     default: gtk-update-icon-cache
+    OpenSUSE: gtk3-tools
     Ubuntu16: libgtk2.0-bin
 
   gtk-vnc2:
@@ -248,14 +254,17 @@ mappings:
   ip:
     deb: iproute2
     rpm: iproute
+    OpenSUSE: iproute2
 
   iscsiadm:
     deb: open-iscsi
     rpm: iscsi-initiator-utils
+    OpenSUSE: open-iscsi
 
   isoinfo:
     default: genisoimage
     FreeBSD: cdrkit
+    OpenSUSE: mkisofs
 
   java:
     deb: openjdk-11-jre-headless
@@ -289,6 +298,7 @@ mappings:
   libaudit:
     deb: libaudit-dev
     rpm: audit-libs-devel
+    OpenSUSE: audit-devel
     cross-policy-deb: foreign
 
   libblkid:
@@ -320,6 +330,7 @@ mappings:
     deb: libdbus-1-dev
     pkg: dbus
     rpm: dbus-devel
+    OpenSUSE: dbus-1-devel
     cross-policy-deb: foreign
 
   libgovirt:
@@ -347,6 +358,7 @@ mappings:
     rpm: numactl-devel
     armv6l-deb:
     armv7l-deb:
+    OpenSUSE: libnuma-devel
     cross-policy-deb: foreign
 
   libparted:
@@ -370,6 +382,7 @@ mappings:
     deb: librbd-dev
     Fedora: librbd-devel
     CentOS7: librbd1-devel
+    OpenSUSE: librbd-devel
     cross-policy-deb: foreign
 
   libselinux:
@@ -436,6 +449,7 @@ mappings:
     deb: locales
     Fedora: glibc-langpack-en
     FreeBSD:
+    OpenSUSE: glibc-locale
 
   lsof:
     default: lsof
@@ -458,6 +472,7 @@ mappings:
   ninja:
    default: ninja-build
    FreeBSD: ninja
+   OpenSUSE: ninja
 
   mingw32-curl:
     Fedora: mingw32-curl
@@ -639,6 +654,7 @@ mappings:
   netcf:
     deb: libnetcf-dev
     rpm: netcf-devel
+    OpenSUSE:
     cross-policy-deb: skip
 
   net-tools:
@@ -678,6 +694,7 @@ mappings:
     deb: perl
     pkg: perl5
     rpm: perl-Archive-Tar
+    OpenSUSE: perl-Archive-Tar-Wrapper
 
   perl-CPAN-Changes:
     deb: libcpan-changes-perl
@@ -709,6 +726,7 @@ mappings:
     deb: libio-compress-perl
     pkg: p5-IO-Compress
     rpm: perl-IO-Compress-Bzip2
+    OpenSUSE: perl-Compress-Bzip2
 
   perl-IO-String:
     deb: libio-string-perl
@@ -747,6 +765,7 @@ mappings:
     deb: libtest-lwp-useragent-perl
     pkg: p5-Test-LWP-UserAgent
     Fedora: perl-Test-LWP-UserAgent
+    OpenSUSE: perl-Test-LWP-UserAgent
 
   perl-Test-Pod:
     deb: libtest-pod-perl
@@ -809,20 +828,24 @@ mappings:
     deb: python-dev
     pkg: python2
     rpm: python2-devel
+    OpenSUSE: python-devel
     cross-policy-deb: foreign
 
   python2-lxml:
     default: python-lxml
     Fedora: python2-lxml
     FreeBSD: py27-lxml
+    OpenSUSE: python2-lxml
 
   python2-nose:
     default: python-nose
     Fedora: python2-nose
     FreeBSD: py27-nose
+    OpenSUSE: python2-nose
 
   python2-setuptools:
     CentOS7: python2-setuptools
+    OpenSUSE: python2-setuptools
 
   python3:
     default: python3
@@ -831,6 +854,7 @@ mappings:
     default: python3-dbus
     FreeBSD: py36-dbus
     CentOS7: python36-dbus
+    OpenSUSE: python3-dbus-python
 
   python3-devel:
     deb: python3-dev
@@ -838,17 +862,20 @@ mappings:
     Fedora: python3-devel
     CentOS7: python36-devel
     cross-policy-deb: foreign
+    OpenSUSE: python3-devel
 
   python3-gi:
     deb: python3-gi
     pkg: py36-gobject3
     rpm: python3-gobject
     CentOS7: python36-gobject
+    OpenSUSE: python3-gobject
 
   python3-libxml2:
     default: python3-libxml2
     FreeBSD: py36-libxml2
     CentOS7:
+    OpenSUSE: python3-libxml2-python
     Ubuntu16:
 
   python3-lxml:
@@ -864,6 +891,7 @@ mappings:
   python3-pip:
     CentOS7: python3-pip
     Debian9: python3-pip
+    OpenSUSE: python3-pip
     Ubuntu16: python3-pip
     Ubuntu18: python3-pip
 
@@ -884,6 +912,7 @@ mappings:
   qemu-img:
     default: qemu-utils
     rpm: qemu-img
+    OpenSUSE: qemu-tools
 
   radvd:
     default: radvd
@@ -929,6 +958,7 @@ mappings:
     deb: libspice-client-gtk-3.0-dev
     pkg: spice-gtk
     rpm: spice-gtk3-devel
+    OpenSUSE: spice-gtk-devel
     cross-policy-deb: foreign
 
   strace:
@@ -942,6 +972,7 @@ mappings:
     deb: iproute2
     rpm: iproute-tc
     CentOS7: iproute
+    OpenSUSE: iproute2
 
   unzip:
     default: unzip
@@ -964,10 +995,12 @@ mappings:
   wireshark:
     deb: wireshark-dev
     Fedora: wireshark-devel
+    OpenSUSE: wireshark-devel
     cross-policy-deb: skip
 
   xen:
     Fedora: xen-devel
+    OpenSUSE: xen-devel
     x86_64-deb: libxen-dev
     armv7l-deb: libxen-dev
     aarch64-deb: libxen-dev
@@ -994,18 +1027,21 @@ mappings:
   xz-static:
     deb: liblzma-dev
     Fedora: xz-static
+    OpenSUSE: xz-static-devel
     cross-policy-deb: foreign
 
   yajl:
     deb: libyajl-dev
     pkg: yajl
     rpm: yajl-devel
+    OpenSUSE: libyajl-devel
     cross-policy-deb: foreign
 
   zfs:
     default: zfs-fuse
     CentOS:
     FreeBSD:
+    OpenSUSE:
 
   zlib:
     deb: zlib1g-dev
@@ -1015,6 +1051,7 @@ mappings:
   zlib-static:
     deb: zlib1g-dev
     rpm: zlib-static
+    OpenSUSE: zlib-devel-static
     cross-policy-deb: foreign
 
 
-- 
2.24.0





More information about the libvir-list mailing list