[tripleo] puppet_config: immutable relationship between config_volume and config_image?
Hi all, I've been working on https://review.opendev.org/c/openstack/tripleo-heat-templates/+/816895 and the current pep8 check error on the designate-api-container-puppet.yaml template appears to disallow using different container config images on the same config volume. I see where this makes sense but because the way the puppet_config sections seem to be structured I wonder if it was intentional. The templates happen to work in this patch's case because the api specific config image in this template only includes some additional binaries for apache+wsgi necessary for the puppet. However, I can see where this might cause some really unfortunate issues if the config images for a given config_volume were to have different versions of puppet. While I will alter the templates so the designate config volume use the same config image, it does beg the question if having the puppet_config config_volume definitions duplicated across the templates is a good pattern. Would it be a better choice to adopt a pattern where the immutable parts of the config_volumes (e.g. config_volume name, config_image) can only be defined once per config volume? Perhaps in a separate file and have the mutable parts in their respective template definitions? Cheer, Brent -- Brent Eagles Principal Software Engineer Red Hat Inc.
On Sat, Nov 27, 2021 at 7:32 AM Brent Eagles <beagles@redhat.com> wrote:
Hi all,
I've been working on https://review.opendev.org/c/openstack/tripleo-heat-templates/+/816895 and the current pep8 check error on the designate-api-container-puppet.yaml template appears to disallow using different container config images on the same config volume.
I see where this makes sense but because the way the puppet_config sections seem to be structured I wonder if it was intentional. The templates happen to work in this patch's case because the api specific config image in this template only includes some additional binaries for apache+wsgi necessary for the puppet. However, I can see where this might cause some really unfortunate issues if the config images for a given config_volume were to have different versions of puppet.
In looking at the code the config_volume name is used to generate the container name which would be problematic if you switch the config_volume+config_image pairing because it'll cause conflicts. IIRC config_volume is useful when you have multiple services that basically use the same base configuration container to generate their configs (e.g. neutron + neutron plugins). If you are switching to use the api container for the configuration generation then config_volume should likely be designate_api and that could be shared with the api contianer.
While I will alter the templates so the designate config volume use the same config image, it does beg the question if having the puppet_config config_volume definitions duplicated across the templates is a good pattern. Would it be a better choice to adopt a pattern where the immutable parts of the config_volumes (e.g. config_volume name, config_image) can only be defined once per config volume? Perhaps in a separate file and have the mutable parts in their respective template definitions?
They aren't really duplicated. They are specific to the puppet config for a given service and are specific to the service and it's configuration generation. For example if you look at the various heat containers there are in fact 3 different pairs (heat,ContainerHeatConfigImage), (heat_api,ContainerHeatApiConfigImage), (heat_api_cfn,COntainerHeatApiCfnConfigImage).
Cheer,
Brent
-- Brent Eagles Principal Software Engineer Red Hat Inc.
On Mon, Nov 29, 2021 at 08:00:30AM -0700, Alex Schultz wrote:
On Sat, Nov 27, 2021 at 7:32 AM Brent Eagles <beagles@redhat.com> wrote:
Hi all,
I've been working on https://review.opendev.org/c/openstack/tripleo-heat-templates/+/816895 and the current pep8 check error on the designate-api-container-puppet.yaml template appears to disallow using different container config images on the same config volume.
I see where this makes sense but because the way the puppet_config sections seem to be structured I wonder if it was intentional. The templates happen to work in this patch's case because the api specific config image in this template only includes some additional binaries for apache+wsgi necessary for the puppet. However, I can see where this might cause some really unfortunate issues if the config images for a given config_volume were to have different versions of puppet.
In looking at the code the config_volume name is used to generate the container name which would be problematic if you switch the config_volume+config_image pairing because it'll cause conflicts. IIRC config_volume is useful when you have multiple services that basically use the same base configuration container to generate their configs (e.g. neutron + neutron plugins). If you are switching to use the api container for the configuration generation then config_volume should likely be designate_api and that could be shared with the api contianer.
While I will alter the templates so the designate config volume use the same config image, it does beg the question if having the puppet_config config_volume definitions duplicated across the templates is a good pattern. Would it be a better choice to adopt a pattern where the immutable parts of the config_volumes (e.g. config_volume name, config_image) can only be defined once per config volume? Perhaps in a separate file and have the mutable parts in their respective template definitions?
They aren't really duplicated. They are specific to the puppet config for a given service and are specific to the service and it's configuration generation. For example if you look at the various heat containers there are in fact 3 different pairs (heat,ContainerHeatConfigImage), (heat_api,ContainerHeatApiConfigImage), (heat_api_cfn,COntainerHeatApiCfnConfigImage).
Thanks for the clarification Alex! Cheers, Brent -- Brent Eagles Principal Software Engineer Red Hat Inc.
participants (2)
-
Alex Schultz
-
Brent Eagles