Remove bifrost-create-bootable-image

Change-Id: I33cca7c1edb2afec715e3093834ab75eb59201cf
This commit is contained in:
Dmitry Tantsur 2020-10-30 11:02:47 +01:00
parent e211e66a95
commit 912d8d4d5b
6 changed files with 6 additions and 185 deletions

View File

@ -1,64 +0,0 @@
bifrost-create-bootable-image
=============================
This role modifies an existing partition image to create a bootable disk image.
This role is now legacy code and will not be supported in future.
Requirements
------------
This role requires:
- Ansible 2.9
- qemu-img
- kpartx
- The partition image must have the grub bootloader installed.
Role Variables
--------------
http_boot_folder, deploy_image_filename, and deploy_image all control the final
destination of the built image.
http_boot_folder: /httpboot
deploy_image_filename: "partition_image.raw"
deploy_image: "{{http_boot_folder}}/{{deploy_image_filename}}"
Dependencies
------------
None at this time.
Example Playbook
----------------
- hosts: localhost
connection: local
name: "Create bootable image"
become: yes
gather_facts: yes
roles:
- role: bifrost-create-bootable-image
License
-------
Copyright (c) 2015 Hewlett-Packard Development Company, L.P.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
Author Information
------------------
Ironic Developers

View File

@ -1,9 +0,0 @@
---
http_boot_folder: /httpboot
deploy_image_filename: "partition_image.raw"
deploy_image: "{{http_boot_folder}}/{{deploy_image_filename}}"
# Ensure that Ansible is using python interpreter and dependencies inside the bifrost virtual environment
bifrost_venv_dir: "{{ lookup('env', 'VENV') or '/opt/stack/bifrost' }}"
ansible_python_interpreter: "{{ bifrost_venv_dir + '/bin/python3' }}"

View File

@ -1,16 +0,0 @@
---
galaxy_info:
author: Ironic Developers
description: Create bootable disk image for Bifrost
company: OpenStack
license: Apache
min_ansible_version: 1.9
platforms:
- name: Ubuntu
versions:
- trusty
- utopic
categories:
- cloud
- cloud:openstack
dependencies: []

View File

@ -1,75 +0,0 @@
# Copyright (c) 2015 Hewlett-Packard Development Company, L.P.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
# implied.
# See the License for the specific language governing permissions and
# limitations under the License.
---
- name: "Extract the raw disk image"
command: qemu-img convert -O raw "{{ deploy_image }}" "{{ deploy_image }}.raw"
- name: "Copy image however with 32k of empty space at the beginning of the file."
command: dd if="{{ deploy_image }}.raw" of="{{ deploy_image }}.bootimg" seek=64
- name: "Create partition table lining up with the copied file's contents."
shell: echo '32;' | sfdisk "{{ deploy_image }}.bootimg" -uB -f # noqa 306
- name: "Allocate one of two loopbacks"
command: losetup -f
register: stored_value_loopback_alpha
- name: "Create loopback connetion to new image file"
command: losetup "{{ stored_value_loopback_alpha.stdout }}" "{{ deploy_image }}.bootimg"
- name: "Force partition table to be re-read"
command: kpartx -v -a "{{ stored_value_loopback_alpha.stdout }}"
# Using second loopback as for some reason /dev/mapper does not translate into a chroot cleanly when devfs is mounted
- name: "Allocate second loopback pointing to the initial partition"
command: losetup -f
register: stored_value_loopback_beta
- name: "Bind second loopback to the first partition"
shell: |
set -o pipefail
losetup "{{ stored_value_loopback_beta.stdout }}" /dev/mapper/$(echo "{{ stored_value_loopback_alpha.stdout }}" | cut -f3 -d '/')p1
args:
executable: /bin/bash
# TODO parameterize folder name/location
- name: "Ensure we have a location to mount the disk to"
file: path=/mnt/bootimg state=directory
# NOTE(dtantsur): skipping ansible-lint 303 because the mount module does not
# support temporary mounts: https://github.com/ansible-collections/ansible.posix/issues/84
- name: "Mount volume on /mnt/bootimg"
command: mount "{{ stored_value_loopback_beta.stdout }}" /mnt/bootimg # noqa 303
- name: "Bind /sys into /mnt/bootimg/sys"
command: mount -t sysfs sysfs /mnt/bootimg/sys # noqa 303
- name: "Bind /proc into /mnt/bootimg/proc"
command: mount -t proc proc /mnt/bootimg/proc # noqa 303
- name: "Bind /dev into /mnt/bootimg/dev"
command: mount --bind /dev /mnt/bootimg/dev # noqa 303
- name: "Disable Grub Prober"
shell: echo "GRUB_DISABLE_OS_PROBER=true" >>/etc/default/grub
- name: "Disable Grub Prober"
shell: echo 'GRUB_TERMINAL="serial console"' >>/etc/default/grub
- name: "Run the grub-install tool"
command: chroot /mnt/bootimg grub-install --boot-directory=/boot --modules="biosdisk part_msdos" "{{ stored_value_loopback_alpha.stdout }}"
- name: "Unlink /dev/bootimg/dev"
command: umount /mnt/bootimg/dev
- name: "Unlink /dev/bootimg/proc"
command: umount /mnt/bootimg/proc
- name: "Unlink /dev/bootimg/sys"
command: umount /mnt/bootimg/sys
- name: "Unmount image"
command: umount /mnt/bootimg
- name: "Detach second loop device"
command: losetup -d "{{ stored_value_loopback_beta.stdout }}"
- name: "Remove partition map"
command: kpartx -v -d "{{ stored_value_loopback_alpha.stdout }}"
- name: "Detach first loop device"
command: losetup -d "{{ stored_value_loopback_alpha.stdout }}"
- name: "Move image to .oldimg"
command: mv "{{ deploy_image }}" "{{ deploy_image }}.oldimg"
- name: "Move new image into place"
command: mv "{{ deploy_image }}.bootimg" "{{ deploy_image }}"

View File

@ -1,21 +0,0 @@
# Copyright (c) 2015 Hewlett-Packard Development Company, L.P.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
# implied.
# See the License for the specific language governing permissions and
# limitations under the License.
---
- name: "Test if deploy image is present"
stat: path={{ deploy_image }}
register: test_image_present
- name: "Create bootable image"
include: create_bootable_image.yml
when: test_image_present.stat.exists

View File

@ -0,0 +1,6 @@
---
upgrade:
- |
The role ``bifrost-create-bootable-image``, marked as legacy since 2015,
has been removed. Please use diskimage-builder or other external tools
to build your images.