Thursday, 2021-12-02

opendevreviewSteve Baker proposed openstack/ironic master: Write master grub config on startup  https://review.opendev.org/c/openstack/ironic/+/81558001:04
opendevreviewSteve Baker proposed openstack/ironic master: Capture [pxe]loader_file_paths for distros  https://review.opendev.org/c/openstack/ironic/+/81539201:04
*** pmannidi|Interview is now known as pmannidi02:45
*** pmannidi is now known as pmannidi|Lunch03:39
*** pmannidi|Lunch is now known as pmannidi06:09
hgyHello, Ironic!\06:53
muellerbegood morning ironic o/07:13
rpittaugood morning ironic! o/07:25
arne_wiebalckGood morning, hgy muellerbe rpittau and Ironic!07:45
rpittauhey arne_wiebalck :)07:45
hgyhey muellerbe rpittau and arne_wiebalck :)07:46
rpittauhey hgy :)07:47
arne_wiebalckstevebaker[m]: this looks great and addresses my understanding of what operators want, thanks!07:49
dmelladodtantsur: o/ so, found some issues on the docs/files09:11
dmelladoon the documentations in https://docs.openstack.org/bifrost/latest/install/playbooks.html09:11
dmelladoit says:09:11
dmelladoIf you wish to build an image, based upon the settings, you will need to set create_image_via_dib to true.09:12
dmelladobut if I go to the actual files09:12
dmelladoon playbooks/inventory/group_vars/target09:12
dmelladoI see09:12
dmellado# Setting to utilize diskimage-builder to create a bootable image.             09:12
dmelladocreate_image_via_dib: "{{ not use_cirros | default(false) | bool }}"                                                                                                                                                 09:12
dmelladodib_image_type: vm                                                             09:12
dmelladoand it's also not really clear on which file to set this up, I assume is 'target' but clarifying this would be awesome09:13
ajyadtantsur: what's the plan with Virtual media certificates? Asking as iDRAC hasn't implemented that yet, it's at 1.3.2. Would this somehow impact Ironic?09:21
opendevreviewchandan kumar proposed openstack/ironic-python-agent-builder master: Replace genisoimage with xorriso  https://review.opendev.org/c/openstack/ironic-python-agent-builder/+/82012409:30
dtantsurgood whatever the hell it is today, ironic09:40
dtantsurajya: I've laid the foundation in sushy; I don't plan on working on the ironic side until we see hardware support09:41
dtantsurwill be optional either way09:41
ajyaok, thanks09:42
dtantsurdmellado: honestly, I get confused by group_vars in ansible, so I just use -e :D09:42
dmelladolol09:42
dtantsurI think target is correct, needs double-checking09:42
dmelladoso overall IIUC target==localhost, so I'm ok09:42
dtantsuryep09:42
dtantsurokay, where did I put my bloody coffee?09:42
* dtantsur goes searching09:43
dmelladojust not sure about dib_image_type09:43
dmelladoI assume it should be 'baremetal'? xD09:43
dmelladoand also the dib_os_element optiones, besides debian and 'ubuntu'09:43
dtantsurdmellado: so, these types are horrible legacy09:43
dmelladowould centos just go and deploy centos 8 stream?09:43
dtantsurvm and baremetal are whole disk and partition images09:43
dtantsurI think leaving vm is actually the right thing to do09:43
dmelladooh, I see, kinda confusing09:44
dtantsurjust "centos" defaults to 7 IIRC09:44
dtantsuryou need to set release to 8-stream09:44
dmelladodib_os_release: 8-stream09:44
dtantsurdib_os_release to be precise09:44
dtantsuryep09:44
dmelladoawesome, will keep digging09:44
dmelladothanks dtantsur 09:44
dtantsurdmellado: if you could submit a documentation patch once it works, it would be awesome09:45
dmelladoI'll write a commit to the docs once I'm successful 09:45
dmelladoyeah09:45
dtantsurright :)09:45
dtantsuryou know, it's hard to see what is missing when you've been working on the project for 8 years09:45
dmelladolol, totally09:45
dmelladoI'm basically a first-user noob on this, so cope with me xD09:45
dmellado(even thought I still have a t-shirt around! xD)09:45
dtantsurno worries. I know that bifrost docs need a lot of love09:45
dtantsurI have rewritten the installation docs recently, but not the other ones09:46
dtantsurre vm: https://docs.openstack.org/diskimage-builder/latest/elements/vm/README.html09:46
dmelladook, so even if its a baremetal server09:47
dmelladoit'll go and partition the disk09:47
dtantsurdmellado: not exactly. "vm" aka whole disk images come with partitioning embedded (you can tell DIB how to partition)09:53
dtantsurdmellado: "baremetal" are partition images come with root partition only. Ironic will create basic partitioning for you.09:54
dtantsurI'd stick with whole disk images, unless you have specific requirements.09:54
dtantsuryou can ask cloud-init to grow the last partition, so the size should not be an issue.09:54
dtantsurdmellado: we should probably link to https://docs.openstack.org/ironic/latest/user/creating-images.html from the bifrost docs09:55
dmelladodtantsur: gotcha, I'll probably make some notes there10:04
dmelladoand +1 on the linking10:05
opendevreviewMerged openstack/sushy master: Support for creating and deleting virtual media TLS certificates  https://review.opendev.org/c/openstack/sushy/+/81779210:19
opendevreviewDmitry Tantsur proposed openstack/ironic master: DNM try to repair RPC  https://review.opendev.org/c/openstack/ironic/+/81990310:25
opendevreviewDmitry Tantsur proposed openstack/ironic master: DNM try to repair RPC #2  https://review.opendev.org/c/openstack/ironic/+/82014110:27
iurygregorygood morning Ironic o/10:38
arne_wiebalckhey iurygregory o/10:40
dmelladodtantsur: why is bifrost asking for auth_url if there's no keystone? xD10:42
dmelladoTASK [bifrost-cloud-config : Execute openstack.cloud.config to collect facts]10:42
dmellado**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************10:42
dmelladojueves 02 diciembre 2021  11:41:37 +0100 (0:00:00.994)       0:00:02.052 ****** 10:42
dmelladoAn exception occurred during task execution. To see the full traceback, use -vvv. The error was: keystoneauth1.exceptions.auth_plugins.MissingRequiredOptions: Auth plugin requires parameters which were not given: auth_url10:42
dtantsurehhhmmm, some bad defaults? what are you invoking and how?10:47
dmelladoI frist did the playbookk install, which ran fine10:49
dmelladoansible-playbook -vvvv -i inventory/target install.yaml10:50
dmelladoand then I wanted to enroll the machine10:50
dmelladoso 10:50
dmelladobifrost-cli --debug enroll /tmp/baremetal.json10:50
dmelladohttps://paste.openstack.org/show/811390/10:52
dmelladothis is my baremetal.json 10:52
dtantsurhmm, tried locally, it worked10:53
dtantsurdmellado: has it generated a reasonably looking ~/.config/openstack/clouds.yaml?10:53
dmelladooh, and I did export OS_CLOUD=bifrost10:53
dmelladohmm looks like it10:55
dmelladolet me paste it around10:55
dmelladohttps://paste.openstack.org/show/811391/10:55
dmelladothe issue showed up when enrolling the machine10:56
dtantsuriiiinteresting. I've just done the same, and it worked Oo10:57
dmelladosame pattern with the playbook10:59
dtantsurdmellado: if you just run `baremetal driver list`, will it work for you?10:59
dmelladohttps://paste.openstack.org/show/811392/10:59
dmelladoworks11:00
dmellado$ baremetal driver list11:00
dmellado+---------------------+----------------+11:00
dmellado| Supported driver(s) | Active host(s) |11:00
dmellado+---------------------+----------------+11:00
dmellado| ilo                 | fedora         |11:00
dmellado| ipmi                | fedora         |11:00
dmellado| manual-management   | fedora         |11:00
dmellado| redfish             | fedora         |11:00
dmellado+---------------------+----------------+11:00
dmelladooh, no idrac11:00
dmelladocould that be the issue?11:00
dtantsurdmellado: it's not the issue, but it will be the issue :)11:00
dtantsuryou need to set enabled_hardware_types=ipmi,redfish,idrac (for example)11:01
dmelladoon ironic config?11:01
dtantsurdmellado: when running the installation playbooks11:01
dmelladooh, I see11:02
dtantsur(you can modify ironic directly, but it's harder)11:02
dmelladohehl did and restarted, then boom11:03
dmelladoanyway, need to drop off for a while, will check and bug you later, thanks in advance!11:03
jingvarCan someone explain how to use standalone Bifrost? I've installed it on Ubuntu, but can't run baremetal node list ( /opt/stack/bifrost/bin/baremetal is exist)12:28
jingvarI know about PATH, but why it was not updated during  the installation12:30
iurygregoryjingvar, are you on the virtual env created by bifrost?12:31
iurygregorydid you set the OS_CLOUD variable?12:31
jingvarno12:33
iurygregorysource /opt/stack/bifrost/bin/activate12:33
iurygregoryexport OS_CLOUD=bifrost12:33
jingvaryep, I just use /opt/stack/bifrost/bin/baremetal node list12:34
jingvarI think it is missed in the doc12:34
jingvaror I'm a little bit blind :)12:35
jingvarWhere is servers.yaml foramt defention to enroll nodes?12:39
jingvarAs I rememeber the way is enroll, inspect, provision12:39
opendevreviewIury Gregory Melo Ferreira proposed openstack/ironic-specs master: Yoga Themes  https://review.opendev.org/c/openstack/ironic-specs/+/81530812:40
jingvarand I can skip inspect if fill out cpu, disk etc12:40
dtantsurjingvar: you can use bifrost playbooks from https://docs.openstack.org/bifrost/latest/user/howto.html12:43
dtantsurjingvar: or you can use pure Ironic from now on: https://docs.openstack.org/ironic/latest/install/standalone.html12:43
iurygregoryhttps://docs.openstack.org/bifrost/latest/user/howto.html#enroll-hardware12:43
iurygregoryyeah I was about to paste the link :D12:43
jingvarwhat is "ansible_ssh_host": "192.168.122.2",12:44
jingvarwhere is json schema?12:44
dtantsurjingvar: the node's (future) IP address. I *think* you can skip that.12:45
dtantsurdisclaimer: I personally use pure Ironic commands12:45
jingvarehhh12:45
jingvar"provisioning_ipv4_address": "10.0.0.9",12:46
jingvar"ipv4_address": "192.168.122.2",12:46
jingvarwhat is it12:46
dtantsurjingvar: you can potentially use a different address during provisioning. I'd not do that, just skip it.12:47
* dtantsur feels like a lot of documentation clean up is required12:47
jingvarwhat is a minimal way - set of variables12:48
dtantsurjingvar: I think provisioning_ipv4_address is what you can skip. My (auto-generated) inventory does not have it, it does seem to have everything else.12:49
jingvarextra unnecessary variables  without explanation...12:50
jingvarwhat is minimal set of variables to provison baremetal? 12:52
dmelladodtantsur: ok, so found the issue12:53
dmelladoa pre-existing, old as hell /etc/openstack/clouds.yaml file12:53
dmelladoSIGH12:54
dmelladoxD12:54
dtantsuraaaahhh12:54
jingvaras I rememeber  "uuid": "00000000-0000-0000-0000-000000000001" is unnesseray, ironic creates it automaticaly12:54
dtantsurjingvar: correct12:54
dtantsurproperties can be auto-discovered12:54
dtantsurdriver and driver_info are mandatory for sure12:54
jingvarand where is it12:54
dtantsurdmellado: I was going to suggest that once you're back :)12:54
dtantsurnics is mandatory (can be discovered, but not always)12:55
jingvarnic uses to set ipmi boot as I remebebre, but it always first nic12:55
dtantsurjingvar: it's the NIC you can PXE-boot from on. It may or may not be the first, depends on your setup.12:56
jingvarit just my experience in  a virtual env12:56
jingvarpxe.cfg will use it mac  12:57
opendevreviewDmitry Tantsur proposed openstack/ironic master: DNM try to repair RPC  https://review.opendev.org/c/openstack/ironic/+/81990312:58
dtantsurdmellado: admittedly, we shouldn't try to probe all clouds. but that's how ansible-collections-openstack work.12:59
dmelladodtantsur: so, next issue xD13:01
dtantsur\o/13:01
dmelladoTASK [ironic-enroll-dynamic : Dynamic enrollment]13:02
dmellado*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************13:02
dmellado*13:02
dmelladotask path: /home/dmellado/Devel/openstack/bifrost/playbooks/roles/ironic-enroll-dynamic/tasks/main.yml:2213:02
dmelladojueves 02 diciembre 2021  14:01:15 +0100 (0:00:00.195)       0:00:07.110 ****** 13:02
dmelladofatal: [cnfdf07 -> {{ groups['target'][0] if groups['target'] is defined else 'localhost' }}]: FAILED! => {13:02
dmellado    "msg": "The task includes an option with an undefined variable. The error was: 'driver' is undefined\n\nThe error appears to be in '/home/dmellado/Devel/openstack/bifrost/playbooks/roles/ironic-enroll-dynamic/tasks/main.yml': line 22, column 3, but may\nbe elsewhere in the file depending on the exact syntax problem.\n\nThe offending line appears to be:\n\n\n- name:13:02
dmellado\"Dynamic enrollment\"\n  ^ here\n"13:02
dmellado}13:02
dmelladohttps://paste.openstack.org/show/811397/13:02
dmelladoooops meant to just type the pastebin13:02
dmelladosorry on the flood13:02
dtantsurheh13:02
dtantsurcan it be that your inventory file lacks a "driver"?13:02
dmelladoit should have it xD13:04
dmellado 19         "driver": "idrac",                                                                                                                                                                                                                                                                                                                                                           13:04
dmellado                                                  13:04
dmelladothat's the json file, oh13:04
dmelladoand I've exported it as export BIFROST_INVENTORY_SOURCE13:05
dtantsurdmellado: how do you invoke enrollment? do you use the dynamic inventory?13:05
dmelladoxport BIFROST_INVENTORY_SOURCE='/home/dmellado/Devel/openstack/bifrost/playbooks/inventory/baremetal.json'13:06
dmelladoand then13:07
dmelladoansible-playbook -vvvv -i inventory/ enroll-dynamic.yaml 13:07
dmelladobut it does seem something related to the vars13:07
dmelladomaybe it's not sourcing that well13:07
dmelladoas when I added -e driver=idrac13:07
dmelladoit complained about another var13:07
dmelladohmm13:07
dtantsur`-i inventory/` doesn't look correct13:08
dmelladooh, I'm dumb13:08
dmelladojust read it13:08
* dmellado facepalms13:08
dtantsurwe should probably remove the 2nd example or make it less prominent13:08
dtantsur`-i inventory/bifrost_inventory.py` is what most people will use13:08
dmelladothere's an issue on the docs13:09
dmelladosee the second call here13:09
dmelladohttps://docs.openstack.org/bifrost/latest/user/howto.html#enroll-hardware13:09
dmelladoansible-playbook -vvvv -i inventory/ enroll-dynamic.yaml13:09
dmelladofrom docs13:09
dmelladojust noticed the issue, but it's posted there xD13:09
dtantsuror maybe it's supposed to take everything from the directory? I don't know.13:09
dmelladonah13:09
dmelladoansible-playbook -vvvv -i inventory/bifrost_inventory.py enroll-dynamic.yaml13:09
dmelladoworked13:09
dmelladoI'll be correcting these issues on the docs13:10
dmelladothanks in any case!13:10
dtantsurinterestingly, using inventory/ worked for me. dunno. let's move this 2nd part to a note.13:10
jingvarwhy not just use something like that for examples  https://paste.opendev.org/show/811399/13:11
dmelladojingvar: +113:11
dmellado| ef4bbe4a-3ecd-4bae-888e-52c406707206 | cnfdf07 | None          | None        | available          | False       |13:12
dmelladoawesome xD13:12
dtantsurthis is a start :)13:13
iurygregorycongrats =)13:13
dtantsurFYI `bifrost-cli enroll` should do the magical inventory handling for you13:13
dtantsurwe probably need a similar command for deployment, but I didn't have time for it13:13
iurygregorybifrost-cli <313:13
jingvarwhere is step download a qcow and place it to right place13:16
dtantsurdmellado: ^^ you tried DIB-built images already?13:16
dtantsurjingvar: I think the default is to build an image with diskimage-builder13:16
dtantsuror you can download it yourself and use a file:/// URL. or put it /httpboot and use an http:// url13:17
jingvarwhre  is it in the doc?13:17
dtantsurdunno if it's there or not13:18
dtantsuras I said earlier, this part of the docs need significant expansion13:18
opendevreviewMerged x/sushy-oem-idrac master: Add destructive field flag to export configuration  https://review.opendev.org/c/x/sushy-oem-idrac/+/81681513:18
jingvarwhy is the simple job so painfull :) 13:18
dtantsurpatches welcome. bifrost is purely a community projects with no large vendors behind it (unlike ironic itself).13:20
iurygregoryI know there is a role you can use to create the images bifrost-create-dib-image 13:20
iurygregoryhttps://github.com/openstack/bifrost/blob/master/playbooks/roles/bifrost-create-dib-image/README.md13:20
dtantsuryou can even use diskimage-builder CLI :)13:20
dtantsurthis role is invoked by bifrost when you request it to build an image13:21
jingvarI wan't use a common cloud image13:21
jingvarubuntu/centos13:21
iurygregoryyeah, if the person already know that wants to build and image they can use during the installation =)13:21
dtantsurjingvar: just put it to /httpboot and use http://<IP>:8080/<filename>13:22
dtantsurat some point I'll reproduce it all from scratch and document the missing bits if nobody beats me to it13:23
jingvarAs user I want to get deployed ubuntu cloud image with a network config , ssh key on baremetal with ipmi ip user/password13:23
dtantsur(but it's definitely not when I have a migraine since yesterday evening)13:23
jingvarI have to install bifrost, fillout  server name, ipmi ip, ipmi user, ipmi password and enroll it13:25
jingvarsecond one, I have to download my cloudimage and place it into /http (I can skip this, uses an external provider for this kind of resources )13:26
jingvari have to place the url(qcow) into ?13:27
dtantsurjingvar: https://github.com/openstack/bifrost/blob/master/playbooks/inventory/baremetal.yml.example has examples, we should probably move it to the docs (I think dmellado wanted to do that/)13:29
opendevreviewMerged x/sushy-oem-idrac master: Updating yoga tested python versions in classifier  https://review.opendev.org/c/x/sushy-oem-idrac/+/81927713:29
jingvarwhat about inspect phase13:32
jingvareach phase should have an correct set of fields13:33
dtantsurjingvar: inspection, assuming you even need it, shouldn't require anything special13:34
dtantsurironic folks ( iurygregory if you have time ), my headache is not getting better, I need to step back for a bit. could you maybe help the new folks with bifrost?13:35
dtantsurI think we have answers to all questions somewhere, but the "where" is usually not the docs :/13:36
dmelladodtantsur: take care man!13:36
jingvarCan we continue?13:37
iurygregorydtantsur, sure =)13:37
iurygregorydtantsur, take care!13:37
jingvardtantsur: be healthy13:38
jingvarwhat is the way to configure network of baremeatl?13:40
dmelladodtantsur: for the record, I just set the vars for using centos8, which I think I'll add to the docs around as those weren't clear to me at all13:43
iurygregoryjingvar, you mean to configure the dhcp? https://github.com/openstack/bifrost/blob/7271695714739af10d741a39dc4acd5e68465cb5/doc/source/user/dhcp.rst13:44
jingvarno, it about baremeatl propirities 13:47
iurygregorybifrost should have the setup for your network and you wouldn't need to worry, if by proprieties you the information you can collect from the HW via introspection this will happen after you enroll the node and trigger inspection 13:52
jingvar"/home/ubuntu/bifrost/playbooks/inventory/bifrost_inventory.py", line 22, in <module>     from oslo_config import cfg ModuleNotFoundError: No module named 'oslo_config'13:52
iurygregoryO.o 13:53
jingvarI've added some fields into servers.yaml, delete nodes, ant it happen13:53
iurygregoryare you running inside the venv?13:53
jingvardeactivate it13:53
jingvarubuntu@ephemeral:~$ ./bifrost/bifrost-cli enroll ~/servers.yaml 13:54
iurygregoryif you are not in the venv I would expect that to happen...13:54
jingvarit not works in venv13:54
jingvarubuntu@ephemeral:~$ source /opt/stack/bifrost/bin/activate13:55
jingvar(bifrost) ubuntu@ephemeral:~$ ./bifrost/bifrost-cli enroll ~/servers.yaml13:55
jingvarTraceback (most recent call last): ....13:55
jingvarfull log https://paste.opendev.org/show/811402/13:56
jingvarfirst time it works (withou venv)13:56
* iurygregory looks13:56
jingvarmaybe it is wrong way use the doc for bifrost installation :)13:57
jingvarhints from your side13:58
dtantsuryep, can reproduce it13:58
dtantsuryou need to run bifrost-cli from the bifrost directory13:58
dtantsurapparently some pbr magic prevents it from working from other directories (doh!)13:59
jingvarnice13:59
jingvarfrom venv or bare13:59
dtantsurvenv13:59
iurygregorytks pbr -.-'13:59
jingvarok, it works14:00
opendevreviewDmitry Tantsur proposed openstack/bifrost master: Catch all exceptions from pbr when importing the root package  https://review.opendev.org/c/openstack/bifrost/+/82017314:01
dtantsurthis is easy to fix ^^14:01
jingvarwhat about ssh keys?14:01
* dtantsur steps back again14:01
iurygregoryI need to rebuild my bifrost env to test things because I forgot to set ssh via password and I'm using another computer (/facepalm)14:01
dtantsurssh keys are going through the configdrive. I think it's built automatically by bifrost. I think.14:01
* dtantsur steps back for real14:01
jingvarI need to place my key...14:01
iurygregoryyeah bifrost should find the ssh key for you14:02
iurygregoryhttps://github.com/openstack/bifrost/blob/7271695714739af10d741a39dc4acd5e68465cb5/playbooks/roles/bifrost-ironic-install/ssh_public_key_path.yaml#L1614:02
iurygregoryhttps://github.com/openstack/bifrost/blob/7271695714739af10d741a39dc4acd5e68465cb5/playbooks/roles/bifrost-configdrives-dynamic/README.md#role-variables you can set the variables if you want also14:04
jingvarhttps://paste.opendev.org/show/811404/ is it  enough?14:04
iurygregoryshould be 14:05
jingvar192.168.0.10 - bifrost server ip14:05
jingvardhcp range 200-22014:05
iurygregoryI don't think you need to set the ipv4 14:06
jingvarhow i shuld set desired node ip14:06
iurygregoryoh ok you want to specify, just make sure that there is available I think ( I've always let the dhcp provide the ip)14:10
jingvarwe never do this ж)14:11
jingvaror it is about ipa phase14:11
jingvarwhere I have to set final IP14:12
jingvarand how to setup bifrost with legacy boot - by default uefi , I've read14:15
iurygregoryoh you need to specify that in the node let me find14:16
dtantsuryep, or use default_boot_mode: bios when installing14:17
iurygregorythis ^14:17
iurygregoryopenstack baremetal node set <node-uuid> --property capabilities='boot_mode:bios'14:18
jingvarI talk about ironic drver types14:19
jingvar--uefi    Boot machines in the UEFI mode by default.14:20
jingvaror it means if the option is enable it will use UEFI14:21
dtantsurTheJulia: oh, I FINALLY found the error in my patch! I change the call to client.prepare from (topic=topic) to just (topic). The first positional argument is not a topic >_<14:22
dtantsurffs, it took me 3 days to debug #headbang14:22
iurygregoryjingvar, ironic now is default to UEFI boot14:22
jingvaryep, enabled_boot_interfaces = ipxe,pxe,redfish-virtual-media14:22
jingvarfor default example from the doc14:23
iurygregoryso if you want to use legacy bios you need to have the right configs14:23
jingvarturn back to IP settings14:23
jingvarwhat is IP will have my node after provison? comes from?14:24
opendevreviewDmitry Tantsur proposed openstack/ironic master: [WIP] All-in-one Ironic service with a local RPC bus  https://review.opendev.org/c/openstack/ironic/+/81962014:24
iurygregoryit will use [deploy]default_boot_mode if you don't have boot_mode set14:24
opendevreviewDmitry Tantsur proposed openstack/ironic master: [WIP] Add rpc_transport == none  https://review.opendev.org/c/openstack/ironic/+/82003614:25
jingvar(bifrost) ubuntu@ephemeral:~/bifrost$ ansible-playbook -vvvv -i inventory/bifrost_inventory.py deploy-dynamic.yaml14:27
jingvarERROR! the playbook: deploy-dynamic.yaml could not be found14:27
dtantsurcd playbooks14:27
iurygregory^ yeah14:28
iurygregoryyou need to run from the playbooks dir or specify playbooks/deploy-dinamic.yaml I think14:28
jingvar[WARNING]: Could not match supplied host pattern, ignoring: baremetal14:29
jingvarskipping: no hosts matched14:29
jingvar(bifrost) ubuntu@ephemeral:~/bifrost/playbooks$ baremetal node list14:30
jingvar| cf3d0c9c-e877-4519-adec-aa6cb3f6d83a | ctl01.stg | None          | power on    | available          | False       |14:30
TheJuliadtantsur: yay!14:30
TheJuliajingvar: umm.. did you set a BIFROST_INVENTORY... environment variable?14:32
* TheJulia doesn't remember what she named it percisely which is a bad sign14:32
jingvarofcourse not set14:32
TheJuliaahh, yeah. It has to be set to a file, or you could just set it to ironic14:32
dtantsurTheJulia: we could use some docs update, I guess14:33
* dtantsur has a headache and 2 meetings ahead14:33
jingvarTASK [bifrost-configdrives-dynamic : Make metadata folders - /openstack/<version>] failed14:33
jingvarThe task includes an option with an undefined variable14:33
* TheJulia raises an eyebrow14:34
jingvarbifrost-configdrives-dynamic/tasks/main.yml14:34
jingvarMake metadata folders - /openstack/<version>14:34
jingvarThe error was: 'uuid' is undefined14:35
TheJuliahmmm14:35
TheJuliasomething seems broken *or* it is not getting your inventory14:35
TheJuliaif you run inventory/bifrost_inventory, what do you get?14:35
jingvareee, full command line please14:37
TheJuliayou should just be able to execute it directly14:37
TheJulialike ./inventory/bifrost_inventory.py14:37
jingvar(bifrost) ubuntu@ephemeral:~/bifrost$ sudo find / -name bifrost_inventory14:38
jingvar(bifrost) ubuntu@ephemeral:~/bifrost$14:38
TheJuliawell... there is your problem14:39
TheJuliahmm14:39
jingvargot it14:39
jingvarhttps://paste.opendev.org/show/811408/14:40
TheJuliahttps://github.com/openstack/bifrost/blob/master/bifrost/inventory.py14:40
TheJuliaso your inventory data must have a uuid, or since the node is already created, you can change the source to ironic and it *should* collect all of the data from ironic14:41
jingvarwhat means change source14:44
TheJuliawell, to whatever BIFROST_INVENTORY_SOURCE is set to14:45
TheJuliaexport BIFROST_INVENTORY_SOURCE=ironic should cause it to read from ironic's data14:46
TheJuliawhich *would* have a uuid, but might not have an IP. Your file your feeding via BIFROST_INVENTORY_SOURCE needs to have the node's UUID.14:46
TheJuliadtantsur: So steve and I were staring at an issue one of our telecom friends filed recently yesterday and noticed this gem in sushy https://review.opendev.org/c/openstack/sushy/+/82007614:47
dtantsurTheJulia: I suspect it was intentional was some fallback logic, so proceed with caution14:48
dtantsur(second "was" should be "for")14:48
TheJuliaone of the parents actually expected AccessError as noted in the docs but it never seemed to be raised anywhere14:49
TheJuliaWe seemed to have gotten the client wedged in this state where is's connection data is bad and it is trying to authenticate with the session service using the old data, specifically on getting the path to the session service which if I remember correctly is *not* supposed to enforce authentication14:50
jingvaransible.vars.hostvars.HostVarsVars object' has no attribute 'ansible_noop14:50
jingvarTASK [bifrost-deploy-nodes-dynamic : Deploy to hardware - bifrost default]14:50
TheJuliajingvar: your going to need to give us the context of how you get the error for us to help you. I recommend using paste.openstack.org for this purpose14:50
dtantsurit rings bells14:50
TheJuliaajya: could you take a look at https://review.opendev.org/c/openstack/sushy/+/82007614:50
dtantsurI remember there was an issue with network_interface being a thing both in ironic and in ansible14:51
dtantsurso ansible_{{ network_interface }} could misbehave14:51
dtantsurI thought we've fixed that, I haven't seen it in a while14:51
* dtantsur still cannot think reliably14:51
jingvarhttps://paste.opendev.org/show/811409/14:51
ajyaTheJulia: will check tomorrow14:51
TheJuliadtantsur: Seve and I are thinking https://review.opendev.org/c/openstack/ironic/+/820077 <-- may be a easily backportable ironic patch, but we don't *actually* see any evidence of an AttributeError getting returned in the logs :\  but logically, it should be getting AttributeErrors and bombing the sushy client when it tries to re-engage the client.14:52
TheJuliadtantsur: yeah, I'm likely going to loose a good chunk of today to the logs as well, I have gigabytes of unhappy ironic logs14:53
dtantsurI'll think about it when I can14:53
TheJuliaso there may still be a third thing going on14:53
dtantsurugh :(14:53
iurygregoryTheJulia, +W14:53
TheJuliaiurygregory: that was a little fast :)14:54
TheJuliaajya: please look at it tomorrow, and if necessary issue a revert14:54
iurygregoryI was looking when you pasted the code =)14:54
iurygregorythe change was quite small and after reading the story it makes sense14:54
iurygregorybut we know that it may cause problem in other HWs... because it's our life14:55
dmelladoTheJulia: o/ now that I've got you around I have a question re: bifrost and dib-images and so xD14:55
dmelladoIIUC14:55
* TheJulia hides14:55
dmelladojust setting this on group_vars/target14:55
dmellado  create_image_via_dib: true                                                        14:55
dmellado  dib_os_element: centos                                                            14:55
dmellado  dib_os_release: 8-stream                                                          14:55
iurygregory+14 -1 (not many changes to review lol)14:55
dmellado  dib_image_type: vm                                                                14:55
dmelladowould have bifrost use centos 8 stream14:55
dmelladoas the image, isn't it?14:56
TheJuliaiurygregory: yeah, it just dead ends there and literally one of the logs I have compressed to like 11mb... uncompressed to 997mb and 98% of it is that debug line getting hit over... and over... and over again.14:56
iurygregoryTheJulia, OMG14:56
* iurygregory hopes it won't cause regressions etc but it looks ok =)14:57
dmelladoTheJulia: hope the question wasn't a reason for hiding xD14:57
TheJuliadmellado: need to get one thing off my mind with someone else14:57
* TheJulia sends required message14:58
dmelladoand again, bifrost/ironic kinda newbie, but I'm not sure on how to configure networking, besides dhcp/ipv4 (how about ipv6? xD)14:58
dtantsurdmellado: the default is whatever the OS does. in case of CentOS it's DHCP on the first NIC.14:59
dmelladoa-ha14:59
dtantsurfor actual configuration there is a thing called config-drive.. which we probably also poorly documented14:59
dtantsurbut bifrost generates it by default, I think14:59
dmelladoawww config-drive, brings back terrible memories xD14:59
dtantsurhaha, right14:59
dtantsurnot many options for bare metal though, right? :)14:59
dtantsurI hope TheJulia remembers how to use it in bifrost14:59
TheJuliadtantsur: partially. I wrote a bunch of it...15:00
* TheJulia wonders if sed s/TheJulia/TheJuliaTheElder/ is appropriate15:00
dmelladoI do kinda recall using config-drive to push cloud-init (looks like a lifetime ago...)15:00
TheJuliaso anyway!15:00
dmelladowouldn't you have any kuryr-kubernetes questions around? I feel bad about just asking and not replying xD15:01
dtantsurI don't think so :)15:01
TheJuliadmellado: so... hmm15:01
dtantsurdmellado: I think you can set all this stuff per node: https://opendev.org/openstack/bifrost/src/branch/master/playbooks/roles/bifrost-configdrives-dynamic/tasks/main.yml#L43-L4715:02
TheJuliadmellado: I never encoded hard coded support for ipv6 in bifrost, the templates were purely v4 generated for static config injection. You could absolutely do v6 if you have slaac on the attached network or a dhcp server configured for v6.  If you want static v6, I think your going to need to patch the template, playbook, and default variables15:03
dtantsurwe should dump the sacred knowledge of TheJuliaTheElder into the docs :)15:03
TheJuliaeek15:03
TheJuliadon't crack my head open like an egg!15:03
TheJuliaand pour it into the docs, that woudl be weird15:03
arne_wiebalck:-D15:03
dtantsur"weird" :D15:03
* TheJulia had *super* weird dreams last night15:03
dmelladolol15:03
dmelladoTheJulia: I swear I'll try contributing that back when my 2yo kid allows me xD15:04
dmelladoso, then, dtantsur 15:04
TheJuliadmellado: I totally understand15:04
TheJuliadmellado: my 2yo corgi child needs to go to the corgi doctor (vet) today15:04
dmelladoIF I put that back into the baremetal.json it should be able to pick it up per node15:05
dtantsurI think so15:05
dmelladoTheJulia: ouch, hope the corgi child gets better soon15:05
dtantsur++15:05
dmelladodtantsur: AAAAND http and http_proxy would be picket up from env15:05
TheJuliadmellado: yes, they will become variables if memory serves15:05
dmelladoso, I feel I was a pain to all of you and I learnt a lot15:05
dtantsurit's partly our fault for not having it in the docs :)15:06
dtantsurno worries15:06
jingvarmy story https://etherpad.opendev.org/p/jingvar15:06
dmelladoI'm missing a physical openstack summit15:06
dtantsurdmellado: next June?15:06
rpittauall fingers crossed15:06
dtantsurwhich reminds me, I should submit something for it15:06
dtantsurhttps://openinfra.dev/summit/15:06
dmelladoI do hope15:07
dmelladoI'd love visiting Berlin tbh15:07
dmelladowas living there for some time and seldom have time to visit15:07
dtantsurand TheJulia needs to leave more stickers in brewdog :)15:07
TheJuliahehe15:07
dmelladoshould I submit something about 'surviving bifrost'? xD15:07
TheJuliawe need to find a sticker artist15:08
TheJuliadmellado: sure!15:08
TheJuliadmellado: I'll take a front row seat if there is not a conflict15:08
TheJuliaand would be happy to wear a "blame me" shirt of some sort15:08
dmelladoLOL15:08
dmelladoI'll get to find my t-shirt of 'it works on devstack' then15:09
dtantsurTheJulia: or we can have twin t-shirts "blame him ->" "<- blame her" at this point :D15:09
dtantsurand sit together15:09
TheJuliajingvar: so far... looks good15:09
TheJuliajingvar: if you have the inventory file with a uuid, you could just use the file as source15:09
TheJuliadtantsur: this sounds excellent15:10
dmelladothat's also another question I had15:10
dmelladoI just made up the uuid15:10
dmelladowieh uuid4()15:10
TheJuliadmellado: a lot of people do so15:10
TheJuliaotherwise ironic does it for you!15:10
dtantsurdmellado: you could let ironic generate it, but making it up is perfectly fine15:10
dmelladonot sure if you have something that would generate one on the fly15:10
dmelladooh, I see15:10
TheJuliathe case with jingvar's usage is he is not doing it as one shot, but as separate playbooks, and his inventory file didn't have a uuid, where as the config drive playbook *really* needs uuid15:11
jingvarwhy I need an uid?15:11
TheJuliain CI I think we pull facts back before then to pull the uuid into the ansible context, which gets used on the next plays, so it works in CI then, but manually, directly with a playbook, it errors since it wants it15:12
jingvarat the bottom list of variables  from a user15:12
TheJuliajingvar: It is trying to populate the metadata which includes instance related uuid information. Tools like cloud-config use this to determine if the system has changed or been re-imaged15:12
TheJuliaand then trigger a job to run based upon the present metadata15:12
jingvarok let me try with some uid15:13
TheJuliajingvar: oh, different error this time15:14
TheJulialet me add a suggestion to your etherpad15:14
TheJuliajingvar: try that15:15
jingvarunset BIFROST_INVENTORY_SOURCE15:17
jingvarOK15:17
jingvarbut15:17
jingvari dont see that provisioning is started15:18
jingvarIt just env with  bootable iso,  I can share it15:20
*** dking is now known as Guest738315:21
Guest7383I know that this might be a silly or unanswerable question, but does anybody know of issues where Inspector uses a large amount of RAM?15:22
jingvarit is amsing Bifrost can push uid to ironic but can't  get it from ironic15:22
dtantsurGuest7383: I've never noticed it doing so. What is large for you?15:23
Guest7383Currently, I have an Inspector instance running and it seems to be consuming well over 40G of RAM, and I'm not even sure why. This instance does get a lot of queries (once per minute for all 200 servers), but even when that stopped, it didn't change the amount of RAM used. Also, when I tried to run strace, I don't see any new allocation of RAM with incoming queries.15:24
TheJuliahmm, it should be able to, but the inventory source needs to be set15:25
TheJuliajingvar: ^^15:25
dtantsur40G WUT. this is completely crazy.15:25
TheJuliaabsurdly crazy15:25
dtantsurGuest7383: do you have a reproducer for it? or does it simply happened in your production?15:25
Guest7383That's my thought. Fortunately, the server it's on can handle that without any noticeable problem, but I'm sure that it can't be normal.15:26
dtantsurit's not normal at all15:26
dtantsursince it's python, we expect hundreds of megabytes, but not gigabytes15:26
TheJuliaGuest7383: oh! you know what, we likely don't delete data that is receieved15:26
dtantsuryeah, but we don't store it in memory...15:26
TheJuliaso it is likely sitting in process ram and just not GC'ed15:26
TheJuliadtantsur: but... does it go through any object at any point in time?15:27
dtantsurI cannot say it's impossible, but it's support to be GC'ed15:27
Guest7383Right now, I've only seen it in this one instance, and I'm not terribly sure how to cause it. We noticed it a while ago, but as there was no problem, we overlooked it. So, I'm not sure whether it's a fluke or not. This time, I wanted to gather some data before I just restart it and hope for the best.15:27
dtantsurs/support/supposed/15:27
TheJuliadtantsur: oh, absolutely15:27
dtantsurit's clearly a leak somewhere. my first suspect would also be introspection data, but it's not THAT large15:27
dtantsurunless you have many thousands of servers15:28
TheJuliadtantsur: yeah15:28
jingvarwhat is wrong with my config...15:28
Guest7383We have a decent amount of introspection data. We use extra-hardware. It's not absurd, but multiply that over 200 servers and that could make it noticeable.15:28
Guest7383Not thousands. Just a couple hundred for this instance.15:29
dtantsurI don't think extra-hardware generates ~ 200 MiB of data per node15:29
dtantsurbut it should be easy to check in swift or wherever you keep the introspection data15:29
TheJuliasoo.. 200MiB * 200 machines.....15:30
Guest7383We're using a DB. I can check, but I don't think it's huge.15:30
TheJulia40,000 MiB15:30
dtantsuryeah, but 200MiB is a lot15:30
TheJuliaoh, I thoguht you were saying it can15:31
dtantsurI would expect single-digit MiB even on a large server15:31
TheJuliaI've seen it generate at least a couple mb15:31
dtantsurGuest7383: please check, just to rule it out15:31
dtantsurwell, if it's cached introspection data, maybe take a memory dump of the process and grep for it? :)15:31
Guest7383About 155M, so that was pretty close. But that's the whole thing for all servers.15:31
Guest7383Oh, I just realized that I'm not using my nick here. I kept wondering who that Guest guy was. One moment.15:33
dtantsuras a data point: on my bifrost machine (not very active), inspector has RSS of 108972k15:33
dtantsurlol15:33
dtantsurTheJulia: it's been on my todo list for a while to conduct some sort of memory profiling for our services15:34
TheJuliaGuest7383: lol15:34
dtantsurto make sure we're not leaking anything15:34
dtantsurI wonder if there is valgrind for python...15:34
TheJuliawe're pretty bad about forcing unused things to be deleted, because we mentally just rely upon the thread to get GC'ed out of existance15:34
TheJuliabut yeah15:34
dtantsurwell, you cannot force things to be deleted in Python15:35
jingvarohh, started deploy15:35
dtantsurdeploy \o/15:35
dtantsurwho is up for rewriting Ironic in Rust? :)15:35
TheJuliajingvar: \o/15:35
*** Guest7383 is now known as dking_temp15:35
TheJuliadtantsur: I has no braincells15:35
TheJuliadtantsur: well, remove it from the active object in memory which is the easiest way to keep things from getting GC'ed15:36
TheJuliagranted if memory serves that is a copy minus the object in the processor?!?15:36
TheJuliaminus the desire deleted object15:36
dtantsuryeah, if there is an active link, GC will do nothing15:37
TheJuliaexactly15:37
dtantsurwe don't cache too many things though?15:37
dtantsurdb connections, hash ring15:37
dtantsurwell, I wonder if SQLAlchemy caches anything large15:37
TheJuliaooooh15:39
TheJuliabut we don't save that through sqlalchemy15:39
dtantsurwell, dking_temp saves introspection data in the database15:39
TheJuliaoh yeah15:40
TheJuliathen15:40
TheJuliait is global15:40
dtantsurso, technically, we do. I still cannot imagine how 155M of data can turn into 40G of RAM usage.15:40
TheJuliaso yeah15:40
dtantsuron this uncertain note, I'll go get another break15:41
jingvarTheJulia: but where IP for the node15:41
TheJuliadtantsur: I'd dig at the code right now, but I'm on the TC call15:41
*** dking_temp is now known as dking15:42
dkingWell, it's good to know that I found something new, at least.15:43
TheJuliawe need a bug of the year award15:44
TheJuliadking: can you file an item in storyboard please?15:44
dkingYeah, I think I'd be famous.15:44
dkingThat might be a good idea, but I'm not sure that I can really replicate anything or give any useful diagnostic info a this point. I was kinda hoping it was either a known issue or there would be a config setting. Since it's not, I'm wondering whether I should just restart the service to see whether it just goes away and hope it was a fluke.15:46
jingvarit is strange, ironic cleaned up the node (I saw console), but can't set boot from nic in deploy phase15:47
opendevreviewMerged openstack/sushy master: Raise an AccessError with SessionService init  https://review.opendev.org/c/openstack/sushy/+/82007615:51
dkingjingvar: Others here may have better tips, but I've had similar things happen. Does anything change in your clean steps? For instance, I've had issues when changing from Legacy boot to UEFI and also when changing the BMC driver.15:53
dkingAnother problem that we had for an unreasonable amount of time turned out to be an ARP issue because we were using dhclient in a container which couldn't inject ARP, causing PXE to always fail, but only on a certain type of server, and always on exactly the second DHCP request.15:55
jingvari faced with it erale15:56
jingvarit ok, some time you need restart procees15:56
jingvarand it is virtual env ... i saw a lot strange things on it15:58
jingvarovs,bridges etc15:58
dkingYeah, that stuff can become hard to troubleshoot sometimes.16:00
jingvarworks, I hope I can reproduce all the steps16:02
jingvarI push the button16:04
TheJuliaI... thinkI only have one more meeting after my current meeting16:11
*** tosky_ is now known as tosky16:17
TheJulia*sweet*  Creating iso image failed: [Errno 2] No such file or directory: '/usr/lib/syslinux/isolinux.bin': ironic.common.exception.ImageCreationFailed: Creating iso image failed: [Errno 2] No such file or directory: '/usr/lib/syslinux/isolinux.bin'16:20
dkingOkay, so an update. When we dump the memory, it's full of request IDs (i.e. req-2f6a44d0-7a91-4e9a-b0e0-ade4709160e2) and a bit of binary data in between. Some of those requests go back to October.16:24
TheJuliaoh joy16:25
TheJuliaso could.... those req's trace back to ironic asking for status data?16:26
dkingThe logs show this request for one of them: "GET /v1/introspection/6572196c-8c55-40ce-9a6e-abe9cab8d723/data HTTP/1.1" status: 200  len: 38900 time: 0.177123816:27
dkingThat's actually a very long time compared to what I see in the logs when things are fine. 16:28
TheJuliadking: wsgi?16:29
TheJuliaor self-hosting process?16:29
dkingThe logs do say "eventlet.wsgi.server", but I don't think I set up anything for wsgi directly.16:31
TheJuliaokay16:32
TheJuliahmmm16:32
TheJuliahmm16:32
*** priteau is now known as Guest738816:38
*** priteau_ is now known as priteau16:38
rpittauwell this https://review.opendev.org/c/x/ironic-staging-drivers/+/819411 is finally green.....16:40
rpittaubut I think we somehow broke ironic-inspector grenade16:41
TheJuliaso16:53
TheJuliait looks like bios vmedia stuff is borked iwth lacking isolinux16:54
TheJuliawhich seems bizzar that it just broke16:54
TheJuliabizar16:54
TheJuliastill doesn't seem right...16:54
jingvarguys17:08
jingvarI wrote a scrip for begginers https://etherpad.opendev.org/p/jingvar17:09
jingvarbut failed again17:09
rpittaugood night! o/17:13
jingvarI hope yes17:15
jingvarI've finished17:28
jingvarThank folk17:28
dtantsurokay, now my patch fails all CI jobs because Ironic never reacts to heartbeats from IPA. my patch does not modify anything around IPA.18:22
dtantsuram I just cursed?18:22
dtantsuroookay, I wonder if sending RPC to itself ends up using a local call.. and doing nothing because.. reasons?18:25
dtantsurI'll figure out tomorrow o/18:26
stevebaker[m]good morning19:50
TheJuliao/ stevebaker[m] 20:47
opendevreviewJulia Kreger proposed openstack/ironic master: Remove redfish cache entry upon errors  https://review.opendev.org/c/openstack/ironic/+/82007720:49
TheJuliastevebaker[m]: ^^20:52
stevebaker[m]looking20:58
TheJuliathe actual *cache* behavior testing is... lacking there21:03
TheJuliain theory, the only way to validate it is to follow the base sushy objects... at least with how it is all constructed21:05
TheJuliadunno it is worth it21:05
cvstealthSorry if this is an odd question been struggling with this for a few days, but is it possible to do routed networks and using configdrives for the network metadata? I was hoping to avoid the DHCP components in the user instances as I'm attempting to use port group, which didn't seem to play nicely together. 21:14
TheJuliacvstealth: uhhh... technically yes21:15
TheJuliaoh21:15
TheJuliano dhcp at all21:15
TheJuliaso, that would require the instances to support that "network is connected but I don't see dhcp" addressing21:16
TheJuliaand to connect to metadata over that21:16
TheJuliaI don't think anything actually does that out of the box21:16
TheJuliaoh!21:16
TheJuliawait21:16
TheJuliayour not talking about a network metadata service21:16
TheJuliayour talking about metadata from config drives21:16
cvstealthit looked like the configdrive was generated way early in the deployment proces and when looking at the data the network_data on it is completely empty21:16
TheJuliaYeah21:17
TheJuliawe embed what we ship, but the final metadata is not available to later21:17
TheJuliaumm.. hmm21:17
TheJuliawell, we embed what nova ships21:18
TheJuliabut what it ships is too early21:18
TheJuliaI'm not sure there is a *good* way for us to regenerate that or update it21:18
cvstealthI've even tried to put some of the network data json on the node and didn't see that getting pushed down to the configdrive 21:18
TheJuliaI *guess* we could collect it ?maybe? but we wouldn't have the final bonds bound yet21:18
TheJulia:\21:18
TheJuliacvstealth: from nova's side, I think it strips that21:19
TheJuliaor ignores it21:19
TheJuliaits not pure metadata.json contents then21:19
cvstealthfrom reading the docs it seemed like that was mostly dependent on the virtual media type of drivers and we're just using straight ipmi 21:20
TheJuliaI'm not sure there is a way to do it *and* avoid dhcp21:20
TheJulianah, we write through what we get for it regardless of the hardware type21:21
* TheJulia needs to go get lunch21:21
* TheJulia also needs to find glasses21:21
cvstealthThanks I'll keep poking at it, just not super clear how the service network gets wired up in Neutron for the interfaces that the deployed instance should be using. 21:23
TheJuliaIronic does it, nova tells us what the ports *should* be21:26
TheJuliaand then we plug them in the workflow21:26
TheJuliaand the metadata you'd need to build a bond that way from the config drive wouldn't be assembled yet at all21:27
TheJuliawhen it is written, that is21:27
TheJuliaAt least, that is how I percieve it, I'd need to doubelcheck nova.21:27
cvstealthThe nova side makes sense to me, it's more on the Neutron side. Something like do I need 2 interfaces in the bridge_mapping 1 for the provisioning/clean network and 1 for the service network or can it be made to work off a single bridge with Neutron putting both networks on a single dnsmasq process. 21:30
TheJuliaI need to go eat and run an errand, I can try and explain it when I get back21:31
cvstealthThx for the help TheJulia, I'll certainly be around for any guidance you can provide 21:32

Generated by irclog2html.py 2.17.2 by Marius Gedminas - find it at https://mg.pov.lt/irclog2html/!