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
- Revise si se instaló Cloud-Init.
Para más detalles, consulte Comprobar si se ha instalado Cloud-Init.
- 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
- 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
- Si el certificado se almacena en un directorio de usuario root, por ejemplo, /$path/$to/$root/.ssh/autorized_keys, ejecute los siguientes comandos:
- 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:
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:
- Inicie sesión en el ECS usado para crear una imagen privada de Linux.
- 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
- Ejecute el siguiente comando para actualizar el origen de instalación de red:
- Ejecute el siguiente comando para instalar Cloud-Init:
- 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:
- Ejecute el siguiente comando para abrir el archivo dhcp usando el editor vi:
vi etc/sysconfig/network/dhcp
- Cambie el valor de DHCLIENT_SET_HOSTNAME en el archivo dhcp a no.
- SUSE 11
- 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
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
- Tome CentOS 6 de 64 bits como ejemplo. Si la versión es 6.8, el comando es el siguiente:
- 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.
- 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
- 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/
- 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
- Ejecute el comando cloud-init -v. Cloud-Init se instala correctamente si se muestra la siguiente información:
cloud-init 0.7.9
- 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 el sistema operativo utiliza SysVinit para gestionar el inicio automático de los servicios, ejecute los siguientes comandos:
Si instalas Cloud-Init usando el paquete de código fuente oficial y pip, preste atención a lo siguiente:
- 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
- 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/
- Ejecute los siguientes comandos para descargar el paquete de código fuente y copiarlo a la carpeta /tmp/CLOUD-INIT :
Cloud-Init 0.7.6: https://github.com/canonical/cloud-init/archive/refs/tags/0.7.6.zip (en inglés)
Cloud-Init 0.7.9: https://github.com/canonical/cloud-init/archive/refs/tags/0.7.9.zip
Todas las versiones: https://github.com/canonical/cloud-init/releases
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
- Ejecute el siguiente comando para descomprimir el paquete:
- Ejecute el siguiente comando para ingresar a la carpeta cloud-init-0.7.6:
cd cloud-init-0.7.6
- 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 install --init-system sysvinit
- Para CentOS 7.x o SUSE 12.x, ejecute los siguientes comandos:
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
- Para CentOS 6.x o SUSE 11.x, ejecute los siguientes comandos:
- 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 el sistema operativo utiliza SysVinit para gestionar el inicio automático de los servicios, ejecute los siguientes comandos:
- Ejecute los siguientes comandos para comprobar si se ha instalado Cloud-Init:
cloud-init init --local
Cloud-Init se instala correctamente si se muestra la siguiente información:
cloud-init 0.7.6