Tools to automate image creation¶
Ada beberapa alat yang dirancang untuk mengotomatisasi pembuatan image
OpenStack tools¶
Diskimage-builder¶
Diskimage-builder adalah alat pembuatan image disk otomatis yang mendukung berbagai distribusi dan arsitektur. Diskimage-builder (DIB) dapat membangun image untuk Fedora, Red Hat Enterprise Linux, Ubuntu, Debian, CentOS, dan openSUSE. DIB disusun dalam serangkaian elemen yang saling membangun untuk menciptakan citra yang spesifik.
Untuk membangun image, panggil skrip berikut:
# disk-image-create ubuntu vm
Contoh ini membuat image generik, Ubuntu bootable dari rilis terbaru.
Kustomisasi lebih lanjut dapat dicapai dengan menetapkan variabel lingkungan atau menambahkan elemen ke command-line:
# disk-image-create -a armhf ubuntu vm
Contoh ini membuat gambar seperti sebelumnya, tetapi untuk arsitektur lengan (arm architecture). Lebih banyak elemen tersedia di direktori git source <https://opendev.org/openstack/diskimage-builder/src/branch/master/diskimage_builder/elements> _ dan didokumentasikan dalam dokumentasi diskimage-builder elements documentation.
External tools¶
image-bootstrap¶
image-bootstrap is a command line tool that generates bootable virtual machine images with support for Arch, Debian, Gentoo and Ubuntu, and is prepared for use with OpenStack.
KIWI¶
The KIWI appliance builder provides an operating system image builder for various Linux supported hardware platforms as well as for virtualization and cloud systems. It allows building of images based on openSUSE, SUSE Linux Enterprise, and Red Hat Enterprise Linux. The KIWI NG Documentation explains how to use it.
openstack-debian-images¶
openstack-debian-images adalah alat yang digunakan Debian untuk membuat image OpenStack resminya. Itu terbuat dari satu skrip shell yang sangat sederhana yang mudah dimengerti dan dimodifikasi. Ini mendukung Grub dan Syslinux, BIOS atau EFI, amd64 dan arm64 arch.
openstack-debian-images juga dapat digunakan untuk membuat image yang dapat di-boot langsung pada hard disk, daripada menggunakan installer Debian.
Untuk membuat image, ketikkan ini:
# build-openstack-debian-image --release stretch
Lebih banyak parameter dapat ditambahkan untuk menyesuaikan image lebih lanjut:
# build-openstack-debian-image --release stretch \
--hook-script /root/my-hook-script.sh \
--debootstrap-url http://ftp.fr.debian.org/debian \
--sources.list-mirror http://ftp.fr.debian.org/debian \
--login myusername \
--extra-packages vim,emacs
File `` / root / my-hook-script.sh`` akan menerima 2 variabel lingkungan: jalur BODI_CHROOT_PATH
tempat image dipasang, dan `` BODI_RELEASE`` yang merupakan nama rilis Debian yang merupakan sedang bootstraped. Berikut ini contoh untuk menyesuaikan motd:
# #!/bin/sh
set -e
echo "My message" >${BODI_CHROOT_PATH}/etc/motd
Skrip kait ini akan dipanggil pada saat yang tepat dari proses build, ketika semuanya diinstal, tetapi sebelum melepas partisi.
Oz¶
Oz adalah alat command-line yang mengotomatisasi proses pembuatan file image mesin virtual. Oz adalah aplikasi Python yang berinteraksi dengan KVM untuk melangkah melalui proses pemasangan mesin virtual.
Ini menggunakan seperangkat kickstart yang telah ditentukan sebelumnya (sistem berbasis Red Hat) dan file yang sudah dipasangkan (sistem berbasis Debian) untuk sistem operasi yang didukungnya, dan juga dapat digunakan untuk membuat image Microsoft Windows.
Perlakukan penuh Oz adal di luar lingkup dokumen ini, tetapi kami akan memberikan contoh. Anda dapat menemukan contoh tambahan dari file template Oz pada GitHub di rcbops/oz-image-build/tree/master/templates. Berikut adalah bagaimana Anda akan membuat image CentOS 6.4 dengan Oz.
Buat file template yang disebut centos64.tdl
dengan konten berikut. Satu-satunya entri yang perlu Anda ubah adalah isi ``<rootpw> ``.
<template>
<name>centos64</name>
<os>
<name>CentOS-6</name>
<version>4</version>
<arch>x86_64</arch>
<install type='iso'>
<iso>http://mirror.rackspace.com/CentOS/6/isos/x86_64/CentOS-6.4-x86_64-bin-DVD1.iso</iso>
</install>
<rootpw>CHANGE THIS TO YOUR ROOT PASSWORD</rootpw>
</os>
<description>CentOS 6.4 x86_64</description>
<repositories>
<repository name='epel-6'>
<url>http://download.fedoraproject.org/pub/epel/6/$basearch</url>
<signed>no</signed>
</repository>
</repositories>
<packages>
<package name='epel-release'/>
<package name='cloud-utils'/>
<package name='cloud-init'/>
</packages>
<commands>
<command name='update'>
yum -y update
yum clean all
sed -i '/^HWADDR/d' /etc/sysconfig/network-scripts/ifcfg-eth0
echo -n > /etc/udev/rules.d/70-persistent-net.rules
echo -n > /lib/udev/rules.d/75-persistent-net-generator.rules
</command>
</commands>
</template>
Template Oz ini menetapkan dimana untuk men-download Centos 6.4 install ISO. Oz akan menggunakan informasi versi untuk mengidentifikasi file kickstart untuk digunakan. Dalam hal ini, template itu akan menjadi RHEL6.auto. Template menambahkan EPEL sebagai repositori dan menginstal paket epel-release
, cloud-utils
, dan cloud-init
, sebagaimana ditetapkan dalam bagian packages
dari file.
Setelah Oz melengkapi install OS awal menggunakan file kickstart, Oz itu menyesuaikan image dengan pembaruan. Ini juga menghilangkan setiap referensi untuk perangkat eth0 yang dibuat libvirt saat Oz menyesuaikannya, sebagaimana yang ditentukan dalam bagian command
dari file XML ini.
Untuk menjalankan ini:
# oz-install -d3 -u centos64.tdl -x centos64-libvirt.xml
Flag
-d3
mengatakan bahwa Oz menampilkan status informasi sebagaimana Oz berjalan.-u
mengatakan bahwa Oz melakukan kustomisasi (menginstal paket tambahan, menjalankan perintah) setelah Oz itu melakukan instalasi awal.Flag
-x
mengatakan Oz dengan nama file yang digunakan untuk menulis file XML libvirt (jika tidak maka defaultnya akan ke sesuatu seperticentos64Apr_03_2013-12:39:42
).
Jika Anda meninggalkan keluar flag -u
, atau Anda ingin mengedit file untuk melakukan kustomisasi tambahan, Anda dapat menggunakan perintah oz-customize, penggunaan file XML libvirt dimana oz-install membuatnya. Sebagai contoh:
# oz-customize -d3 centos64.tdl centos64-libvirt.xml
Oz akan memanggil libvirt untuk boot image dalam KVM, kemudian oz akan ssh ke instance dan melakukan kustomisasi.
Packer¶
Packer adalah alat untuk pembuatan image mesin untuk berbagai platform dari konfigurasi sumber tunggal.
virt-builder¶
Virt-builder adalah alat untuk membangun mesin virtual baru secara cepat. Anda dapat membangun berbagai VM untuk penggunaan lokal atau cloud, biasanya dalam beberapa menit atau kurang. Virt-builder juga memiliki banyak cara untuk menyesuaikan VM ini. Semuanya dijalankan dari command line dan tidak membutuhkan hak akses root, jadi otomatisasi dan scripting menjadi sederhana.
Untuk membangun image, panggil skrip berikut:
# virt-builder fedora-23 -o image.qcow2 --format qcow2 \
--update --selinux-relabel --size 20G
Untuk daftar sistem operasi yang tersedia untuk menginstal:
$ virt-builder --list
Mengimpornya ke libvirt dengan virsh:
# virt-install --name fedora --ram 2048 \
--disk path=image.qcow2,format=qcow2 --import
windows-openstack-imaging-tools¶
windows-openstack-imaging-tools is a PowerShell module that automates the Windows image creation for OpenStack and supports building VHDX, QCOW2, RAW and VMDK image types.
For easier installation, the tool is published as a PowerShellGallery module WindowsImageBuilder.
Windows image build example:
# Install and import WindowsImageBuilder module from PowerShellGallery
Install-Module WindowsImageBuilder -Force
Import-Module WindowsImageBuilder
New-WindowsImageConfig -ConfigFilePath ".\windows-image-config.ini"
# Update the configuration file to fit your specific use case
# Extensive information for all the configuration can be found here:
# https://github.com/cloudbase/windows-openstack-imaging-tools/blob/master/Config.psm1#L21
# Generate the Windows image
New-WindowsOnlineImage -ConfigFilePath ".\windows-image-config.ini"
Requirements:
A Windows host, with Hyper-V virtualization enabled, PowerShell >=v4 support and Windows Assessment and Deployment Kit (ADK).
A Windows installation ISO or DVD.
Windows compatible drivers, if required by the target environment. For example, VirtIO, network card, or storage adapter drivers.
Git environment.