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

  1. Cree un directorio llamado cloudinitiso y muévase a él.

    $ mkdir cloudinitiso
    $ cd cloudinitiso
  2. Cree un archivo llamado meta-data. Añade la siguiente información al archivo.

    instance-id: citest
    local-hostname: citest-1
  3. Cree un archivo llamado user-data. Incluya la siguiente información en el archivo.

    #cloud-config
    password: cilogon
    chpasswd: {expire: False}
    ssh_pwauth: True
    ssh_authorized_keys:
      - ssh-rsa AAA...fhHQ== sample@redhat.com
    Nota

    La ú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.

  4. Utilice el comando genisoimage para crear una imagen ISO que incluya user-data y 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)
  5. Descargue una imagen de invitado KVM desde el Portal del Cliente de Red Hat al directorio /var/lib/libvirt/images.
  6. 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.

    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
  7. Acceda a su imagen como cloud-user. Su contraseña es cilogon.

    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.

    [cloud-user@citest-1 instance]$ cloud-init status
    status: done
  • cloud-init crea la disposición del directorio cloud-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.

    $ 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.

    $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.

Nota

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