/ MicroOS - transactional-update not working when /etc/sysconfig/network/config set

I’m booting a MicroOS with the an Ignition-configuration (relevant parts below). I’m basically trying to set a static ip (+ default route) and a static DNS resolver.

This has been working for a few months, but recently I updated the base-image I’m spawning MicroOS-instances from and suddenly I run into problems.

By trial-and-error I’ve come down to this: As soon as the file /etc/sysconfig/network/config is included/overwritten by ignition, once I run transactional-update pkg install python3 (or similar command) I get:


# transactional-update pkg install python3 
Checking for newer version. 
transactional-update 3.1.4 started 
Options: pkg install python3 
Separate /var detected. 
ERROR: filesystem error: cannot copy: File exists [/run/netconfig] /.snapshots/2/snapshot/run/netconfig] 
Calling zypper install 
2021-02-23 14:14:00 tukit 3.1.4 started 
2021-02-23 14:14:00 Options: call  bash -c exec -a tu_keep-transaction-alive sleep 1d  
ERROR: Snapshot  does not exist. 

And then it just keeps hanging…

What does that mean? Can I debug it somehow?

I can see in http://mirrors.dotsrc.org/opensuse/tumbleweed/iso/Changes.MicroOS.20210218.txt that transactional-update has been updated to a new major - Don’t know if that is related. I can’t seem to find older versions of MicroOS images so I could test when exactly this issue occured (Is there any archive?)

Relevant Ignition file (network/config copied from an image without it overwritten and removed comments, adding static DNS and NTP)


storage:
  files: 
    - path: /etc/sysconfig/network/ifcfg-eth0 
      mode: 0600 
      overwrite: true 
      contents: 
        inline: | 
          BOOTPROTO='static' 
          STARTMODE='auto' 
          IPADDR='{{ip6}}/64'
    - path: /etc/sysconfig/network/ifroute-eth0 
      mode: 0644 
      overwrite: true 
      contents: 
        inline: | 
          default {{ipv6defaultgw}} - eth0
    - path: /etc/sysconfig/network/config 
      mode: 0644 
      overwrite: true 
      contents: 
        inline: | 
                AUTO6_WAIT_AT_BOOT="" 
                AUTO6_UPDATE="" 
                LINK_REQUIRED="auto" 
                WICKED_DEBUG="yes" 
                WICKED_LOG_LEVEL="" 
                CHECK_DUPLICATE_IP="yes" 
                SEND_GRATUITOUS_ARP="auto" 
                DEBUG="yes" 
                WAIT_FOR_INTERFACES="30" 
                FIREWALL="no" 
                NETCONFIG_MODULES_ORDER="dns-resolver dns-bind dns-dnsmasq nis ntp-runtime" 
                NETCONFIG_VERBOSE="yes" 
                NETCONFIG_FORCE_REPLACE="no" 
                NETCONFIG_DNS_POLICY="auto" 
                NETCONFIG_DNS_FORWARDER="resolver" 
                NETCONFIG_DNS_FORWARDER_FALLBACK="no" 
                NETCONFIG_DNS_STATIC_SEARCHLIST="" 
                NETCONFIG_DNS_STATIC_SERVERS="" 
                #NETCONFIG_DNS_STATIC_SERVERS="2606:4700:4700::1001" 
                NETCONFIG_DNS_RANKING="" 
                NETCONFIG_DNS_RESOLVER_OPTIONS="" 
                NETCONFIG_DNS_RESOLVER_SORTLIST="" 
                NETCONFIG_NTP_POLICY="auto" 
                NETCONFIG_NTP_STATIC_SERVERS="2.pool.ntp.org" 
                NETCONFIG_NIS_POLICY=""

I’m not sure that python3 is a good example, it should already be installed as part of every standard openSUSE… Because you can’t install something that already exists (but you can “force re-install” by adding the 'f flag, ie “zypper in -f python3”

If you believe a particular version of a file is a problem, you can either roll back your entire system or restore just that or specified files from your past snapshots.

TSU

Hi tsu, thanks for your response.

python3 is not installed by default in MicroOS, and if I exclude the config-file from Ignition, I can install it just fine. This is the first boot of the base image, so it’s a totally clean slate and no snapshots to roll back to.

I finally figured it out. Turned out it was actually not the presence of the file itself, but some of the content.

At some point in time I had changed NETCONFIG_NIS_POLICY=“auto” to NETCONFIG_NIS_POLICY="" from the default config-file to disable NIS/YP configuration for netconf - believing it was an innocent change O:)

Wild guess: It seems something somewhere in the newer images expects yp.conf (or similar) to be present at /etc/yp.conf - Maybe that file exists in the “base” image and it fails if it can no longer find the file in the snapshot after netconf has run.

As soon as setting NIS to auto, it all worked and I can install packages, use transaction-commands again.

Thanks for your help.

In my case, /etc/sysconfig/network/ifcfg-eth0 file will be overwritten with some settings. Please let me know how to keep the ifcfg-eth0 content.

Hi and welcome to the Forum :slight_smile:
Please don’t tag onto old threads, please start a new one. FWIW MicroOS is using NetworkManager these days.