On 7/7/21 2:01 PM, Sean Mooney wrote:
On Wed, 2021-07-07 at 11:34 +0200, Javier Pena wrote:
Hello Piotr,

On Fri, Jul 2, 2021 at 6:53 PM Piotr Mossakowski
<piotr.mossakowski@tietoevry.com> wrote:
Hello,

There is a logging override in almost all openstack packages, for
example in nova:

https://eur02.safelinks.protection.outlook.com/?url=https%3A%2F%2Fopendev.org%2Fopenstack%2Frpm-packaging%2Fsrc%2Fbranch%2Fstable%2Fvictoria%2Fopenstack%2Fnova%2Fopenstack-nova.defaultconf&amp;data=04%7C01%7CPiotr.Mossakowski%40tietoevry.com%7C88f20f58f630468f716108d9413f0b8a%7Ccbede638a3d9459f8f4e24ced73b4e5e%7C1%7C0%7C637612561306724949%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&amp;sdata=7%2FHlBNmjgHGOsaLH022Tp3ewzlt1y9FpekdnwMdoYfU%3D&amp;reserved=0

It lands in /etc/nova/nova.conf.d/010-nova.conf as stated in the
spec:

https://eur02.safelinks.protection.outlook.com/?url=https%3A%2F%2Fopendev.org%2Fopenstack%2Frpm-packaging%2Fsrc%2Fbranch%2Fstable%2Fvictoria%2Fopenstack%2Fnova%2Fnova.spec.j2%23L407&amp;data=04%7C01%7CPiotr.Mossakowski%40tietoevry.com%7C88f20f58f630468f716108d9413f0b8a%7Ccbede638a3d9459f8f4e24ced73b4e5e%7C1%7C0%7C637612561306724949%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&amp;sdata=X0PJWa38ozPRybinbHJRS2PmzsPuZk41fYlMkr9fFfw%3D&amp;reserved=0

Let's assume following scenario: in kolla-ansible based deployment I
want to disable logging globally using /etc/kolla/config/global.conf:

[DEFAULT]
log_dir =
log_file =

For kolla images built from RPMs, the file
'/etc/nova/nova.conf.d/010-nova.conf' will override what I want to
achieve by global.conf.

We have a situation when kolla images log inside the container into
'/var/log/nova' where there is no log rotation.
actully kolla has log rotation for those files
https://eur02.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fopenstack%2Fkolla-ansible%2Fblob%2Fmaster%2Fansible%2Froles%2Fcommon%2Ftemplates%2Fcron-logrotate-nova.conf.j2&amp;data=04%7C01%7CPiotr.Mossakowski%40tietoevry.com%7C88f20f58f630468f716108d9413f0b8a%7Ccbede638a3d9459f8f4e24ced73b4e5e%7C1%7C0%7C637612561306724949%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&amp;sdata=VwjAg3jKrsxL9QCWbs7REyAS%2Bt7JSwd2KUuF98xAU%2Bc%3D&amp;reserved=0

ot does not use oslo logs in built log rotation it does log ratation
via cron.

kolla ansible also does not use the configs from the rpms it generates
its own nova.conf that is used instead using
https://eur02.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fopenstack%2Fkolla-ansible%2Fblob%2Fmaster%2Fansible%2Froles%2Fnova-cell%2Ftemplates%2Fnova.conf.j2&amp;data=04%7C01%7CPiotr.Mossakowski%40tietoevry.com%7C88f20f58f630468f716108d9413f0b8a%7Ccbede638a3d9459f8f4e24ced73b4e5e%7C1%7C0%7C637612561306724949%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&amp;sdata=tSmahTPy1C7PW2l3UPf8z8CoT80BGQWYFoF0NYF1Bz8%3D&amp;reserved=0
as the template which is renderd an copied on container start
https://eur02.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fopenstack%2Fkolla-ansible%2Fblob%2Fmaster%2Fansible%2Froles%2Fnova-cell%2Ftemplates%2Fnova-compute.json.j2%23L3-L9&amp;data=04%7C01%7CPiotr.Mossakowski%40tietoevry.com%7C88f20f58f630468f716108d9413f0b8a%7Ccbede638a3d9459f8f4e24ced73b4e5e%7C1%7C0%7C637612561306724949%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&amp;sdata=VNQlRxFIEjSpp3WSCrPR8b08nuW6bfQJa1DYmBOdOU0%3D&amp;reserved=0
and kolla provides a config override mechaniume to future customise
this if needed.
https://eur02.safelinks.protection.outlook.com/?url=https%3A%2F%2Fdocs.openstack.org%2Fkolla-ansible%2Flatest%2Fadmin%2Fdeployment-philosophy.html%23kolla-s-solution-to-customization&amp;data=04%7C01%7CPiotr.Mossakowski%40tietoevry.com%7C88f20f58f630468f716108d9413f0b8a%7Ccbede638a3d9459f8f4e24ced73b4e5e%7C1%7C0%7C637612561306724949%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&amp;sdata=0w%2Fm%2B9ZbRowgUbW5sf5Yuoac2eHAr%2BjeAw22HY7R57E%3D&amp;reserved=0

if you look at the nova and nova-cell role config tasks

https://eur02.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fopenstack%2Fkolla-ansible%2Fblob%2Fmaster%2Fansible%2Froles%2Fnova%2Ftasks%2Fconfig.yml%23L51-L69&amp;data=04%7C01%7CPiotr.Mossakowski%40tietoevry.com%7C88f20f58f630468f716108d9413f0b8a%7Ccbede638a3d9459f8f4e24ced73b4e5e%7C1%7C0%7C637612561306724949%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&amp;sdata=%2BpA6lqzPqFe6HSk4BE8MmxrY418HXoRLzIfaEkX5xLo%3D&amp;reserved=0
https://eur02.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fopenstack%2Fkolla-ansible%2Fblob%2Fmaster%2Fansible%2Froles%2Fnova-cell%2Ftasks%2Fconfig.yml%23L56-L75&amp;data=04%7C01%7CPiotr.Mossakowski%40tietoevry.com%7C88f20f58f630468f716108d9413f0b8a%7Ccbede638a3d9459f8f4e24ced73b4e5e%7C1%7C0%7C637612561306734942%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&amp;sdata=1YuSbgJVsTPjWYiFnKATAR7atCVC70wGpoX9OM46mO8%3D&amp;reserved=0

you wil see the list of filets that will be merged to generate the
final nova.conf

 sources:
      - "{{ role_path }}/templates/nova.conf.j2"
      - "{{ node_custom_config }}/global.conf"
      - "{{ node_custom_config }}/nova.conf"
      - "{{ node_custom_config }}/nova/{{ item.key }}.conf"
      - "{{ node_custom_config }}/nova/{{ inventory_hostname }}/nova.conf"


kolla renders its template then merges any seconts form  the other
files if they exist

{{ node_custom_config }} defaults to /etc/kolla/config

so if you want to make global changes to novas log rotation using the
oslo-log log rotation capablitys you would add those options to

/etc/kolla/config/nova.conf

you can do it speratly per serive by creating
/etc/kolla/config/nova/nova-compute.conf
/etc/kolla/config/nova/nova-api.conf
...

and even per host if you want too.

packaging project should ideally avoid deviating from upstream
configuration where possible but in a kolla enve the package cofnigs
should be unused.

its possible you are using a very old version of kolla before the log
rotate configs where intoduced but correct way to apply config changes
form a "deployment-philosophy" point of view is to use the config
override mechanium  not to do it via packaging changes.

 There is no easy way to change that in kolla-ansible based
deployments.

Is there any specific reason why default logging has been hardcoded
like that? Can we agree to change that situation to be able to
override logging as expected?

In general, packages (both for rpm-packaging and RDO) try to set some
sensible minimum defaults for a few parameters, which are set
according to the base OS requirements. This is why we get those
defaults in the rpm-packaging Nova spec.

I think the easiest way to ensure the override in
/etc/kolla/config/global.conf is enforced would be to parse it last in
the nova-api command-line (with a --config-file directive). Would that
be possible in your environment?

Regards,
Javier

--

Pozdrawiam serdecznie / Best regards,

Piotr Mossakowski

Lead System Engineer, Product Development Services, Cloud Infra &
Applications

Email piotr.mossakowski@tietoevry.com, +48795515407
Aleja Piastów 30, 71-064 Szczecin, Poland, www.tietoevry.com


Thanks for your replies!

@Sean: everything you said is true but the situation I described is happening inside the container so:

1) log rotation is applied on /var/log/kolla on the host but not on /var/log/nova inside the container - and this is the biggest pain as it will finally fill out docker partition on the host.

2) kolla-ansible generates /etc/nova/nova.conf inside the container but openstack-nova RPM injects /etc/nova/nova.conf.d/010-nova.conf and this overrides my customizations from /etc/kolla/config/global.conf

@Javier: your idea sounds a lot better than updating a ton of 'extend_start.sh' scripts, thanks!


--

Pozdrawiam serdecznie / Best regards,

Piotr Mossakowski

Lead System Engineer, Product Development Services, Cloud Infra & Applications

Email piotr.mossakowski@tietoevry.com, +48795515407
Aleja Piastów 30, 71-064 Szczecin, Poland,
www.tietoevry.com