Capítulo 3. Configuración de cloud-init
Este capítulo incluye ejemplos de las tareas de configuración más comunes para cloud-init
.
Su configuración de cloud-init
puede requerir que añada directivas al archivo cloud.cfg
y al directorio cloud.cfg.d
. Por otra parte, su fuente de datos específica puede requerir que añada directivas a archivos, como un archivo de datos de usuario y un archivo de metadatos. Una fuente de datos puede requerir que cargue sus directivas en un servidor HTTP. Compruebe los requisitos de su fuente de datos y añada las directivas en consecuencia.
3.1. Creación de una máquina virtual que incluye cloud-init para un origen de datos NoCloud
Lo que sigue es un procedimiento de ejemplo para crear una nueva máquina virtual que incluya cloud-init
. En este procedimiento, se crea un archivo meta-data
y user-data
. Su archivo meta-data
incluye los detalles de la instancia. Su archivo user-data
incluye información para crear un usuario y concederle acceso. A continuación, se incluyen estos archivos en una nueva imagen ISO y se adjunta el archivo ISO a una nueva máquina virtual creada a partir de una imagen de invitado KVM. En este caso, la fuente de datos es NoCloud.
Procedimiento
Cree un directorio llamado
cloudinitiso
y muévase a él.Copy to Clipboard Copied! Toggle word wrap Toggle overflow mkdir cloudinitiso cd cloudinitiso
$ mkdir cloudinitiso $ cd cloudinitiso
Cree un archivo llamado
meta-data
. Añade la siguiente información al archivo.Copy to Clipboard Copied! Toggle word wrap Toggle overflow instance-id: citest local-hostname: citest-1
instance-id: citest local-hostname: citest-1
Cree un archivo llamado
user-data
. Incluya la siguiente información en el archivo.Copy to Clipboard Copied! Toggle word wrap Toggle overflow #cloud-config password: cilogon chpasswd: {expire: False} ssh_pwauth: True ssh_authorized_keys: - ssh-rsa AAA...fhHQ== sample@redhat.com
#cloud-config password: cilogon chpasswd: {expire: False} ssh_pwauth: True ssh_authorized_keys: - ssh-rsa AAA...fhHQ== sample@redhat.com
NotaLa última línea del archivo
user-data
hace referencia a una clave pública SSH. Encuentre sus claves públicas SSH en~/.ssh/id_rsa.pub
. Cuando intente este procedimiento de ejemplo, modifique la línea para incluir una de sus claves públicas.Utilice el comando
genisoimage
para crear una imagen ISO que incluyauser-data
ymeta-data
.Copy to Clipboard Copied! Toggle word wrap Toggle overflow genisoimage -output ciiso.iso -volid cidata -joliet -rock user-data meta-data
# genisoimage -output ciiso.iso -volid cidata -joliet -rock user-data meta-data I: -input-charset not specified, using utf-8 (detected in locale settings) Total translation table size: 0 Total rockridge attributes bytes: 331 Total directory bytes: 0 Path table size(bytes): 10 Max brk space used 0 183 extents written (0 MB)
-
Descargue una imagen de invitado KVM desde el Portal del Cliente de Red Hat al directorio
/var/lib/libvirt/images
. Cree una nueva VM a partir de la imagen huésped de KVM utilizando el comando
virt-install
. Incluya la imagen ISO que ha creado como archivo adjunto a la imagen.Copy to Clipboard Copied! Toggle word wrap Toggle overflow virt-install \ --memory 4096 \ --vcpus 4 \ --name mytestcivm \ --disk /var/lib/libvirt/images/rhel-8.1-x86_64-kvm.qcow2,device=disk,bus=virtio,format=qcow2 \ --disk /home/sample/cloudinitiso/ciiso.iso,device=cdrom \ --os-type Linux \ --os-variant rhel8.0 \ --virt-type kvm \ --graphics none \ --import
virt-install \ --memory 4096 \ --vcpus 4 \ --name mytestcivm \ --disk /var/lib/libvirt/images/rhel-8.1-x86_64-kvm.qcow2,device=disk,bus=virtio,format=qcow2 \ --disk /home/sample/cloudinitiso/ciiso.iso,device=cdrom \ --os-type Linux \ --os-variant rhel8.0 \ --virt-type kvm \ --graphics none \ --import
Acceda a su imagen como
cloud-user
. Su contraseña escilogon
.Copy to Clipboard Copied! Toggle word wrap Toggle overflow citest-1 login: cloud-user Password: [cloud-user@citest-1 ~]$
citest-1 login: cloud-user Password: [cloud-user@citest-1 ~]$
Pasos de verificación
Compruebe el estado de
cloud-init
para ver si ha completado sus tareas.Copy to Clipboard Copied! Toggle word wrap Toggle overflow cloud-init status
[cloud-user@citest-1 instance]$ cloud-init status status: done
cloud-init
crea la disposición del directoriocloud-init
bajo/var/lib/cloud
cuando se ejecuta, y actualiza o cambia ciertos contenidos del directorio basándose en las directivas que has especificado.Por ejemplo, puede confirmar que la fuente de datos es
NoCloud
comprobando el archivo de la fuente de datos.Copy to Clipboard Copied! Toggle word wrap Toggle overflow cd /var/lib/cloud/instance cat datasource
$ cd /var/lib/cloud/instance $ cat datasource DataSourceNoCloud: DataSourceNoCloud [seed=/dev/sr0][dsmode=net]
cloud-init
copia los datos del usuario en/var/lib/cloud/instance/user-data.txt
.Copy to Clipboard Copied! Toggle word wrap Toggle overflow $cat user-data.txt #cloud-config password: cilogon chpasswd: {expire: False} ssh_pwauth: True ssh_authorized_keys: - ssh-rsa AAA...fhHQ== sample@redhat.com
$cat user-data.txt #cloud-config password: cilogon chpasswd: {expire: False} ssh_pwauth: True ssh_authorized_keys: - ssh-rsa AAA...fhHQ== sample@redhat.com
Estos son ejemplos. El diseño del directorio
cloud-init
incluye mucha más información.
En el caso de OpenStack, la Guía de instancias e imágenes incluye información para configurar una instancia mediante cloud-init
. Consulte Creación de una instancia personalizada para conocer los procedimientos específicos.
Recursos adicionales