tripleo-quickstart-extras/roles/modify-image
Sagi Shnaidman 69ad943add Add ansible linter rule for set pipefail
When using pipes in ansible shell module we can miss the error
because shell is executing without pipefail by default.
This rule will check every shell module if it has "set -e pipefail"
and will fail in case if not.
It excludes tasks which have 'ignore_errors: true' or register
variables.

Change-Id: I394c72040d62dff76180aeb9d703bb8a212bcc98
2018-04-26 21:32:24 +03:00
..
defaults add option to turn on/off non default kernel 2018-04-11 18:17:51 +00:00
meta Add modify-images role 2017-01-03 21:31:41 +00:00
tasks Add ansible linter rule for set pipefail 2018-04-26 21:32:24 +03:00
README.md Add root password option to modify-image role 2017-03-06 12:50:16 -05:00

README.md

modify-image

An Ansible role for modifying an image via the libguestfs tool, virt-customize. The role requires an image and a script to run inside of that image via virt-customize. It also has paramaters for how much memory and cpu to give the virt-customize VM, and a list of artifacts to copy out of the VM after running the script. The script will always produce a log of the same name as the script with .log appended. This can be extracted via the modify_image_extract_list variable.

Requirements

Role Variables

  • image_to_modify -- the image that virt-customize will operate on
  • modify_script -- the script that will be run inside the image
  • modify_image_upload_files -- list of src/dest of files to upload to image (files are uploaded before running the script)
  • modify_image_install_packages -- list of packages to install in the image (packages are installed before running the script)
  • modify_image_extract_list -- list of artifacts to extract after the image is modified
  • modify_image_working_dir -- directory containing image and script. This is also where extracted files and logs will end up.
  • modify_image_vc_ram -- amount of RAM to give the virt-customize VM (in MB)
  • modify_image_vc_cpu -- number of CPUs to give the virt-customize VM
  • modify_image_vc_verbose -- whether to run virt-customize with verbose flag
  • modify_image_vc_trace -- whether to run virt-customize with trace flag
  • modify_image_vc_root_password -- password for the root account of the image (useful for baremetal envs)

Example Usage

---
- name: |
    Run a script inside an image via virt-customize without extracting anything    
  hosts: virthost
  vars:
    image_to_modify: "{{ working_dir }}/undercloud.qcow2"
    modify_script: "{{ working_dir }}/undercloud_convert.sh"
  roles:
    - modify-image

- name: Run a script inside an image and extract the log from the script
  hosts: virthost
  vars:
    image_to_modify: "{{ working_dir }}/undercloud.qcow2"
    modify_script: "{{ working_dir }}/undercloud_convert.sh"
    modify_image_extract_list:
      - /tmp/builder.log
  roles:
    - modify-image

- name: Run a script inside an image that needs to have lots of resources
  hosts: virthost
  vars:
    image_to_modify: "{{ working_dir }}/undercloud.qcow2"
    modify_script: "{{ working_dir }}/undercloud_convert.sh"
    modify_image_vc_cpu: 8
    modify_image_vc_ram: 16384
  roles:
    - modify-image

- name: Run a script inside an image with virt-customize in verbose mode
  hosts: virthost
  vars:
    image_to_modify: "{{ working_dir }}/undercloud.qcow2"
    modify_script: "{{ working_dir }}/undercloud_convert.sh"
    modify_image_verbose: true
  roles:
    - modify-image

- name: Upload files to image
  hosts: virthost
  vars:
    image_to_modify: "{{ working_dir }}/undercloud.qcow2"
    modify_image_upload_files:
      - src: /tmp/file_to_upload.tar.gz
        dest: /home/user/renamed_file.tar.gz
      - src: /home/local_user/file
        dest: /home/image_user/
  roles:
    - modify-image

- name: Upload files to image and run script
  hosts: virthost
  vars:
    image_to_modify: "{{ working_dir }}/undercloud.qcow2"
    modify_image_upload_files:
      - src: /tmp/file_to_upload.tar.gz
        dest: /home/user/renamed_file.tar.gz
      - src: /home/local_user/file
        dest: /tmp/
    modify_script: "{{ working_dir }}/undercloud_convert.sh"
  roles:
    - modify-image

- name: Install packages in the image
  hosts: virthost
  vars:
    image_to_modify: "{{ working_dir }}/overcloud-full.qcow2"
    modify_image_install_packages:
      - 'package_to_be_installed_1'
      - 'package_to_be_installed_2'
      - 'package_to_be_installed_3'
  include_role:
    name: modify-image

- name: Upload an RPM file and install it in the image
  hosts: virthost
  vars:
    image_to_modify: "{{ working_dir }}/overcloud-full.qcow2"
    modify_image_upload_files:
      - src: "/tmp/rpm_to_be_uploaded.rpm"
        dest: /root/rpm_to_be_installed.rpm
    modify_image_install_packages:
      - '/root/rpm_to_be_installed.rpm'
  include_role:
    name: modify-image

License

Apache