102 lines
3.4 KiB
YAML
102 lines
3.4 KiB
YAML
---
|
|
- name: Ensure user images are built and registered with Glance
|
|
hosts: seed
|
|
vars:
|
|
openstack_auth:
|
|
auth_url: "{{ lookup('env', 'OS_AUTH_URL') }}"
|
|
username: "{{ lookup('env', 'OS_USERNAME') }}"
|
|
password: "{{ lookup('env', 'OS_PASSWORD') }}"
|
|
project_name: "{{ lookup('env', 'OS_PROJECT_NAME') }}"
|
|
project_domain_name: "{{ lookup('env', 'OS_PROJECT_DOMAIN_NAME') }}"
|
|
user_domain_name: "{{ lookup('env', 'OS_USER_DOMAIN_NAME') }}"
|
|
image_build_dir: "{{ ansible_user_dir }}/images/dib"
|
|
image_name: centos7
|
|
image_os_element: centos7
|
|
image_base_elements:
|
|
- dhcp-all-interfaces
|
|
- enable-serial-console
|
|
image_is_whole_disk: True
|
|
image_whole_disk_elements:
|
|
- vm
|
|
image_partition_elements:
|
|
- baremetal
|
|
- grub2
|
|
image_extra_elements: []
|
|
image_elements: "{{ image_base_elements + (image_whole_disk_elements if image_is_whole_disk|bool else image_partition_elements) + image_extra_elements }}"
|
|
shade_venv: "{{ ansible_env['PWD'] }}/shade-venv"
|
|
tasks:
|
|
- name: Ensure diskimage-builder package is installed
|
|
yum:
|
|
name: diskimage-builder
|
|
state: installed
|
|
become: True
|
|
|
|
- name: Ensure pip is installed
|
|
pip:
|
|
name: pip
|
|
state: latest
|
|
virtualenv: "{{ shade_venv }}"
|
|
|
|
- name: Ensure OpenStack shade module is installed
|
|
pip:
|
|
name: shade
|
|
virtualenv: "{{ shade_venv }}"
|
|
|
|
- name: Ensure image build directory exists
|
|
file:
|
|
path: "{{ image_build_dir }}"
|
|
state: directory
|
|
|
|
- name: Display image elements
|
|
debug:
|
|
var: image_elements
|
|
|
|
- name: Ensure CentOS 7 image is built
|
|
command: >
|
|
disk-image-create
|
|
{{ image_os_element }}
|
|
{{ image_elements|join(' ') }}
|
|
-o {{ image_name }}
|
|
args:
|
|
chdir: "{{ image_build_dir }}"
|
|
creates: "{{ image_build_dir }}/{{ image_name }}.qcow2"
|
|
|
|
# Note that setting this via a play or task variable seems to not
|
|
# evaluate the Jinja variable reference, so we use set_fact.
|
|
- name: Update the Ansible python interpreter fact to point to the shade virtualenv
|
|
set_fact:
|
|
ansible_python_interpreter: "{{ shade_venv }}/bin/python"
|
|
|
|
- name: Ensure test deployment ramdisk and kernel images are registered with Glance
|
|
os_image:
|
|
auth: "{{ openstack_auth }}"
|
|
name: "{{ image_name }}.{{ item.ext }}"
|
|
container_format: "{{ item.container_format }}"
|
|
disk_format: "{{ item.disk_format }}"
|
|
filename: "{{ image_build_dir }}/{{ image_name }}.{{ item.ext }}"
|
|
state: present
|
|
with_items:
|
|
- { container_format: ari, disk_format: ari, ext: initrd }
|
|
- { container_format: aki, disk_format: aki, ext: vmlinuz }
|
|
register: r_and_k_result
|
|
when: not image_is_whole_disk|bool
|
|
|
|
- name: Ensure test deployment image is registered with Glance
|
|
os_image:
|
|
auth: "{{ openstack_auth }}"
|
|
name: "{{ image_name }}"
|
|
container_format: bare
|
|
disk_format: qcow2
|
|
filename: "{{ image_build_dir }}/{{ image_name }}.qcow2"
|
|
state: present
|
|
|
|
# FIXME: This does not seem to work :(
|
|
- name: Ensure test deployment image has kernel and ramdisk properties
|
|
os_image:
|
|
auth: "{{ openstack_auth }}"
|
|
name: "{{ image_name }}"
|
|
ramdisk: "{{ image_name }}.initrd"
|
|
kernel: "{{ image_name }}.vmlinuz"
|
|
state: present
|
|
when: not image_is_whole_disk|bool
|