Transferencia de los datos de usuario a ECS
Casos
Utilice la función User Data para pasar los datos de usuario a los ECS a:
- Simplifique la configuración de ECS.
- Inicialice la configuración de SO de ECS.
- Sube tus scripts a los ECS durante su creación.
- Realizar otras tareas usando scripts.
Restricciones de uso
- Linux
- La imagen que se utiliza para crear los ECS debe tener Cloud-Init instalado.
- Los datos de usuario a especificar deben ser menores o iguales a 32 KB.
- Si los datos de usuario se cargan como texto, los datos solo pueden contener caracteres ASCII. Si los datos de usuario se cargan con un archivo, el archivo puede contener caracteres y el tamaño del archivo no puede superar los 32 KB.
- La imagen que se utiliza para crear ECS debe ser una imagen pública, una imagen privada creada a partir de una imagen pública o una imagen privada con Cloud-Init instalado.
- El formato de los scripts personalizados debe ser soportado por los ECS de Linux.
- DHCP debe estar habilitado en la red VPC y el puerto 80 debe estar habilitado para el grupo de seguridad en la dirección de salida.
- Cuando se selecciona el modo de inicio de sesión de contraseña, no se admite el paso de datos de usuario.
- Windows
- La imagen que se utiliza para crear los ECS debe tener Cloudbase-Init instalado.
- Los datos de usuario a especificar deben ser menores o iguales a 32 KB.
- Si los datos de usuario se cargan como texto, los datos solo pueden contener caracteres ASCII. Si los datos de usuario se cargan con un archivo, el archivo puede contener caracteres y el tamaño del archivo no puede superar los 32 KB.
- La imagen que se utiliza para crear ECS debe ser una imagen pública, una imagen privada creada a partir de una imagen pública o una imagen privada con Cloudbase-Init instalado.
- DHCP debe estar habilitado en la red VPC y el puerto 80 debe estar habilitado para el grupo de seguridad en la dirección de salida.
Pasando datos de usuario
- Cree un script de datos de usuario, cuyo formato cumpla con las especificaciones del script de datos de usuario. Para más detalles, consulte Enlaces útiles.
- Al crear un ECS, establezca Advanced Options en Configure now y pegue el contenido de la secuencia de comandos de datos de usuario en el cuadro de texto User Data o cargue el archivo de datos de usuario.
Puede pasar los datos de usuario a un ECS como texto o como un archivo.
Texto: Copie el contenido del script de datos del usuario en el cuadro de texto.
Archivo: Guarde el script de datos del usuario en un archivo de texto y, a continuación, cargue el archivo.
Figura 1 Datos de usuario
- El ECS creado ejecuta automáticamente Cloud-Init/Cloudbase-Init y lee el script de datos del usuario al iniciarlo.
Scripts de datos de usuario de ECS de Linux
Los scripts de datos de usuario personalizados de ECS de Linux se basan en la arquitectura Cloud-Init de código abierto. Esta arquitectura utiliza metadatos de ECS como origen de datos para configurar automáticamente los ECS. Los tipos de script personalizados son compatibles con Cloud-Init de código abierto. Para obtener más información sobre Cloud-Init, consulte http://cloudinit.readthedocs.io/en/latest/topics/format.html.
- Tiempo de ejecución del script: Un script de datos de usuario personalizado se ejecuta después del momento en que el estado del ECS de destino cambia a Running y antes del momento en que se ejecuta /etc/init.
De forma predeterminada, los scripts se ejecutan como usuario root.
- Tipo de script: tanto scripts de datos de usuario como scripts de datos de Cloud-Config son compatibles.
Tabla 1 Tipos de script de Linux ECS -
Script de datos de usuario
Script de datos de Cloud-Config
Descripción
Los scripts, como los scripts de Shell y Python, se utilizan para configuraciones personalizadas.
Los métodos predefinidos en Cloud-Init, como el repositorio yum y la clave SSH, se utilizan para configurar ciertas aplicaciones ECS.
Formato
Un script debe iniciarse con #!, por ejemplo, #!/bin/bash y #!/usr/bin/env python.
Cuando un script se inicia por primera vez, se ejecutará en el nivel rc.local-like, indicando una prioridad baja en la secuencia de arranque.
La primera línea debe ser #cloud-config, y no se permite espacio delante de ella.
Restricciones
Antes de la codificación Base64, el tamaño de la secuencia de comandos, incluida la primera línea, no puede superar los 32 KB.
Antes de la codificación Base64, el tamaño de la secuencia de comandos, incluida la primera línea, no puede superar los 32 KB.
Frecuencia
El script se ejecuta solo una vez cuando se inicia ECS por primera vez.
La frecuencia de ejecución varía según las aplicaciones configuradas en el ECS.
- ¿Cómo puedo ver los datos de usuario personalizados pasados a un ECS de Linux?
- Inicie sesión en el ECS.
- Ejecute el siguiente comando para ver los datos de usuario personalizados como usuario root:
curl http://169.254.169.254/openstack/latest/user_data
- Ejemplos de uso de scripts
Esta sección describe cómo inyectar scripts en diferentes formatos en ECS de Linux y ver resultados de ejecución de scripts.
Ejemplo 1: Inyectar un script de datos de usuario.
Al crear un ECS, establezca User Data en As text e introduzca el script de datos de usuario personalizado.
#!/bin/bash echo "Hello, the time is now $(date -R)" | tee /root/output.txt
Después de crear el ECS, iniciarlo y ejecutar el comando cat [file] para comprobar el resultado de la ejecución del script.
[root@XXXXXXXX ~]# cat /root/output.txt Hello, the time is now Mon, 16 Jul 2016 16:03:18+0800
Ejemplo 2: Inyecte un script de datos de Cloud-Config.
Al crear un ECS, establezca User Data en As text e introduzca el script de datos de usuario personalizado.
#cloud-config bootcmd: - echo 192.168.1.130 us.archive.ubuntu.com >> /etc/hosts
Después de crear el ECS, iniciarlo y ejecutar el comando cat /etc/hosts para comprobar el resultado de la ejecución del script.
Figura 2 Consulta de resultados operativos
Scripts de datos de usuario de ECS de Windows
Los scripts de datos de usuario personalizados de ECS de Windows se basan en la arquitectura Cloudbase-Init de código abierto. Esta arquitectura utiliza metadatos de ECS como origen de datos para inicializar y configurar automáticamente los ECS. Los tipos de script personalizados son compatibles con Cloudbase-Init de código abierto. Para obtener más información sobre Cloudbase-Init, consulte https://cloudbase-init.readthedocs.io/en/latest/userdata.html.
- Tipo de script: tanto los scripts de programa de procesamiento por lotes como los scripts de PowerShell son compatibles.
Tabla 2 Tipos de script de Windows ECS -
Script de programa de procesamiento por lotes
Script de PowerShell
Formato
El script debe iniciarse con rem cmd, que es la primera línea del script. No se permite ningún espacio al principio de la primera línea.
El script debe iniciarse con #ps1, que es la primera línea del script. No se permite ningún espacio al principio de la primera línea.
Restricciones
Antes de la codificación Base64, el tamaño de la secuencia de comandos, incluida la primera línea, no puede superar los 32 KB.
Antes de la codificación Base64, el tamaño de la secuencia de comandos, incluida la primera línea, no puede superar los 32 KB.
- ¿Cómo puedo ver los datos de usuario personalizados que se pasan a un ECS de Windows?
- Ejemplos de uso de scripts
Esta sección describe cómo inyectar scripts en diferentes formatos en ECS de Windows y ver resultados de ejecución de scripts.
Ejemplo 1: Inyecte un script de programa de procesamiento por lotes.
Al crear un ECS, establezca User Data en As text e introduzca el script de datos de usuario personalizado.
rem cmd echo "Hello, BAT Test" > C:\1111.txt
Después de crear el ECS, iniciarlo y comprobar el resultado de la ejecución del script. En este ejemplo, se agrega un archivo de texto denominado 1111 al disco C:\.
Figura 3 Creación de archivos de texto (Lote)
Para ver los datos de usuario pasados a ECS de Windows, inicie sesión en http://169.254.169.254/openstack/latest/user_data.
Figura 4 Consulta de datos de usuario (Lote)
Ejemplo 2: Inyectar un script de PowerShell.
Al crear un ECS, establezca User Data en As text e introduzca el script de datos de usuario personalizado.
#ps1 echo "Hello, Powershell Test" > C:\aaaa.txt
Después de crear el ECS, iniciarlo y comprobar el resultado de la ejecución del script. En este ejemplo, se agrega un archivo de texto denominado aaaa al disco C:\.
Figura 5 Creación de un archivo de texto (PowerShell)
Para ver los datos de usuario pasados a ECS de Windows, inicie sesión en http://169.254.169.254/openstack/latest/user_data.
Figura 6 Consulta de datos de usuario (PowerShell)
Caso 1
Este caso ilustra cómo usar la función de paso de datos de usuario para simplificar la configuración de ECS de Linux.
En este ejemplo, vim está configurado para habilitar el resaltado de sintaxis, mostrar números de línea y establecer la tabulación en 4. El archivo de configuración.vimrc se crea e inyecta en el directorio /root/.vimrc durante la creación de ECS. Después de crear el ECS, vim se configura automáticamente en función de sus requisitos. Esto mejora la eficiencia de la configuración de ECS, especialmente en escenarios de creación de ECS por lotes.
Ejemplo de datos de usuario:
#cloud-config write_files: - path: /root/.vimrc content: | syntax on set tabstop=4 set number
Caso 2
Este caso ilustra cómo usar la función de paso de datos de usuario para establecer la contraseña para iniciar sesión en un ECS de Linux.
La nueva contraseña debe cumplir con los requisitos de complejidad de contraseña enumerados en Tabla 3.
Parámetro |
Requisito |
Valor de ejemplo |
---|---|---|
Contraseña |
|
YNbUwp!dUc9MClnv
NOTA:
La contraseña de ejemplo se genera aleatoriamente. No lo use. |
Ejemplo de datos de usuario:
- Usar una contraseña de texto cifrado (recomendado)
#!/bin/bash echo 'root:$6$V6azyeLwcD3CHlpY$BN3VVq18fmCkj66B4zdHLWevqcxlig' | chpasswd -e;
En el resultado del comando anterior, $6$V6azyeLwcD3CHlpY$BN3VVq18fmCkj66B4zdHLWevqcxlig es la contraseña de texto cifrado, que puede generarse de la siguiente manera:
- Ejecute el siguiente comando para generar un valor cifrado de texto cifrado:
python -c "import crypt, getpass, pwd;print crypt.mksalt()"
Se muestra la siguiente información:
$6$V6azyeLwcD3CHlpY
- Ejecute el siguiente comando para generar una contraseña de texto cifrado basada en el valor salt:
python -c "import crypt, getpass, pwd;print crypt.crypt('Cloud.1234','\$6\$V6azyeLwcD3CHlpY')"
Se muestra la siguiente información:
$6$V6azyeLwcD3CHlpY$BN3VVq18fmCkj66B4zdHLWevqcxlig
- Ejecute el siguiente comando para generar un valor cifrado de texto cifrado:
Después de crear el ECS, puede usar la contraseña para iniciar sesión en él.
Caso 3
Este caso ilustra cómo usar la función de paso de datos de usuario para restablecer la contraseña para iniciar sesión en un ECS de Linux.
En este ejemplo, la contraseña del usuario root se restablece a ******.
La nueva contraseña debe cumplir con los requisitos de complejidad de contraseña enumerados en Tabla 4.
Parámetro |
Requisito |
Valor de ejemplo |
---|---|---|
Contraseña |
|
YNbUwp!dUc9MClnv
NOTA:
La contraseña de ejemplo se genera aleatoriamente. No lo use. |
Ejemplo de datos de usuario (Mantiene la sangría en el siguiente script):
#cloud-config chpasswd: list: | root:****** expire: False
Después de crear el ECS, puede usar la contraseña de restablecimiento para iniciar sesión en él. Para garantizar la seguridad del sistema, cambie la contraseña del usuario root después de iniciar sesión en ECS por primera vez.
Caso 4
Este caso ilustra cómo utilizar la función de paso de datos de usuario para crear un usuario en un ECS de Windows y configurar la contraseña para el usuario.
En este ejemplo, el nombre de usuario del usuario es abc, su contraseña es ******, y el usuario se agrega al grupo de usuarios administrators.
La nueva contraseña debe cumplir con los requisitos de complejidad de contraseña enumerados en Tabla 4.
Ejemplo de datos de usuario:
rem cmd net user abc ****** /add net localgroup administrators abc /add
Después de crear el ECS, puede utilizar el nombre de usuario y la contraseña creados para iniciar sesión en él.
Caso 5
Este caso ilustra cómo utilizar la función de paso de datos del usuario para actualizar paquetes de software del sistema para ECS de Linux y habilitar el servicio HTTPd. Después de pasar los datos de usuario a un ECS, puede utilizar el servicio HTTPd.
Ejemplo de datos de usuario:
#!/bin/bash yum update -y service httpd start chkconfig httpd on
Caso 6
Este caso ilustra cómo usar la función de paso de datos de usuario para asignar permisos de usuario root para iniciar sesión remotamente en un ECS de Linux. Después de pasar el archivo a un ECS, puede iniciar sesión en el ECS como usuario root usando autenticación de par de claves SSH.
Ejemplo de datos de usuario:
#cloud-config disable_root: false runcmd: - sed -i 's/^PermitRootLogin.*$/PermitRootLogin without-password/' /etc/ssh/sshd_config - sed -i '/^KexAlgorithms.*$/d' /etc/ssh/sshd_config - service sshd restart