Skip to main content

TripleO Modify Image

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

Role Variables

.. list-table:: Variables used for modify image :widths: auto :header-rows: 1

    • 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'

.. list-table:: Variables used for yum update :widths: auto :header-rows: 1

    • 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

.. list-table:: Variables used for dev install :widths: auto :header-rows: 1

    • 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
    • container_build_tool
    • docker
    • See modify image variables
    • refspecs
    • []
    • An array of project/refspec pairs that will be installed into the generated container. Currently only supports python source projects.
    • python_dir
    • []
    • Directory which contains a Python project ready to be installed with pip.

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`.

.. code-block::

    - 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:

.. code-block::

    # 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.

.. code-block::

    - 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.

.. code-block::

    - 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

Dev install
~~~~~~~~~~~

The following playbook will produce a modified image with Python source
code installed via pip. To minimize dependencies within the container
we generate the sdist locally and then copy it into the resulting
container image as an sdist tarball to run pip install locally.

It can be used to pull a review from OpenDev Gerrit:

.. code-block::

    - hosts: localhost
      connection: local
      tasks:
      - name: dev install heat-api
        import_role:
          name: tripleo-modify-image
        vars:
          tasks_from: dev_install.yml
          source_image: docker.io/tripleomaster/centos-binary-heat-api:current-tripleo
          refspecs:
            -
              project: heat
              refspec: refs/changes/12/1234/3
          modified_append_tag: -devel

or it can be used to build an image from a local Python directory:

.. code-block::

    - hosts: localhost
      connection: local
      tasks:
      - name: dev install heat-api
        import_role:
          name: tripleo-modify-image
        vars:
          tasks_from: dev_install.yml
          source_image: docker.io/tripleomaster/centos-binary-heat-api:current-tripleo
          modified_append_tag: -devel
          python_dir:
            - /home/joe/git/openstack/heat

License
-------

Apache 2.0



Metadata

Release files for ansible-role-tripleo-modify-image 1.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for ansible-role-tripleo-modify-image 1.1.0
File Size Uploaded Provenance Actions
ansible-role-tripleo-modify-image-1.1.0.tar.gz 14.9 kB Without provenance Details for ansible-role-tripleo-modify-image-1.1.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for ansible-role-tripleo-modify-image 1.1.0
File Interpreter ABI Platform Actions
ansible_role_tripleo_modify_image-1.1.0-py2.py3-none-any.whl Python 2, Python 3 none any Details for ansible_role_tripleo_modify_image-1.1.0-py2.py3-none-any.whl

Total release size: 34.3 kB

Release files / ansible-role-tripleo-modify-image-1.1.0.tar.gz

Download URL ansible-role-tripleo-modify-image-1.1.0.tar.gz
Size 14.9 kB
Tags Source
SHA-256 checksum
How to use checksums
60a9a7d702e536aeca309fab630da04e55cf7e2c5d952f93c03438f53165e413
BLAKE2b-256 checksum
How to use checksums
8f99e27671bd07faecb4a79d888349c418c3f720ca81b1eb43521059d2664e0c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.13.0 pkginfo/1.5.0.1 requests/2.19.1 setuptools/20.7.0 requests-toolbelt/0.9.1 tqdm/4.32.2 CPython/3.5.2

Release files / ansible_role_tripleo_modify_image-1.1.0-py2.py3-none-any.whl

Download URL ansible_role_tripleo_modify_image-1.1.0-py2.py3-none-any.whl
Size 19.4 kB
Tags Python 2 Python 3
SHA-256 checksum
How to use checksums
d57a72efe1c94b83f0cca8867fb161c4b91f7a1d20b01d9cd8e4c19707061dba
BLAKE2b-256 checksum
How to use checksums
fde4aae3d16c0457c9a50505ee58b13561907d40808df59fa16ebc26eb3a7683
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.13.0 pkginfo/1.5.0.1 requests/2.19.1 setuptools/20.7.0 requests-toolbelt/0.9.1 tqdm/4.32.2 CPython/3.5.2

Security for ansible-role-tripleo-modify-image 1.1.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page