Fail to configure a Centos 8 machine with cloudlinux
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
cloud-init |
Expired
|
Undecided
|
Unassigned |
Bug Description
Hi.
We use cloud-init to boot our hosting servers in an ovirt/RHEV environment. While the integration with a plain CentOS 8 works fine, cloud-init fails with an error on a CentOS 8 machine converted to cloudlinux.
Both the machines are derived from the same base image. Here the output (some informations are redacted for privacy reasons):
2020-09-09 12:57:43,385 - handlers.py[DEBUG]: start: init-network: searching for network datasources
2020-09-09 12:57:43,385 - util.py[DEBUG]: Reading from /proc/uptime (quiet=False)
2020-09-09 12:57:43,385 - util.py[DEBUG]: Read 16 bytes from /proc/uptime
2020-09-09 12:57:43,394 - util.py[DEBUG]: Reading from /var/lib/
2020-09-09 12:57:43,396 - atomic_
2020-09-09 12:57:43,396 - util.py[DEBUG]: Creating symbolic link from '/run/cloud-
2020-09-09 12:57:43,396 - util.py[DEBUG]: Attempting to remove /run/cloud-
2020-09-09 12:57:43,397 - util.py[DEBUG]: Running command ['systemd-
2020-09-09 12:57:43,412 - util.py[DEBUG]: Running command ['running-
2020-09-09 12:57:43,416 - util.py[DEBUG]: Running command ['lxc-is-
2020-09-09 12:57:43,419 - util.py[DEBUG]: Reading from /proc/1/environ (quiet=False)
2020-09-09 12:57:43,420 - util.py[DEBUG]: Read 113 bytes from /proc/1/environ
2020-09-09 12:57:43,420 - util.py[DEBUG]: Reading from /proc/self/status (quiet=False)
2020-09-09 12:57:43,421 - util.py[DEBUG]: Read 1317 bytes from /proc/self/status
2020-09-09 12:57:43,421 - util.py[DEBUG]: Reading from /proc/cmdline (quiet=False)
2020-09-09 12:57:43,421 - util.py[DEBUG]: Read 215 bytes from /proc/cmdline
2020-09-09 12:57:43,422 - util.py[DEBUG]: Reading from /proc/uptime (quiet=False)
2020-09-09 12:57:43,422 - util.py[DEBUG]: Read 16 bytes from /proc/uptime
2020-09-09 12:57:43,423 - util.py[DEBUG]: Reading from /etc/cloud/
2020-09-09 12:57:43,423 - util.py[DEBUG]: Read 1275 bytes from /etc/cloud/
2020-09-09 12:57:43,423 - util.py[DEBUG]: Attempting to load yaml from string of length 1275 with allowed root types (<class 'dict'>,)
2020-09-09 12:57:43,443 - util.py[DEBUG]: Reading from /etc/cloud/
2020-09-09 12:57:43,444 - util.py[DEBUG]: Read 2057 bytes from /etc/cloud/
2020-09-09 12:57:43,444 - util.py[DEBUG]: Attempting to load yaml from string of length 2057 with allowed root types (<class 'dict'>,)
2020-09-09 12:57:43,452 - util.py[DEBUG]: Reading from /run/cloud-
2020-09-09 12:57:43,452 - util.py[DEBUG]: Read 39 bytes from /run/cloud-
2020-09-09 12:57:43,452 - util.py[DEBUG]: Attempting to load yaml from string of length 39 with allowed root types (<class 'dict'>,)
2020-09-09 12:57:43,453 - util.py[DEBUG]: Attempting to load yaml from string of length 0 with allowed root types (<class 'dict'>,)
2020-09-09 12:57:43,454 - util.py[DEBUG]: loaded blob returned None, returning default.
2020-09-09 12:57:43,455 - util.py[DEBUG]: Redirecting <_io.TextIOWrapper name='<stdout>' mode='w' encoding='UTF-8'> to | tee -a /var/log/
2020-09-09 12:57:43,457 - util.py[DEBUG]: Redirecting <_io.TextIOWrapper name='<stderr>' mode='w' encoding='UTF-8'> to | tee -a /var/log/
2020-09-09 12:57:43,458 - main.py[DEBUG]: Logging being reset, this logger may no longer be active shortly
Cloud-init v. 19.4 running 'init' at Wed, 09 Sep 2020 12:57:43 +0000. Up 1814.73 seconds.
ci-info: +++++++
ci-info: +------
ci-info: | Device | Up | Address | Mask | Scope | Hw-Address |
ci-info: +------
ci-info: | eth0 | True | <private_ip> | 255.255.248.0 | global | 56:6f:bf:b6:01:44 |
ci-info: | eth0 | True | fe80::546f:
ci-info: | eth1 | True | <public_ip> | 255.255.255.0 | global | 56:6f:bf:b6:01:45 |
ci-info: | eth1 | True | fe80::546f:
ci-info: | lo | True | 127.0.0.1 | 255.0.0.0 | host | . |
ci-info: | lo | True | ::1/128 | . | host | . |
ci-info: +------
ci-info: +++++++
ci-info: +------
ci-info: | Route | Destination | Gateway | Genmask | Interface | Flags |
ci-info: +------
ci-info: | 0 | 0.0.0.0 | <gateway> | 0.0.0.0 | eth1 | UG |
ci-info: | 1 | <network> | 0.0.0.0 | 255.255.248.0 | eth0 | U |
ci-info: | 2 | <gateway> | 0.0.0.0 | 255.255.255.0 | eth1 | U |
ci-info: +------
ci-info: +++++++
ci-info: +------
ci-info: | Route | Destination | Gateway | Interface | Flags |
ci-info: +------
ci-info: | 1 | fe80::/64 | :: | eth0 | U |
ci-info: | 2 | fe80::/64 | :: | eth1 | U |
ci-info: | 4 | local | :: | eth0 | U |
ci-info: | 5 | local | :: | eth1 | U |
ci-info: | 6 | ff00::/8 | :: | eth0 | U |
ci-info: | 7 | ff00::/8 | :: | eth1 | U |
ci-info: +------
2020-09-09 12:57:43,608 - stages.py[ERROR]: Unable to render networking. Network config is likely broken: No available network renderers found. Searched through list: ['eni', 'sysconfig', 'netplan']
Cloud-init is being installed from the standard CentOS 8 repositories without no further customisations. The informations are passed to cloud-init using the Ovirt/RHEV apis in the virtual machine definition, including the various ip addresses.
Regards
description: | updated |
summary: |
- Fail to configure a Centos 8 machine with cloud-linux + Fail to configure a Centos 8 machine with cloudlinux |
Changed in cloud-init: | |
status: | New → Triaged |
Adendum:
We found where the problem is; cloudlinux change the file /etc/os-release with the content:
NAME="CloudLinux" ID="platform: el8" NAME="CloudLinu x 8.2 (Yury Malyshev)" "cpe:/o: cloudlinux: cloudlinux: 8.2:GA: server" /www.cloudlinux .com/" /www.cloudlinux .com/support"
VERSION="8.2 (Yury Malyshev)"
ID="cloudlinux"
ID_LIKE="rhel fedora centos"
VERSION_ID="8.2"
PLATFORM_
PRETTY_
ANSI_COLOR="0;31"
CPE_NAME=
HOME_URL="https:/
BUG_REPORT_URL="https:/
It seems that cloud-init isn't able to recognize the distribution as CentOS/RHEL anymore and fails to use sysconfig. As a test, we changed the file content back to the stock for CentOS 8.2 and the network was configured properly.
We opened a bug to the cloudlinux support to address this, mainly to be sure they are writing the proper informations in the /etc/os-release file. It's possible that cloud-init need to add an additional check to recognize a CentOS/RHEL derivative.