Estos contenidos se han traducido de forma automática para su comodidad, pero Huawei Cloud no garantiza la exactitud de estos. Para consultar los contenidos originales, acceda a la versión en inglés.
Actualización más reciente 2023-10-09 GMT+08:00

Instalación de Cloud-Init

Escenarios

Para asegurarse de que puede usar la función de inyección de datos de usuario para inyectar información personalizada inicial en los ECS creados a partir de una imagen privada (como configurar la ECS contraseña de inicio de sesión), instale Cloud-Init en el ECS utilizado para crear la imagen.

  • Es necesario descargar Cloud-Init desde su sitio web oficial. Por lo tanto, debe vincular una EIP a la ECS.
  • Si Cloud-Init no está instalado, no puede configurar una ECS. Como resultado, solo puede usar la contraseña del archivo de imagen para iniciar sesión en los ECSs creados.
  • De forma predeterminada, los ECS creados a partir de una imagen pública tienen Cloud-Init instalado. No es necesario instalar o configurar Cloud-Init en dichos ECS.
  • Para los ECS creados con un archivo de imagen externo, instale y configure Cloud-Init realizando las operaciones de esta sección. Para ver cómo configurar Cloud-Init, consulte Configuración de Cloud-Init.

Prerrequisitos

  • Una EIP ha estado vinculada a la ECS.
  • Usted ha iniciado sesión en el ECS.
  • El modo de obtención de la dirección IP ECS es DHCP.

Procedimiento

  1. Revise si se instaló Cloud-Init.

    Para más detalles, consulte Comprobar si se ha instalado Cloud-Init.

  2. Instale Cloud-Init.

    Puede instalar Cloud-Init de cualquiera de las siguientes maneras: (Recomendado) Instalar Cloud-Init usando el paquete de instalación oficial, Instalar Cloud-Init usando el paquete oficial de código fuente y pip, y Instalar Cloud-Init usando el código fuente oficial de GitHub.

Comprobar si se ha instalado Cloud-Init

Realice las operaciones proporcionadas aquí para comprobar si se ha instalado Cloud-Init.

Los métodos para comprobar si Cloud-Init está instalado varían en función de los sistemas operativos. Tome CentOS 6 como ejemplo. Ejecute el siguiente comando para comprobar si Cloud-Init está instalado:

rpm -qa |grep cloud-init

Si se muestra información similar a la siguiente, se ha instalado Cloud-Init:

cloud-init-0.7.5-10.el6.centos.2.x86_64
Si se ha instalado Cloud-Init, realice las siguientes operaciones:
  • Compruebe si desea utilizar el certificado en el ECS sistema operativo. Si el certificado ya no se utiliza, elimínelo.
    • Si el certificado se almacena en un directorio de usuario root, por ejemplo, /$path/$to/$root/.ssh/autorized_keys, ejecute los siguientes comandos:

      cd /root/.ssh

      rm authorized_keys

    • Si el certificado no está almacenado en un directorio de usuario root, por ejemplo, /$path/$to/$none-root/.ssh/autorized_keys, ejecute los siguientes comandos:

      cd /home/centos/.ssh

      rm authorized_keys

  • Ejecute el siguiente comando para eliminar la caché generada por Cloud-Init y asegúrese de que la ECS creada a partir de la imagen privada se puede iniciar con el certificado:

    sudo rm -rf /var/lib/cloud/*

No reinicie el ECS después de realizar la configuración. De lo contrario, necesita configurarlo de nuevo.

(Recomendado) Instalar Cloud-Init usando el paquete de instalación oficial

El método de instalación de Cloud-Init en un ECS varía dependiendo del sistema operativo. Realice las operaciones de instalación como usuario root.

A continuación se describe cómo instalar Cloud-Init en un ECS que ejecute SUSE Linux, CentOS, Fedora, Debian y Ubuntu. Para otros tipos de sistemas operativos, instale el tipo requerido de Cloud-Init. Por ejemplo, necesita instalar coreos-cloudinit en ECSs que ejecutan CoreOS.

  • SUSE Linux

    Rutas de acceso para obtener el paquete de instalación de Cloud-Init para SUSE Linux

    https://ftp5.gwdg.de/pub/opensuse/repositories/Cloud:/Tools/

    http://download.opensuse.org/repositories/Cloud:/Tools/

    Seleccione el paquete de instalación de repositorio necesario en las rutas proporcionadas.

    Tome SUSE Enterprise Linux Server 12 como ejemplo. Realice los siguientes pasos para instalar Cloud-Init:

    1. Inicie sesión en el ECS usado para crear una imagen privada de Linux.
    2. Ejecute el siguiente comando para instalar el origen de instalación de red para SUSE Enterprise Linux Server 12:

      zypper ar https://ftp5.gwdg.de/pub/opensuse/repositories/Cloud:/Tools/SLE_12_SP3/Cloud:Tools.repo

    3. Ejecute el siguiente comando para actualizar el origen de instalación de red:

      zypper refresh

    4. Ejecute el siguiente comando para instalar Cloud-Init:

      zypper install cloud-init

    5. Ejecute los siguientes comandos para habilitar Cloud-Init para que se inicie automáticamente al iniciar el sistema:
      • SUSE 11

        chkconfig cloud-init-local on; chkconfig cloud-init on; chkconfig cloud-config on; chkconfig cloud-final on

        service cloud-init-local status; service cloud-init status; service cloud-config status; service cloud-final status

      • SUSE 12 y openSUSE 12/13/42

        systemctl enable cloud-init-local.service cloud-init.service cloud-config.service cloud-final.service

        systemctl status cloud-init-local.service cloud-init.service cloud-config.service cloud-final.service

      Para SUSE y openSUSE, realice los siguientes pasos para deshabilitar el cambio dinámico del ECS nombre:

      1. Ejecute el siguiente comando para abrir el archivo dhcp usando el editor vi:

        vi etc/sysconfig/network/dhcp

      2. Cambie el valor de DHCLIENT_SET_HOSTNAME en el archivo dhcp a no.
  • CentOS

    Tabla 1 enumera las rutas de instalación de Cloud-Init para CentOS. Seleccione el paquete de instalación requerido en las siguientes direcciones.

    Tabla 1 Direcciones del paquete de instalación de Cloud-Init

    Tipo de sistema operativo

    Versión

    Cómo obtener

    CentOS

    6 32-bit

    https://archives.fedoraproject.org/pub/archive/epel/6/i386/

    6 64-bit

    https://archives.fedoraproject.org/pub/archive/epel/6/x86_64/

    7 64-bit

    https://archives.fedoraproject.org/pub/epel/7/x86_64/Packages/e/

    Ejecute los siguientes comandos para instalar Cloud-Init:

    yum install Cloud-Init installation package address/epel-release-x-y.noarch.rpm

    yum install cloud-init

    La dirección del paquete de instalación de Cloud-Init indica la dirección del paquete de instalación de Cloud-Init epel-release, y x-y indica la versión de Cloud-Init epel-release requerida por el sistema operativo actual. Reemplazarlos con los valores reales según Tabla 1.

    • Tome CentOS 6 de 64 bits como ejemplo. Si la versión es 6.8, el comando es el siguiente:

      yum install https://archives.fedoraproject.org/pub/archive/epel/6/x86_64/epel-release-6-8.noarch.rpm

    • Tome CentOS 7 de 64 bits como ejemplo. Si la versión es 7.14, el comando es el siguiente:

      yum install https://archives.fedoraproject.org/pub/epel/7/x86_64/Packages/e/epel-release-7-14.noarch.rpm

  • Fedora

    Antes de instalar Cloud-Init, asegúrese de que la dirección de origen de instalación de red se ha configurado para el sistema operativo comprobando si el archivo /etc/yum.repo.d/fedora.repo contiene la dirección de origen de instalación del paquete de software. Si el archivo no contiene la dirección, configure la dirección siguiendo las instrucciones en el sitio web oficial de Fedora.

    Ejecute el siguiente comando para instalar Cloud-Init:

    yum install cloud-init

  • Debian y Ubuntu

    Antes de instalar Cloud-Init, asegúrese de que la dirección de origen de instalación de red se ha configurado para el sistema operativo comprobando si el archivo /etc/apt/sources.list contiene la dirección de origen de instalación del paquete de software. Si el archivo no contiene la dirección, configure la dirección siguiendo las instrucciones en el sitio web oficial de Debian o Ubuntu.

    Ejecute los siguientes comandos para instalar Cloud-Init:

    apt-get update

    apt-get install cloud-init

Instalar Cloud-Init usando el paquete oficial de código fuente y pip

Las siguientes operaciones usan Cloud-Init 0.7.9 como ejemplo para describir cómo instalar Cloud-Init.

  1. Descargue el paquete de código fuente cloud-init-0.7.9.tar.gz (se recomienda la versión 0.7.9) y súbalo al directorio /home/ de la ECS.

    Descargue cloud-init-0.7.9.tar.gz desde la siguiente ruta:

    https://launchpad.net/cloud-init/trunk/0.7.9/+download/cloud-init-0.7.9.tar.gz

  2. Cree un archivo pip.conf en el directorio ~/.pip/ y edite el siguiente contenido:

    Si el directorio ~/.pip/ no existe, ejecute el comando mkdir ~/.pip para crearlo.

    [global]
    index-url  = https://<$mirror>/simple/
    trusted-host = <$mirror>

    Reemplace <$mirror> con un origen PyPI de red pública.

    Fuente de PyPI de la red pública https://pypi.python.org/

  3. Ejecute el siguiente comando para instalar el paquete de código fuente de Cloud-Init descargado (seleccione --upgrade según sea necesario durante la instalación):

    pip install [--upgrade] /home/cloud-init-0.7.9.tar.gz

  4. Ejecute el comando cloud-init -v. Cloud-Init se instala correctamente si se muestra la siguiente información:
    cloud-init 0.7.9
  5. Habilite Cloud-Init para que se inicie automáticamente al iniciar el sistema.
    • Si el sistema operativo utiliza SysVinit para gestionar el inicio automático de los servicios, ejecute los siguientes comandos:

      chkconfig --add cloud-init-local; chkconfig --add cloud-init; chkconfig --add cloud-config; chkconfig --add cloud-final

      chkconfig cloud-init-local on; chkconfig cloud-init on; chkconfig cloud-config on; chkconfig cloud-final on

      service cloud-init-local status; service cloud-init status; service cloud-config status; service cloud-final status

    • Si el sistema operativo utiliza Systemd para gestionar el inicio automático de servicios, ejecute los siguientes comandos:

      systemctl enable cloud-init-local.service cloud-init.service cloud-config.service cloud-final.service

      systemctl status cloud-init-local.service cloud-init.service cloud-config.service cloud-final.service

Si instalas Cloud-Init usando el paquete de código fuente oficial y pip, preste atención a lo siguiente:

  1. Agregar usuario de syslog al grupo adm durante la instalación. Si existe usuario de syslog, agréguelo al grupo adm. Para algunos sistemas operativos (como CentOS y SUSE), es posible que el usuario de syslog no exista. Ejecute los siguientes comandos para crear usuario de syslog y agregarlo al grupo adm:

    useradd syslog

    groupadd adm

    usermod -g adm syslog

  2. Cambie el valor de distro en system_info en el archivo /etc/cloud/cloud.cfg basado en la versión de lanzamiento del sistema operativo, como distro: ubuntu, distro: sles, distro: debian, and distro: fedora.

Instalar Cloud-Init usando el código fuente oficial de GitHub

Puede obtener el código fuente de Cloud-Init de GitHub en https://github.com/canonical/cloud-init/

  1. Ejecute los siguientes comandos para descargar el paquete de código fuente y copiarlo a la carpeta /tmp/CLOUD-INIT :

    wget https://github.com/canonical/cloud-init/archive/refs/tags/0.7.6.zip

    mkdir /tmp/CLOUD-INIT

    cp cloud-init-0.7.6.zip /tmp/CLOUD-INIT

    cd /tmp/CLOUD-INIT

  2. Ejecute el siguiente comando para descomprimir el paquete:

    unzip cloud-init-0.7.6.zip

  3. Ejecute el siguiente comando para ingresar a la carpeta cloud-init-0.7.6:

    cd cloud-init-0.7.6

  4. Instale Cloud-Init. Los comandos varían según el tipo de sistema operativo.
    • Para CentOS 6.x o SUSE 11.x, ejecute los siguientes comandos:

      python setup.py build

      python setup.py install --init-system sysvinit

    • Para CentOS 7.x o SUSE 12.x, ejecute los siguientes comandos:

      python setup.py build

      python setup.py install --init-system systemd

    Agregar usuario de syslog al grupo adm durante la instalación. Si existe usuario de syslog, agréguelo al grupo adm. Para algunos sistemas operativos (como CentOS y SUSE), es posible que el usuario de syslog no exista. Ejecute los siguientes comandos para crear usuario de syslog y agregarlo al grupo adm:

    useradd syslog

    groupadd adm

    usermod -g adm syslog

  5. Habilite Cloud-Init para que se inicie automáticamente al iniciar el sistema.
    • Si el sistema operativo utiliza SysVinit para gestionar el inicio automático de los servicios, ejecute los siguientes comandos:

      chkconfig --add cloud-init-local; chkconfig --add cloud-init; chkconfig --add cloud-config; chkconfig --add cloud-final

      chkconfig cloud-init-local on; chkconfig cloud-init on; chkconfig cloud-config on; chkconfig cloud-final on

      service cloud-init-local status; service cloud-init status; service cloud-config status; service cloud-final status

    • Si el sistema operativo utiliza Systemd para gestionar el inicio automático de servicios, ejecute los siguientes comandos:

      systemctl enable cloud-init-local.service cloud-init.service cloud-config.service cloud-final.service

      systemctl status cloud-init-local.service cloud-init.service cloud-config.service cloud-final.service

  6. Ejecute los siguientes comandos para comprobar si se ha instalado Cloud-Init:

    cloud-init -v

    cloud-init init --local

    Cloud-Init se instala correctamente si se muestra la siguiente información:

    cloud-init 0.7.6