<div dir="ltr">Hello.<div>I mean if i use kolla-ansible 13.0.0 and kolla 13.0.0 then i upgrade kolla to 13.8.0. I will use kolla 13.8.0 to build new images?</div><div><br clear="all"><div><div dir="ltr" class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr">Nguyen Huu Khoi<br></div></div></div><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, Apr 3, 2023 at 7:38 PM Sean Mooney <<a href="mailto:smooney@redhat.com">smooney@redhat.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">On Mon, 2023-04-03 at 07:18 +0700, Nguyễn Hữu Khôi wrote:<br>
> Hello.<br>
> I have a question.<br>
> Do we need the kolla-ansible version that matches kolla to deploy openstack?<br>
in general no.<br>
<br>
the master branch can often be used to deploy stable/*<br>
however its better to keep them alinged.<br>
<br>
kolla has a pretty stable image api which means that it does not offten need<br>
to modify how images are deployed and as a result some mismatch will not break things.<br>
<br>
however over time thing do change that are incompatible across releases so unless you <br>
have a strong reason not to keep them alinged it best to use the same major release.<br>
i.e. use a stable/zed version of kolla-ansible to deploy stable/zed images.<br>
<br>
using other version of kolla-ansble woudl not be tested in ci so its would not be gurarentteed<br>
to work. you might get lucky but unless you developing kolla-ansible there is little reason to use<br>
missaligned versions.<br>
<br>
> <br>
> Nguyen Huu Khoi<br>
> <br>
> <br>
> On Sat, Apr 1, 2023 at 11:27 PM Satish Patel <<a href="mailto:satish.txt@gmail.com" target="_blank">satish.txt@gmail.com</a>> wrote:<br>
> <br>
> > Thank you sean,<br>
> > <br>
> > I did following an it works hope this is correct way to customize<br>
> > <br>
> > {% extends parent_template %}<br>
> > <br>
> > # Horizon<br>
> > {% block horizon_ubuntu_source_setup %}<br>
> > RUN apt update -y<br>
> > RUN apt install -y net-tools vim<br>
> > RUN touch /root/foo<br>
> > {% endblock %}<br>
> > <br>
> > <br>
> > $ kolla-build --registry docker-reg:4000 -b ubuntu -t source --tag zed-v2<br>
> > --template-override template-overrides.j2 --debug horizon<br>
> > <br>
> > <br>
> > On Fri, Mar 31, 2023 at 1:31 PM Sean Mooney <<a href="mailto:smooney@redhat.com" target="_blank">smooney@redhat.com</a>> wrote:<br>
> > <br>
> > > On Fri, 2023-03-31 at 10:25 -0400, Satish Patel wrote:<br>
> > > > Thank you Sean,<br>
> > > > <br>
> > > > What a wonderful explanation of the process. Yes I can download images<br>
> > > from<br>
> > > > the public domain and push them to a local repository but in some cases<br>
> > > I<br>
> > > > would like to add my own tools like monitoring agents, utilities etc<br>
> > > > for debugging so i decided to build my own images.<br>
> > > > <br>
> > > > I believe <a href="https://tarballs.opendev.org" rel="noreferrer" target="_blank">https://tarballs.opendev.org</a> is the right place to source<br>
> > > > software correctly?<br>
> > > that is the offcial location where all opendev/openstack projects are<br>
> > > released<br>
> > > and its the location distros use to build there packages.<br>
> > > > <br>
> > > > If I want to add some tools or packages inside images then I should use<br>
> > > > Dockerfile.j2 to add and compile images. correct?<br>
> > > <br>
> > > yes so one of the great things about kolla images is tiem was taken to<br>
> > > write<br>
> > > down the image api when the project was first started<br>
> > > <a href="https://docs.openstack.org/kolla/yoga/admin/kolla_api.html" rel="noreferrer" target="_blank">https://docs.openstack.org/kolla/yoga/admin/kolla_api.html</a><br>
> > > <br>
> > > over time the common usecaes were then docuemnted in the admin<br>
> > > image-building guide<br>
> > > <br>
> > > <a href="https://docs.openstack.org/kolla/yoga/admin/image-building.html#dockerfile-customisation" rel="noreferrer" target="_blank">https://docs.openstack.org/kolla/yoga/admin/image-building.html#dockerfile-customisation</a><br>
> > > <br>
> > > <br>
> > > all of the templated imnages have convension/contract that they provide<br>
> > > delement that operator can<br>
> > > use to add customisations.<br>
> > > <br>
> > > for examplel the nova_base_footer block and be used to add addtional<br>
> > > content to the nova-base image<br>
> > > <br>
> > > <a href="https://github.com/openstack/kolla/blob/master/docker/nova/nova-base/Dockerfile.j2#L82" rel="noreferrer" target="_blank">https://github.com/openstack/kolla/blob/master/docker/nova/nova-base/Dockerfile.j2#L82</a><br>
> > > <br>
> > > to customise the iamges you provide what is know as a template override<br>
> > > file<br>
> > > <br>
> > > the contrib folder has a number of exmaples<br>
> > > <br>
> > > <br>
> > > <a href="https://github.com/openstack/kolla/blob/master/contrib/template-override/ovs-dpdk.j2" rel="noreferrer" target="_blank">https://github.com/openstack/kolla/blob/master/contrib/template-override/ovs-dpdk.j2</a><br>
> > > <br>
> > > <a href="https://github.com/openstack/kolla/blob/master/contrib/neutron-plugins/template_override-networking-mlnx.j2" rel="noreferrer" target="_blank">https://github.com/openstack/kolla/blob/master/contrib/neutron-plugins/template_override-networking-mlnx.j2</a><br>
> > > <br>
> > > <a href="https://github.com/openstack/kolla/blob/master/contrib/neutron-plugins/template_override-vmware-nsx.j2" rel="noreferrer" target="_blank">https://github.com/openstack/kolla/blob/master/contrib/neutron-plugins/template_override-vmware-nsx.j2</a><br>
> > > <br>
> > > <br>
> > > the way they work is you starte it with<br>
> > > <br>
> > > {% extends parent_template %}<br>
> > > <br>
> > > then you just create a block that mages the name of the one you want to<br>
> > > repalce<br>
> > > {% extends parent_template %}<br>
> > > <br>
> > > {% block nova_base_footer %}<br>
> > >  RUN /bin/true<br>
> > > {% endblock %}<br>
> > > <br>
> > > <br>
> > > what ever content you put in the block will be injected directly into the<br>
> > > rendered docer file<br>
> > > <br>
> > > <br>
> > > <br>
> > > <a href="https://docs.openstack.org/kolla/yoga/admin/image-building.html#plugin-functionality" rel="noreferrer" target="_blank">https://docs.openstack.org/kolla/yoga/admin/image-building.html#plugin-functionality</a><br>
> > > <br>
> > > show how to use that for neutron<br>
> > > <br>
> > > in addtion to replacing block you can set the conten of specal variables<br>
> > > like horizon_packages_append or horizon_packages_remove<br>
> > > <br>
> > > <br>
> > > <a href="https://docs.openstack.org/kolla/yoga/admin/image-building.html#packages-customisation" rel="noreferrer" target="_blank">https://docs.openstack.org/kolla/yoga/admin/image-building.html#packages-customisation</a><br>
> > > <br>
> > > that allow you add an remove packages in a simple way<br>
> > > there is also a set of macros that you can use<br>
> > > <br>
> > > you include them with<br>
> > > {% import "macros.j2" as macros with context %}<br>
> > > <br>
> > > they are defiend here<br>
> > > <a href="https://github.com/openstack/kolla/blob/master/docker/macros.j2" rel="noreferrer" target="_blank">https://github.com/openstack/kolla/blob/master/docker/macros.j2</a><br>
> > > <br>
> > > if you know that the docs exist the capablitys are coverd pretty well in<br>
> > > the kolla docs you just need to know where to look<br>
> > > hopefully that helps.<br>
> > > <br>
> > > the ovs-dpdk template overide docs can be fouund here<br>
> > > <a href="https://docs.openstack.org/kolla/yoga/admin/template-override/ovs-dpdk.html" rel="noreferrer" target="_blank">https://docs.openstack.org/kolla/yoga/admin/template-override/ovs-dpdk.html</a><br>
> > > <br>
> > > its a liltle differnt then the other since there i used the template<br>
> > > override mechanium to allow compiling ovs with dpdk form souces<br>
> > > <br>
> > > kolla normlly does not support that but it serves as a demonstration for<br>
> > > how operator can do that if they really need too.<br>
> > > i.e. compile a replacment for a minary componet like mariadb. it salso<br>
> > > show how to use git as the souce localtion instead<br>
> > > of tars if that is your prefernce.<br>
> > > <br>
> > > > <br>
> > > > ~S<br>
> > > > <br>
> > > > On Fri, Mar 31, 2023 at 7:01 AM Sean Mooney <<a href="mailto:smooney@redhat.com" target="_blank">smooney@redhat.com</a>> wrote:<br>
> > > > <br>
> > > > > On Thu, 2023-03-30 at 16:49 -0400, Satish Patel wrote:<br>
> > > > > > Folks,<br>
> > > > > > <br>
> > > > > > I am playing with kolla image building to understand how it works.<br>
> > > I am<br>
> > > > > > using the following command to build images and wanted to check<br>
> > > with you<br>
> > > > > > folks if that is the correct way to do it.<br>
> > > > > > <br>
> > > > > > $ kolla-build -b ubuntu -t source keystone nova neutron glance<br>
> > > > > > <br>
> > > > > > Does the above command compile code from source or just download<br>
> > > images<br>
> > > > > > from remote repositories and re-compile them?<br>
> > > > > > <br>
> > > > > openstack is mainly python so in general ther is no complie step.<br>
> > > > > but to answer your question that builds the image using the source<br>
> > > tarballs<br>
> > > > > or the openstakc packages.<br>
> > > > > <br>
> > > > > the defaults soruce locations are rendered into a file which you can<br>
> > > > > override<br>
> > > > > from the data stored in<br>
> > > > > <br>
> > > <a href="https://github.com/openstack/kolla/blob/master/kolla/common/sources.py" rel="noreferrer" target="_blank">https://github.com/openstack/kolla/blob/master/kolla/common/sources.py</a><br>
> > > > > the other build config defaults are generated form this code<br>
> > > > > <a href="https://github.com/openstack/kolla/blob/master/kolla/common/config.py" rel="noreferrer" target="_blank">https://github.com/openstack/kolla/blob/master/kolla/common/config.py</a><br>
> > > > > <br>
> > > > > when you invoke kolla-build its executing<br>
> > > > > <a href="https://github.com/openstack/kolla/blob/master/kolla/cmd/build.py" rel="noreferrer" target="_blank">https://github.com/openstack/kolla/blob/master/kolla/cmd/build.py</a><br>
> > > > > but the main build workflow is here<br>
> > > > > <br>
> > > <a href="https://github.com/openstack/kolla/blob/be15d6212f278027c257f9dd67e5b2719e9f730a/kolla/image/build.py#L95" rel="noreferrer" target="_blank">https://github.com/openstack/kolla/blob/be15d6212f278027c257f9dd67e5b2719e9f730a/kolla/image/build.py#L95</a><br>
> > > > > <br>
> > > > > the tl;dr is the build worklow starts by creating  build director and<br>
> > > > > locating the docker file templats.<br>
> > > > > in otherwords the content of the<br>
> > > > > <br>
> > > <a href="https://github.com/openstack/kolla/tree/be15d6212f278027c257f9dd67e5b2719e9f730a/docker" rel="noreferrer" target="_blank">https://github.com/openstack/kolla/tree/be15d6212f278027c257f9dd67e5b2719e9f730a/docker</a><br>
> > > > > directory<br>
> > > > > <br>
> > > > > each project has a direcoty in the docker directory and then each<br>
> > > > > contaienr that project has has a directory in the project directory<br>
> > > > > <br>
> > > > > so the aodh project has a aodh folder<br>
> > > > > <br>
> > > <a href="https://github.com/openstack/kolla/tree/be15d6212f278027c257f9dd67e5b2719e9f730a/docker/aodh" rel="noreferrer" target="_blank">https://github.com/openstack/kolla/tree/be15d6212f278027c257f9dd67e5b2719e9f730a/docker/aodh</a><br>
> > > > > the convention is to have a <project>-base contaienr which handels the<br>
> > > > > depency installation and then one addtional contaienr for each binary<br>
> > > deamon<br>
> > > > > the project has i.e. aodh-api<br>
> > > > > <br>
> > > > > the name of the folder in teh project dir is used as the name of the<br>
> > > > > contaienr<br>
> > > > > <br>
> > > > > if we look at the content of the docker files we will see that they<br>
> > > are<br>
> > > > > not actuly dockerfiles<br>
> > > > > <br>
> > > > > <br>
> > > <a href="https://github.com/openstack/kolla/blob/be15d6212f278027c257f9dd67e5b2719e9f730a/docker/aodh/aodh-api/Dockerfile.j2" rel="noreferrer" target="_blank">https://github.com/openstack/kolla/blob/be15d6212f278027c257f9dd67e5b2719e9f730a/docker/aodh/aodh-api/Dockerfile.j2</a><br>
> > > > > <br>
> > > > > they are jinja2 templates that produce docker files<br>
> > > > > <br>
> > > > > kolla as far as i am aware has drop support for binary images and<br>
> > > > > alternitiv distos<br>
> > > > > <br>
> > > > > but looking at an older release we can se ehow this worked<br>
> > > > > <br>
> > > > > <br>
> > > <a href="https://github.com/openstack/kolla/blob/stable/wallaby/docker/nova/nova-base/Dockerfile.j2#L13-L52" rel="noreferrer" target="_blank">https://github.com/openstack/kolla/blob/stable/wallaby/docker/nova/nova-base/Dockerfile.j2#L13-L52</a><br>
> > > > > <br>
> > > > > each docker file template would use the jinja2 to generate a set of<br>
> > > > > concreate docker files form the template<br>
> > > > > and make dession based on the parmater passed in.<br>
> > > > > <br>
> > > > > so when you are invokeing<br>
> > > > > kolla-build -b ubuntu -t source keystone nova neutron glance<br>
> > > > > <br>
> > > > > what actully happening is that the -t flag is being set as teh<br>
> > > > > install_type parmater in the the jinja2 environemtn when<br>
> > > > > the docker file is rendered.<br>
> > > > > <br>
> > > > > after all the docer files are rendered into normal docker files kolla<br>
> > > just<br>
> > > > > invokes the build.<br>
> > > > > <br>
> > > > > in the case of a source build that inovles pre fetching the source tar<br>
> > > > > from <a href="https://tarballs.opendev.org" rel="noreferrer" target="_blank">https://tarballs.opendev.org</a><br>
> > > > > and puting it in the build directory so that it can be included into<br>
> > > the<br>
> > > > > contianer.<br>
> > > > > <br>
> > > > > kolla also used to supprot git repo as a alternitve  source fromat<br>
> > > > > <br>
> > > > > i have glossed over a lot of the details of how this actully work but<br>
> > > that<br>
> > > > > is the essence of what that command is doing<br>
> > > > > creating a build dir, downloading the source, rendering the dockerfile<br>
> > > > > templates to docker files, invokeing docker build on those<br>
> > > > > and then taging them with the contaienr nameand build tag<br>
> > > > > <br>
> > > > > <br>
> > > > > <a href="https://docs.openstack.org/kolla/latest/admin/image-building.html" rel="noreferrer" target="_blank">https://docs.openstack.org/kolla/latest/admin/image-building.html</a><br>
> > > > > covers this form a high level<br>
> > > > > <br>
> > > > > >   because in command output<br>
> > > > > > I've not noticed anything related to the compiling process going on.<br>
> > > > > > <br>
> > > > > > Here is the output of all images produced by kolla-build command.<br>
> > > Do I<br>
> > > > > need<br>
> > > > > > anything else or is this enough to deploy kolla?<br>
> > > > > you can deploy coll with what you have yes although since the kolla<br>
> > > files<br>
> > > > > are automaticaly<br>
> > > > > built by ci kolla-ansible can just use the ones form the docker hub or<br>
> > > > > quay instead you do not need to build them yourself<br>
> > > > > <br>
> > > > > if you do build them your self then there is basically one other stpe<br>
> > > that<br>
> > > > > you shoudl take if this si a multi node deployment<br>
> > > > > you should push the iamges to an interally host docker registry<br>
> > > although<br>
> > > > > based on the hostname in the prompt below<br>
> > > > > it looks like you ahve alredy done that.<br>
> > > > > > <br>
> > > > > > root@docker-reg:~# docker images<br>
> > > > > > REPOSITORY                            TAG       IMAGE ID<br>
> > >  CREATED<br>
> > > > > >         SIZE<br>
> > > > > > kolla/mariadb-server                  15.1.0    2a497eee8269   26<br>
> > > minutes<br>
> > > > > > ago      595MB<br>
> > > > > > kolla/cron                            15.1.0    342877f26a8a   30<br>
> > > minutes<br>
> > > > > > ago      250MB<br>
> > > > > > kolla/memcached                       15.1.0    0d19a4902644   31<br>
> > > minutes<br>
> > > > > > ago      250MB<br>
> > > > > > kolla/mariadb-clustercheck            15.1.0    d84427d3c639   31<br>
> > > minutes<br>
> > > > > > ago      314MB<br>
> > > > > > kolla/mariadb-base                    15.1.0    34447e3e59b6   31<br>
> > > minutes<br>
> > > > > > ago      314MB<br>
> > > > > > kolla/keepalived                      15.1.0    82133b09fbf0   31<br>
> > > minutes<br>
> > > > > > ago      260MB<br>
> > > > > > kolla/prometheus-memcached-exporter   15.1.0    6c2d605f70ee   31<br>
> > > minutes<br>
> > > > > > ago      262MB<br>
> > > > > > <none>                                <none>    e66b228c2a07   31<br>
> > > minutes<br>
> > > > > > ago      248MB<br>
> > > > > > kolla/rabbitmq                        15.1.0    8de5c39379d3   32<br>
> > > minutes<br>
> > > > > > ago      309MB<br>
> > > > > > kolla/fluentd                         15.1.0    adfd19027862   33<br>
> > > minutes<br>
> > > > > > ago      519MB<br>
> > > > > > kolla/haproxy-ssh                     15.1.0    514357ac4d36   36<br>
> > > minutes<br>
> > > > > > ago      255MB<br>
> > > > > > kolla/haproxy                         15.1.0    e5b9cfdf6dfc   37<br>
> > > minutes<br>
> > > > > > ago      257MB<br>
> > > > > > kolla/prometheus-haproxy-exporter     15.1.0    a679f65fd735   37<br>
> > > minutes<br>
> > > > > > ago      263MB<br>
> > > > > > kolla/prometheus-base                 15.1.0    afeff3ed5dce   37<br>
> > > minutes<br>
> > > > > > ago      248MB<br>
> > > > > > kolla/glance-api                      15.1.0    a2241f68f23a   38<br>
> > > minutes<br>
> > > > > > ago      1.04GB<br>
> > > > > > kolla/glance-base                     15.1.0    7286772a03a4<br>
> > >  About an<br>
> > > > > > hour ago   1.03GB<br>
> > > > > > kolla/neutron-infoblox-ipam-agent     15.1.0    f90ffc1a3326<br>
> > >  About an<br>
> > > > > > hour ago   1.05GB<br>
> > > > > > kolla/neutron-server                  15.1.0    69c844a2e3a9<br>
> > >  About an<br>
> > > > > > hour ago   1.05GB<br>
> > > > > > kolla/neutron-l3-agent                15.1.0    4d87e6963c96<br>
> > >  About an<br>
> > > > > > hour ago   1.05GB<br>
> > > > > > <none>                                <none>    486da9a6562e<br>
> > >  About an<br>
> > > > > > hour ago   1.05GB<br>
> > > > > > kolla/neutron-linuxbridge-agent       15.1.0    e5b3ca7e099c<br>
> > >  About an<br>
> > > > > > hour ago   1.04GB<br>
> > > > > > kolla/neutron-bgp-dragent             15.1.0    ac37377820c6<br>
> > >  About an<br>
> > > > > > hour ago   1.04GB<br>
> > > > > > kolla/ironic-neutron-agent            15.1.0    90993adcd74b<br>
> > >  About an<br>
> > > > > > hour ago   1.04GB<br>
> > > > > > kolla/neutron-metadata-agent          15.1.0    8522f147f88d<br>
> > >  About an<br>
> > > > > > hour ago   1.04GB<br>
> > > > > > kolla/neutron-sriov-agent             15.1.0    8a92ce7d13c0<br>
> > >  About an<br>
> > > > > > hour ago   1.04GB<br>
> > > > > > kolla/neutron-dhcp-agent              15.1.0    5c214b0171f5<br>
> > >  About an<br>
> > > > > > hour ago   1.04GB<br>
> > > > > > kolla/neutron-metering-agent          15.1.0    7b3b91ecd77b<br>
> > >  About an<br>
> > > > > > hour ago   1.04GB<br>
> > > > > > kolla/neutron-openvswitch-agent       15.1.0    1f8807308814<br>
> > >  About an<br>
> > > > > > hour ago   1.04GB<br>
> > > > > > kolla/neutron-base                    15.1.0    f85b6a2e2725<br>
> > >  About an<br>
> > > > > > hour ago   1.04GB<br>
> > > > > > kolla/nova-libvirt                    15.1.0    0f3ecefe4752<br>
> > >  About an<br>
> > > > > > hour ago   987MB<br>
> > > > > > kolla/nova-compute                    15.1.0    241b7e7fafbe<br>
> > >  About an<br>
> > > > > > hour ago   1.47GB<br>
> > > > > > kolla/nova-spicehtml5proxy            15.1.0    b740820a7ad1<br>
> > >  About an<br>
> > > > > > hour ago   1.15GB<br>
> > > > > > kolla/nova-novncproxy                 15.1.0    1ba2f443d5c3<br>
> > >  About an<br>
> > > > > > hour ago   1.22GB<br>
> > > > > > kolla/nova-compute-ironic             15.1.0    716612107532<br>
> > >  About an<br>
> > > > > > hour ago   1.12GB<br>
> > > > > > kolla/nova-ssh                        15.1.0    ae2397f4e1c1<br>
> > >  About an<br>
> > > > > > hour ago   1.11GB<br>
> > > > > > kolla/nova-api                        15.1.0    2aef02667ff8<br>
> > >  About an<br>
> > > > > > hour ago   1.11GB<br>
> > > > > > kolla/nova-conductor                  15.1.0    6f1da3400901<br>
> > >  About an<br>
> > > > > > hour ago   1.11GB<br>
> > > > > > kolla/nova-scheduler                  15.1.0    628326776b1d<br>
> > >  About an<br>
> > > > > > hour ago   1.11GB<br>
> > > > > > kolla/nova-serialproxy                15.1.0    28eb7a4a13f8<br>
> > >  About an<br>
> > > > > > hour ago   1.11GB<br>
> > > > > > kolla/nova-base                       15.1.0    e47420013283<br>
> > >  About an<br>
> > > > > > hour ago   1.11GB<br>
> > > > > > kolla/keystone                        15.1.0    e5530d829d5f   2<br>
> > > hours<br>
> > > > > ago<br>
> > > > > >         947MB<br>
> > > > > > kolla/keystone-ssh                    15.1.0    eaa7e3f3985a   2<br>
> > > hours<br>
> > > > > ago<br>
> > > > > >         953MB<br>
> > > > > > kolla/keystone-fernet                 15.1.0    8a4fa24853a8   2<br>
> > > hours<br>
> > > > > ago<br>
> > > > > >         951MB<br>
> > > > > > kolla/keystone-base                   15.1.0    b6f9562364a9   2<br>
> > > hours<br>
> > > > > ago<br>
> > > > > >         945MB<br>
> > > > > > kolla/barbican-base                   15.1.0    b2fdef1afb44   2<br>
> > > hours<br>
> > > > > ago<br>
> > > > > >         915MB<br>
> > > > > > kolla/barbican-keystone-listener      15.1.0    58bd59de2c63   2<br>
> > > hours<br>
> > > > > ago<br>
> > > > > >         915MB<br>
> > > > > > kolla/openstack-base                  15.1.0    c805b4b3b1c1   2<br>
> > > hours<br>
> > > > > ago<br>
> > > > > >         893MB<br>
> > > > > > kolla/base                            15.1.0    f68e9ef3dd30   2<br>
> > > hours<br>
> > > > > ago<br>
> > > > > >         248MB<br>
> > > > > > registry                              2         8db46f9d7550   19<br>
> > > hours<br>
> > > > > ago<br>
> > > > > >        24.2MB<br>
> > > > > > ubuntu                                22.04     08d22c0ceb15   3<br>
> > > weeks<br>
> > > > > ago<br>
> > > > > >         77.8MB<br>
> > > > > <br>
> > > > > <br>
> > > <br>
> > > <br>
<br>
</blockquote></div>