[11:07] how are cloud sources documented? [11:08] i was gonna complain in this pr that https://github.com/canonical/cloud-init/pull/522/files this is a little light on documentation, but, they all are https://github.com/canonical/cloud-init/blob/master/cloudinit/sources/DataSourceEc2.py [12:48] Hi, I have a problem with booting a CentOS 8 machine converted to cloudlinux with cloudinit. [12:49] It fails configuring the network cards [12:51] To note: the same settings with a plain CentOS 8, works just finne [12:51] *fine [13:13] absc: how, exactly, does it fail? do you have a log of a run? [13:14] 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'] [13:14] If you want the whole log, just PM me [13:14] This is the only error in the run [13:16] meena: would you prefer the whole log with, also, debugging enabled? [13:23] yes. and also, if you pm it me, it's not gonna be useful for anyone else here. so please use a pastebin service [13:24] in general, I'm just here to ask you leading questions, until you can either help yourself, or the people with the @ in front of their names wake up [13:24] absc: unless your questions are BSD related, then I'm usually your girl [13:25] Ok, don't worry :D [13:25] https://pastebin.com/GC0naTY4 [13:25] meena: here we go the logs [13:27] Where's /var/log/cloud-init-output.log ? [13:29] Just a moment [13:33] meena: https://pastebin.com/6Pmvt7sg [13:33] The cloud-init-output.log [13:34] Error, this is a private paste. If this is your private paste, please login to Pastebin first. [13:34] I'm an idiot [13:35] technology hard, [13:35] https://pastebin.com/BCqLC2Zn [13:35] meena: this should be correct [13:37] that's fun [13:38] I think the output have too much noise, due to puppet being executed by cloud-init [13:38] so puppet is absolutely unconcerned about the network not being up [13:38] but the rhn Plugin isn't happy [13:39] The VM is derived from a template. Is it possible that the old ips are kept before being changed? [13:41] BTE, NetworkManager is installed on the machine [13:41] *BTW [13:47] absc: can you find what the network config looks like that this VM receives, and post that? [13:48] also, which version of cloud-init does your *not* CloudLinux VM have? [13:52] The NOT CloudLinux Vm use cloud-init 19.4.1 [13:54] so, pretty much the same [13:55] meena: https://pastebin.com/iU5n0jb2 [13:56] Yes, it's the same [13:56] The paste bin is what the VM have right now [13:57] The iPS are the ones used to build the template machine [13:57] But, the server ip's are in the same subnet [13:58] And assigned to the same network interfaces [14:09] who or what is assigning the IPs? [14:10] The IPs are assigned by RHEV/Ovirt [14:11] In our casa, with the ENI protocol [14:11] *case [14:14] why does the template have an IP? shouldn't it cleanup itself before creating an image? [14:15] To be fair, we didn't bother removing those before making the template and the sealing doesn't remove it. We can try that, though. [14:15] Otherwise, it worked anyway [14:15] But, let me tell my collegue to make an attempt [15:41] meena: We tried to remove all the IPs from the template before booting a cloned machine. It doesn't work [15:41] Also, the cloud-init log show the same things as the pastebin I sent you [15:43] BTW, we are using the stock cloud-init configuration as coming from the CentOS 8 repositories. [16:12] absc: I (and perhaps others) missed the start of this conversation because of the Freenode downtime/netsplit which kicked me out of the channel until I logged in this morning; could you restate the problem you're having? [16:12] (And re-paste things, perhaps: all those pastebin links are 404ing, I think.) [16:15] Odd_Bloke: I'm going to give you a new paster bin [16:17] Odd_bloke: https://pastebin.com/tiufNMwH [16:17] Here is the cloud-init-output.log file [16:17] TL;DR we use cloud-init to start and configure our hosting servers [16:18] The servers are in an Ovirt/RHEV environment [16:18] The OS is CentOS 8, converted to CloudLinux [16:19] If we boot a plain CentOS 8 machine, everything is fine [16:19] Cloud-init is able to properly configure the IP addresses we specify in the VM definition [16:19] And assign it to eth0 and eth1 [16:20] But if we try to boot a CloudLinux OS machine (essentially, CentOS 8 + a custom kernel and some tooling) [16:20] Cloud-init fails with an error as you see in the pastebin [16:21] Complaining that: 2020-09-09 12:35:04,855 - stages.py[ERROR]: Unable to render networking. Network config is likely broken: No available network renderers found. Searched through list: ['eni', 'sysconfig', 'netplan'] [16:21] We tried varois things, but without luck [16:22] Odd_Bloke: tel me if you need additional informations [16:22] absc: Could I get cloud-init.log too, please? [16:36] Odd_Bloke: https://pastebin.com/HCfBuVvV [16:37] Here is the whole log [17:37] absc: Are you expecting to render ENI or sysconfig within the instance? [17:39] Odd_Bloke: their template has ENI…stuff. [17:40] meena: I don't know what a template is in this context. :) [17:40] machine template [17:40] As in an image? [17:41] (A disk image, I mean.) [17:42] meena: It's worth noting that the log implies that cloud-init fetched ENI from the metadata service; this is normal in OpenStack/ConfigDrive, but does not imply that the running system will be using ENI. [17:43] 16:10 The IPs are assigned by RHEV/Ovirt [17:43] 16:11 In our casa, with the ENI protocol [17:43] Right, that's what I mean. [17:43] RHEV/Ovirt is providing the network config in ENI format, but it does not necessarily mean that the system uses ENI. [17:43] they also have NetworkManager installed [17:43] aye [17:43] cloud-init will parse the provided ENI and then render the appropriate configuration for the system. [17:44] The problem here is that it can't detect which network renderer is appropriate. [17:45] Odd_Bloke: how do you tell that? and wouldn't it be nice if it was easier to tell that from the log? [17:46] 2020-09-09 16:33:01,851 - stages.py[ERROR]: Unable to render networking. Network config is likely broken: No available network renderers found. Searched through list: ['eni', 'sysconfig', 'netplan'] [17:46] Doesn't seem like a horrible log message to me. [17:47] oy [17:47] Not sure that "Network config is likely broken" is right, at least not in this situation. [17:49] If I had to guess (wildly), I would say that /etc/network/interfaces has been removed (perhaps in an attempt to avoid the network config continuing to apply on launched instances?) which means that cloud-init doesn't detect ENI as an option on this system: https://github.com/canonical/cloud-init/blob/master/cloudinit/net/eni.py#L542-L550 [17:50] absc: If you're expecting to render ENI in the system, then https://github.com/canonical/cloud-init/blob/master/cloudinit/net/eni.py#L542-L552 needs to return True. If you're expecting sysconfig, then https://github.com/canonical/cloud-init/blob/master/cloudinit/net/sysconfig.py#L899-L903 needs to return True. [17:53] absc: Hopefully that will give you an idea of what you're doing to the template that is causing cloud-init to fail. :) [17:55] Odd_Bloke: absc: several thoughts; 1) the in-image network config does not provide any mac address; so there's no way it will ever configure interfaces; 2) this is on RHEL, and you need to have sysconfig support enabled; cloud-init doesn't render to NetworkManager directly 3) for RHEL8 with NM (and the requires sysconfig package installed) NM will read rendered sysconfig files from cloud-init, however since (1) is bad (no mac address for your [17:55] interfaces even after fixing the image, you'll need to fix 1 as well; [17:55] absc: for RHEL8 I highly suggest looking at the packages installed in the Centos8 Cloud image; [17:56] https://cloud.centos.org/centos/8/x86_64/images/ [17:57] rharper: I thought this was already on Centos 8? [17:57] likely not proper cloud image [17:57] otherwise sysconfig would be detected [17:57] I've booked those from Centos8 I just linked to and it works fine; so something's not right w.r.t the packages [17:57] Yeah, I think they're building their own images for "CloudLinux"? [17:57] wasn't there some discussion of making a template? [17:57] yeah [17:59] the word template has become meaningless over the past couple hours [18:02] btw, minimal mentioned yesterday that cloud-utils provides tooling support for NoCloud, but if that's this thing: https://pypi.org/project/cloud-utils/ then that's not even almost true. [18:13] "the word template has become meaningless over the past couple hours" [18:14] * smoser agrees. but i don't think that is new in the last couple hours. [18:26] meena: It's the cloud-utils Ubuntu package whose upstream is https://github.com/canonical/cloud-utils/ [18:28] (As you can see, we don't even have a setup.py there, so I don't know how you would get it on other distros/OSes.) [19:54] Odd_Bloke: Sorry, I was away for an emergency [19:57] As you (correctly) pointed out, we are talking about a pre-made image here [19:59] If I remember correctly, we started, with the base system, from a CentOS 8 cloud image [19:59] After that, with puppet, we install and configure a bunch of things [20:00] In one of those steps, the operating system is converted from CentOS 8 to CloudLinux 8 [20:00] (CloudLinux 8 being nothing more than a customised CentOS 8) [20:01] Probably, from what all of you told me, I'm missing some packages. I need to read all the past conversation and do some checks tomorrow morning [20:01] (Sorry guys, I'm on the other side of the world) :D [20:10] absc: No problem, let us know how it goes! (And hopefully Freenode will let me read what you said during my night this time around. :p) [20:11] Thank you again! [20:42] Odd_Bloke, this thing seems awfully… bashy, https://github.com/canonical/cloud-utils/blob/master/bin/cloud-localds and Where's the remoteds equivalent [20:49] meena: What would a remoteds equivalent do? [20:49] i have literally no idea [20:50] probably serve three files, lol [20:50] Ah, then you can get it on Ubuntu with `apt install nginx`. ;) [20:51] Or it comes out of the box with `python3 -m http.server`, if you really want. :p [21:18] Odd_Bloke, I'm actually unable to install nginx. forbidden… for reasons