diff options
Diffstat (limited to 'kolla/docker/macros.j2')
| -rw-r--r-- | kolla/docker/macros.j2 | 97 |
1 files changed, 97 insertions, 0 deletions
diff --git a/kolla/docker/macros.j2 b/kolla/docker/macros.j2 new file mode 100644 index 000000000..34d67335c --- /dev/null +++ b/kolla/docker/macros.j2 @@ -0,0 +1,97 @@ +{% macro install_packages(packages, chain=False, clean=clean_package_cache) -%} +{% if packages is defined and packages|length > 0 -%} + {% if not chain -%} RUN {% endif -%} + {%- if base_package_type == 'rpm' -%} + {{ distro_package_manager }} -y install {{ packages | join(' ') }} + {%- if clean %} \ + && {{ distro_package_manager }} clean all && rm -rf /var/cache/{{ distro_package_manager }}{% endif -%} + {%- elif base_package_type == 'deb' -%} + {#- + debian_package_install is a utility method to build up an appropriate + set of commands to install packages in a debian-based environment that + may include URL links to a .deb package + -#} + {{ debian_package_install(packages, clean) }} + {%- endif %} +{%- endif %} +{%- endmacro %} + +{# Be Extra vigilant about introducing any extra whitespace at the + end of the macro for chaining purposes -#} +{% macro rpm_security_update(cleanup) -%} + {{ distro_package_manager }} -y distro-sync --security --sec-severity=Important --sec-severity=Critical + {%- if cleanup %} \ + && {{ distro_package_manager }} clean all && rm -rf /var/cache/{{ distro_package_manager }}{% endif -%} +{%- endmacro %} + +{% macro sed(file='', expressions=[]) -%} +{% if file != '' and expressions|length >0 %} + RUN {% for expression in expressions %} sed -i "{{ file }}" -e "{{ expression }}" {% if not loop.last %} && {% endif %} {% endfor %} +{% else %} + RUN echo "file and expressions must be set to use the sed macro"; /bin/false +{% endif %} +{%- endmacro %} + +{% macro install_pip(packages, constraints=true, python_version='3') %} +{%- if packages is sequence and packages|length > 0 -%} + python{{ python_version }} -m pip --no-cache-dir install --upgrade{{ ' ' }} + {%- if constraints %}-c /requirements/upper-constraints.txt {% endif -%} + {{ packages | join(' ') }} +{%- else -%} + true +{%- endif -%} +{% endmacro %} + +{% macro configure_user(name, groups=None, shell=None, homedir=None) %} +{%- if name not in users %} +{{ raise_error("Failed to find configuration for '" + name + "' user. Try specifying '" + name + "-user' config section.") }} +{%- endif %} +{% set user=users[name] %} +{%- if not homedir %} +{% set homedir='/var/lib/' + name %} +{%- endif %} +RUN usermod --append --home {{ homedir }} --groups kolla {{ name }} \ + {%- if groups %} + && usermod --append --groups {{ groups }} {{ name }} \ + {%- endif %} + {%- if shell %} + && chsh --shell {{ shell }} {{ name }} \ + {%- endif %} + && mkdir -p {{ homedir }} \ + && chown -R {{ user.uid }}:{{ user.gid }} {{ homedir }} +{% endmacro %} + +{% macro install_fluent_plugins(plugins, chain=False) -%} +{% if plugins is defined and plugins|length > 0 -%} + {% if not chain -%} RUN {% endif -%} + ulimit -n 1024 && fluent-gem install {{ plugins | join(' ') }} +{%- endif %} +{%- endmacro %} + +{% macro enable_extra_repos(repos) %} + +{{ handle_repos(repos, 'enable') }} + +{% endmacro %} + +{% macro disable_extra_repos(repos) %} + +{{ handle_repos(repos, 'disable') }} + +{% endmacro %} + +{% macro upper_constraints_remove(package_name) -%} +sed -e "/^{{ package_name }}===/d" -i requirements/upper-constraints.txt +{%- endmacro %} + +{# NOTE(hrw): we change to "==" to allow for "21.*" syntax #} +{% macro upper_constraints_version_change(package_name, from, to) -%} +sed -e "s/^{{package_name}}==={{ from }}/{{package_name}}=={{ to }}/g" -i requirements/upper-constraints.txt +{%- endmacro %} + +{% macro kolla_patch_sources() -%} +{% if patches_path %} + COPY patches /patches + RUN kolla_patch +{% endif %} +{%- endmacro %} |
