config_drive

Role to build a NoCloud config-drive ISO image.

Privilege escalation

Required to installed required packages.

Parameters

  • cifmw_config_drive_basedir: (String) Base directory. Defaults to {{ cifmw_basedir }} which defaults to ~/ci-framework-data.

  • cifmw_config_drive_workdir: (String) Working directory. Defaults to: {{ cifmw_config_drive_basedir }}/cifmw_config_drive

  • cifmw_config_drive_instancedir: (String) Per-instance working directory. Defaults to: {{ cifmw_config_drive_workdir }}/{{ cifmw_config_drive_uuid }}

  • cifmw_config_drive_iso_image: (String) Path to built ISO image. Defaults to: {{ cifmw_config_drive_workdir }}/{{ cifmw_config_drive_uuid }}.iso

  • cifmw_config_drive_uuid: (String) Instance UUID. Defaults to uuid-test.

  • cifmw_config_drive_name: (String) Instance Name. Defaults to test.

  • cifmw_config_drive_hostname: (String) Instance hostname. Defaults to test.example.com.

  • cifmw_config_drive_userdata: (Dict) cloud-init user-data, in cloud-config-data format. Defaults to none.

  • cifmw_config_drive_networkconfig: (Dict) cloud-init network-config. Defaults to none.

Examples

- name: Build config-drive image playbook
  hosts: "{{ cifmw_target_host | default('localhost') }}"
  tasks:
    - name: Include config_drive role
      vars:
        cifmw_config_drive_uuid: de2f369a-1886-4a90-8e50-e419289e6850
        cifmw_config_drive_name: test01
        cifmw_config_drive_hostname: test01.example.com
        cifmw_config_drive_userdata:
          ssh_authorized_keys:
            - ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCg1LHRahLiT1NFv4l/XH
          packages:
            - git
            - bind-utils
          write_files:
            - path: /root/test.file
              owner: root:root
              content: |
                # Test file content
          runcmd:
            - [ 'sh', '-c', 'echo foo | tee -a /tmp/foo' ]
        cifmw_config_drive_networkconfig:
          network:
            version: 2
            ethernets:
              id0:
                match:
                  macaddress: "aa:bb:cc:dd:ee:ff"
                addresses:
                  - 192.168.0.101/24
                routes:
                  - to: 0.0.0.0/0
                    via: 192.168.0.1
                    on-link: true
                nameservers:
                  addresses:
                    - 192.168.0.1
      ansible.builtin.include_role:
        name: config_drive