RETIRED, Ansible role to modify container images built for TripleO
Go to file
Steve Baker c9d085729f Remove compare_host_packages strategy
Now that the undercloud is containerized, there will be very few host
packages to compare to, so there is a high risk that required package
updates will be skipped.

This is a strategy inherited from container-update.py that was
intended to avoid unnecessary calls to yum update, however we now have
a better approach using the repoquery, so host package comparison is
no longer required, and probably causing some of the instances of bug

Change-Id: Iab7b9d6377494001d904bb84b058ea293d73110c
Partial-Bug: #1786764
2018-09-17 12:17:46 +00:00
ci-scripts Add tox checks, pbr packaging 2018-05-23 11:57:41 +12:00
defaults Remove compare_host_packages strategy 2018-09-17 12:17:46 +00:00
files Remove compare_host_packages strategy 2018-09-17 12:17:46 +00:00
meta Add Buildah support 2018-08-03 14:40:27 -04:00
tasks Remove compare_host_packages strategy 2018-09-17 12:17:46 +00:00
templates Remove compare_host_packages strategy 2018-09-17 12:17:46 +00:00
vars Add Buildah support 2018-08-03 14:40:27 -04:00
zuul.d Use release-openstack-server job-template 2018-08-01 11:20:01 -04:00
.gitreview Add .gitreview file 2018-05-25 08:35:01 +12:00
LICENSE Stub for the README.md 2018-05-01 16:23:32 +12:00
README.md Remove compare_host_packages strategy 2018-09-17 12:17:46 +00:00
ansible-requirements.txt Add tox checks, pbr packaging 2018-05-23 11:57:41 +12:00
ansible.cfg Fix the roles_path to actually work in a venv 2018-08-29 15:46:57 -04:00
requirements.txt Add tox checks, pbr packaging 2018-05-23 11:57:41 +12:00
setup.cfg Add Buildah support 2018-08-03 14:40:27 -04:00
setup.py Add tox checks, pbr packaging 2018-05-23 11:57:41 +12:00
test-requirements.txt Add tox checks, pbr packaging 2018-05-23 11:57:41 +12:00
tox.ini Add tox checks, pbr packaging 2018-05-23 11:57:41 +12:00

README.md

TripleO Modify Image

A role to allow modification to container images built for the TripleO project.

Role Variables

Variables used for modify image

Name Default Value Description
source_image [undefined] Mandatory fully qualified reference to the source image to be modified. The supplied Dockerfile will be copied and modified to make the FROM directive match this variable.
modify_dir_path [undefined] Mandatory path to the directory containing the Dockerfile to modify the image
modified_append_tag date +-modified-%Y%m%d%H%M%S String to be appended after the tag to indicate this is a modified version of the source image.
target_image [undefined] If set, the modified image will be tagged with target_image + modified_append_tag. If target_image is not set, the modified image will be tagged with source_image + modified_append_tag. If the purpose of the image is not changing, it may be enough to rely on the source_image + modified_append_tag tag to identify that this is a modified version of the source image.
container_build_tool docker Tool used to build containers, can be 'docker' or 'buildah'

Variables used for yum update

Name Default Value Description
source_image [undefined] See modify image variables
modified_append_tag date +-modified-%Y%m%d%H%M%S See modify image variables
target_image '' See modify image variables
update_repo '' If set, packages from this repo will be updated. Other repos will only be used for dependencies of these updates.
yum_repos_dir_path None Optional path of directory to be used as /etc/yum.repos.d during the update
container_build_tool docker See modify image variables

Requirements

  • ansible >= 2.4
  • python >= 2.6
  • docker-py >= 1.7.0
  • Docker API >= 1.20

Dependencies

None

Example Playbooks

Modify Image

The following playbook will produce a modified image with the tag :latest-modified-<timestamp> based on the Dockerfile in the custom directory /path/to/example_modify_dir.

- hosts: localhost
  tasks:
  - name: include tripleo-modify-image
    import_role:
      name: tripleo-modify-image
      tasks_from: modify_image.yml
    vars:
      source_image: docker.io/tripleomaster/centos-binary-nova-api:latest
      modify_dir_path: /path/to/example_modify_dir
      container_build_tool: docker # or buildah

The directory example_modify_dir contains the Dockerfile which will perform the modification, for example:

# This will be replaced in the file Dockerfile.modified
FROM centos-binary-nova-api

# switch to root to install packages
USER root

# install packages
RUN curl "https://bootstrap.pypa.io/get-pip.py" -o "/tmp/get-pip.py"
RUN python /tmp/get-pip.py

# switch the container back to the default user
USER nova

Yum update

The following playbook will produce a modified image with the tag :latest-updated which will do a yum update using the host's /etc/yum.repos.d. The yum update will only occur if there are differences between host and image package versions. In this playbook the tasks_from is set as a variable instead of an import_role parameter.

- hosts: localhost
  tasks:
  - name: include tripleo-modify-image
    import_role:
      name: tripleo-modify-image
    vars:
      tasks_from: yum_update.yml
      source_image: docker.io/tripleomaster/centos-binary-nova-api:latest
      compare_host_packages: true
      yum_repos_dir_path: /etc/yum.repos.d
      modified_append_tag: updated
      container_build_tool: docker # or buildah

RPM install

The following playbook will produce a modified image with RPMs from the specified rpms_path on the local filesystem installed as a new layer for the container. The new container tag is appened with the '-hotfix' suffix. Useful for creating adhoc hotfix containers with local RPMs with no network connectivity.

- hosts: localhost
  tasks:
  - name: include tripleo-modify-image
    import_role:
      name: tripleo-modify-image
    vars:
      tasks_from: rpm_install.yml
      source_image: docker.io/tripleomaster/centos-binary-nova-api:latest
      rpms_path: /foo/bar
      modified_append_tag: -hotfix

License

Apache 2.0