(WORK IN PROGRESS…)
Tool per l'automatizzazione della procedura di creazione di immagini cloud Linux
- Alvise Dorigo (INFN Padova)
Questo tool, scritto in perl, automatizza la procedura descritta qui. Permette la creazione di immagini Linux SL5.9/6.4 o CentOS5.9/6.4 resizables in maniera automatica stando su una piattaforma omologa (RH5/6, CentOS5/6, SL5/6, per via di ovvii problemi di non forward-compatibility del database RPM).
Tanto per farsi un'idea della personalizzazione permessa al momento si puo' guardare direttamente l'help:
[root@lxadorigo ~]# ./create-cloud-image Usage: create-cloud-image [OPTIONS] <OS> Options: --fake-run Do not really execute the operations, just print them --help|-H Print this help and exit --verbose|-v High verbosity and commands' output --root-pwd|-P <root_password> Set the root's password --libdir|-L <libdir> Set the directory where to put the artifacts (Default: HOME/cloud-images) --mount-point <mountpoint> Set the temporary mountpoint for installation (Default: /mnt/cloud-image-<OS>) --mirror|-m <mirror> Select a different mirror to download from (See below for defaults) --size|-s <disksize>[G] Set the initial O.S. disk size (Default: 2 GB) --image-name|-n <IMAGE_NAME> Set the name of the image file (Default: OS's name) --extra-packages|-e Specify a list of comma separated additional rpm pkgs to install --extra-pkikeys|-e Specify a list of comma separated additional PKI (local or remote) GPG KEY files to install --create-user|-u <USERINFO> Create a new user (<USERINFO> format is: <username>[,<pwd>[,<shell>[,<pub_key>]]]) --upload <LABEL_NAME> Upload into glance (root user must be atuhenticated into keystone) --filesystem|-f <FS_NAME> Format cloud image with a user specified filesystem --locale <REGION/CITY> Set the image's locale. Format must be compliant with the directories contained in /usr/share/zoneinfo. Ex. "Europe/Rome", "America/New_York" (Default: "Europe/Rome") --install-ntp Install ntp package --ntp-servers <servers> Define a list of comma separated NTP servers to put into the ntp configuration file (Default: european servers) --overwrite If already present, forcely delete the directory where to put the artifacts --donotupdate Do not run 'yum update' --donotcreate-ec2user Do not create ec2-user Supported OS are: "CentOS5", "CentOS6", "SL6", "SL5" (both x86_64) Default mirrors are: CentOS: http://mirror3.mirror.garr.it/mirrors/CentOS SL: http://ftp.scientificlinux.org/linux/scientific
Quindi e' possibile:
- scegliere un mirror da cui scaricare il software da installare
- scegliere la dimensione iniziale dell'immagine (poi ridimensionabile al boot della macchina virtuale mediante scelta del flavor opportuno dalla dashboard di openstack)
- impostare un eventuale utente non super-user; di default lo script crea ec2-user (operazione disattivabile con l'opzione "–donotcreate-ec2user") e cloud-init prevede l'inserimento della chiave pubblica del proprietario della VM nel file authorized_keys di ec2-user qualora ec2-user esista. Per ottenere questo comportamento con un altro utente sara' necessario modificare il cloud.cfg installato nell'immagine.
- installare eventuali pacchetti rpm addizionali (e.g. tools di sviluppo, pacchetti grid, etc.)
- installare eventuali chiavi GPG addizionali
- settare il timezone
- installare opzionalmente il repo di EPEL (con relativa chiave GPG)
- impostare i server NTP e relativo demone
- etc.
Ovviamente lo strumento e' ancora sotto sviluppo per l'aggiunta di funzinalita' o per la revisione di customizzazioni non necessarie per una corretta creazione di immagini cloud.
Per info: alvise <DOT> dorigo <AT> pd <DOT> infn <DOT> it
Un ringraziamento a Marco Caberletti (@CNAF) per il supporto tecnico e il "trasferimento" di know-how.