2eed13885a
Change-Id: If4e684da58bffbe25d5bbed4dd4c56d0b5345114 Story: #2003783 Task: #26488
132 lines
4.3 KiB
YAML
132 lines
4.3 KiB
YAML
---
|
|
- hosts: all
|
|
environment:
|
|
OS_CLOUD: devstack-admin
|
|
|
|
tasks:
|
|
- name: Install guestfish
|
|
package:
|
|
name: libguestfs-tools
|
|
state: present
|
|
become: true
|
|
|
|
- name: Make kernel files readable (workaround for Ubuntu)
|
|
shell: chmod 0644 /boot/vmlinuz-*
|
|
become: true
|
|
|
|
- name: Download the CentOS image
|
|
get_url:
|
|
url: "{{ centos_image_url }}"
|
|
dest: "{{ centos_image_file }}.xz"
|
|
register: centos_image_result
|
|
until: centos_image_result | succeeded
|
|
retries: 3
|
|
delay: 10
|
|
|
|
- name: Unpack the CentOS image
|
|
command: xz -d {{ centos_image_file }}.xz
|
|
|
|
- name: Print filesystems from the image
|
|
command: virt-filesystems -a {{ centos_image_file }} -l --extra --block-devices
|
|
|
|
- name: Create a temporary directory for extraction
|
|
tempfile:
|
|
state: directory
|
|
suffix: boot
|
|
register: temp_dir
|
|
|
|
- name: Extract kernel/ramdisk from the image
|
|
command: >
|
|
virt-get-kernel -a {{ centos_image_file }}
|
|
-o {{ temp_dir.path }} --unversioned-names
|
|
|
|
- name: Copy the kernel and ramdisk to the target directory
|
|
copy:
|
|
src: "{{ temp_dir.path }}/{{ item.src }}"
|
|
dest: "{{ item.dest }}"
|
|
remote_src: yes
|
|
with_items:
|
|
- src: vmlinuz
|
|
dest: "{{ centos_kernel_file }}"
|
|
- src: initramfs
|
|
dest: "{{ centos_initramfs_file }}"
|
|
|
|
- name: Extract the root file system
|
|
command: virt-tar-out -a {{ centos_image_file }} / {{ temp_dir.path }}/root.tar
|
|
|
|
- name: Extract /etc/fstab and /etc/selinux/config
|
|
command: >
|
|
tar -f {{ temp_dir.path }}/root.tar
|
|
-C {{ temp_dir.path }} --extract {{ item }}
|
|
with_items:
|
|
- ./etc/fstab
|
|
- ./etc/selinux/config
|
|
|
|
- name: Remove /etc/fstab and /etc/selinux/config from the archive
|
|
command: tar -f {{ temp_dir.path }}/root.tar --delete {{ item }}
|
|
with_items:
|
|
- ./etc/fstab
|
|
- ./etc/selinux/config
|
|
|
|
- name: Edit /etc/fstab to replace UUID with LABEL
|
|
command: sed -i 's/UUID=[^ ]* /\/dev\/vda2 /' {{ temp_dir.path}}/etc/fstab
|
|
|
|
- name: Rewrite /etc/selinux/config to disable selinux
|
|
copy:
|
|
dest: "{{ temp_dir.path }}/etc/selinux/config"
|
|
content: "SELINUX=disabled"
|
|
|
|
- name: Add edited /etc/fstab and /etc/selinux/config back
|
|
command: >
|
|
tar -f {{ temp_dir.path }}/root.tar
|
|
-C {{ temp_dir.path }}
|
|
--append {{ item }} --owner root --group root
|
|
with_items:
|
|
- ./etc/fstab
|
|
- ./etc/selinux/config
|
|
|
|
- name: Pack the root file system into a partition image
|
|
command: virt-make-fs {{ temp_dir.path }}/root.tar {{ centos_partition_file }}
|
|
|
|
- name: Print filesystems from the image
|
|
command: virt-filesystems -a {{ centos_partition_file }} -l --extra --block-devices
|
|
|
|
- name: Remove the temporary directory
|
|
file:
|
|
state: absent
|
|
path: "{{ temp_dir.path }}"
|
|
|
|
- name: Upload the CentOS whole-disk image
|
|
command: >
|
|
openstack image create --disk-format qcow2
|
|
--public --file {{ centos_image_file }}
|
|
{{ centos_glance_whole_disk_image }}
|
|
when: centos_glance_whole_disk_image is defined
|
|
|
|
- name: Upload the CentOS kernel image
|
|
command: >
|
|
openstack image create --disk-format aki --container-format aki \
|
|
--public --file {{ centos_kernel_file }} -f value -c id
|
|
{{ centos_glance_kernel_image }}
|
|
register: centos_kernel_id
|
|
failed_when: centos_kernel_id.stdout == ""
|
|
when: centos_glance_kernel_image is defined
|
|
|
|
- name: Upload the CentOS initramfs image
|
|
command: >
|
|
openstack image create --disk-format ari --container-format ari \
|
|
--public --file {{ centos_initramfs_file }} -f value -c id
|
|
{{ centos_glance_initramds_image }}
|
|
register: centos_initramfs_id
|
|
failed_when: centos_initramfs_id.stdout == ""
|
|
when: centos_glance_initramds_image is defined
|
|
|
|
- name: Upload the CentOS partition image
|
|
command: >
|
|
openstack image create --disk-format qcow2
|
|
--public --file {{ centos_partition_file }}
|
|
--property kernel_id={{ centos_kernel_id.stdout }}
|
|
--property ramdisk_id={{ centos_initramfs_id.stdout }}
|
|
{{ centos_glance_root_image }}
|
|
when: centos_glance_root_image is defined
|