Inyección de datos de usuario
Escenarios de aplicación
Puede inyectar datos de usuario para configurar los BMS.
- Utilice scripts para simplificar la configuración de BMS.
- Utilice scripts para inicializar los sistemas operativos de BMS.
- Sube scripts a los BMS en el momento de la creación.
- Utilice scripts para otros objetivos.
Restricciones
- Linux:
- La imagen que se utiliza para crear BMS debe tener Cloud-Init instalado.
- Los datos de usuario que se inyectarán deben ser inferiores o iguales a 32 KB.
- Los datos de usuario cargados como texto solo pueden contener caracteres de ASCII. Los datos de usuario cargados como un archivo pueden contener cualquier carácter y el tamaño del archivo debe ser inferior o igual a 32 KB.
- La imagen que se utiliza para crear BMS 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 script debe cumplir con las especificaciones de script de datos de usuario para BMS de Linux.
- DHCP debe estar habilitado para la VPC y el puerto 80 debe estar habilitado para el grupo de seguridad en la dirección de salida.
- Si se utiliza el inicio de sesión con contraseña, la inyección de datos de usuario dejará de estar disponible.
- Windows:
- La imagen que se utiliza para crear BMS debe tener Cloudbase-Init instalado.
- Los datos de usuario que se inyectarán deben ser inferiores o iguales a 32 KB.
- Los datos de usuario cargados como texto solo pueden contener caracteres de ASCII. Los datos de usuario cargados como un archivo pueden contener cualquier carácter y el tamaño del archivo debe ser inferior o igual a 32 KB.
- La imagen que se utiliza para crear BMS 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 para la VPC y el puerto 80 debe estar habilitado para el grupo de seguridad en la dirección de salida.
Procedimiento
- Cree un script de datos de usuario. El formato debe cumplir con las especificaciones del script de datos del usuario. Para obtener más información, véase Enlaces útiles.
- Al crear un BMS, establezca Advanced Settings en Configure now y pegue el contenido del script de datos de usuario en el cuadro de texto User Data o cargue el archivo de datos de usuario.
Figura 1 Inyección de datos de usuario
- El BMS creado ejecuta automáticamente Cloud-Init o Cloudbase-Init para leer el script de datos del usuario al iniciarse.
Scripts de datos de usuario de BMS de Linux
Los scripts de datos de usuario de los BMS de Linux se personalizan mediante el uso de la arquitectura de código abierto Cloud-Init. Esta arquitectura utiliza metadatos de BMS como origen de datos para configurar automáticamente los BMS. Los tipos de script 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 de script: Un script de datos de usuario se ejecuta después del tiempo en que el estado del BMS de destino cambia a Running y antes del tiempo en que se ejecuta /etc/init.
NOTA:
De forma predeterminada, los scripts se ejecutan como usuario root.
- Tipo de script: scripts de datos de usuario y scripts de datos de Cloud-Config
Tabla 1 Tipos de script de BMS de Linux -
Script de datos de usuario
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 la fuente Yum y la clave SSH, se utilizan para configurar ciertas aplicaciones de BMS.
Formato
Un script debe iniciarse con #!, por ejemplo, #!/bin/bash y #!/usr/bin/env python.
Cuando el BMS se inicia por primera vez, el script 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.
Restricción
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 el BMS por primera vez.
La frecuencia de ejecución varía dependiendo de las aplicaciones instaladas en el BMS.
- ¿Cómo puedo ver los datos de usuario inyectados en un BMS de Linux?
- Inicie sesión en el BMS.
- Ejecute el siguiente comando para ver los datos de usuario como root de usuario:
curl http://169.254.169.254/openstack/latest/user_data
- Ejemplos
Esta sección describe cómo inyectar scripts en diferentes formatos en BMS de Linux y ver resultados de ejecución de scripts.
Ejemplo 1: Inyectar un script de datos de usuario.
Al crear un BMS, establezca User Data en As Text e introduzca el contenido del script de datos del usuario.
#!/bin/bash echo "Hello, the time is now $(date -R)" | tee /root/output.txt
Una vez creado el BMS, inícielo y ejecute 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: Inyectar un script de datos de Cloud-Config.
Al crear un BMS, establezca User Data en As Text e introduzca el contenido del script de datos del usuario.
#cloud-config bootcmd: - echo 192.168.1.130 us.archive.ubuntu.com >> /etc/hosts
Una vez creado el BMS, inícielo y ejecute el comando cat /etc/hosts para comprobar el resultado de la ejecución del script.
Figura 2 Consulta del resultado de la ejecución
Scripts de datos de usuario de BMS de Windows
Los scripts de datos de usuario de los BMS de Windows se personalizan mediante la arquitectura Cloudbase-Init de código abierto. Esta arquitectura utiliza metadatos de BMS como origen de datos para inicializar y configurar automáticamente los BMS. Los tipos de script 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: scripts de programa de procesamiento por lotes y scripts de PowerShell
Tabla 2 Tipos de scripts de BMS de Windows -
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.
Restricción
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 inyectados en un BMS de Windows?
- Ejemplos
Esta sección describe cómo inyectar secuencias de comandos en diferentes formatos en BMS de Windows y ver los resultados de ejecución de secuencias de comandos.
Ejemplo 1: Inyectar un script de programa de procesamiento por lotes.
Al crear un BMS, establezca User Data en As Text e introduzca el contenido del script de datos del usuario.
rem cmd echo "Hello, BAT Test" > C:\1111.txt
Una vez creado el BMS, inícielo y compruebe el resultado de la ejecución del script. En este ejemplo, se agrega un archivo de texto denominado 1111 al disco C:\.
Figura 3 Archivo de texto 1111.txtPara ver los datos de usuario inyectados en el BMS de Windows, inicie sesión en http://169.254.169.254/openstack/latest/user_data.
Figura 4 Consulta de datos de usuario en 1111.txtEjemplo 2: Inyectar un script de PowerShell.
Al crear un BMS, establezca User Data en As Text e introduzca el contenido del script de datos del usuario.
#ps1 echo "Hello, Powershell Test" > C:\aaaa.txt
Una vez creado el BMS, inícielo y compruebe el resultado de la ejecución del script. En este ejemplo, se agrega un archivo de texto denominado aaaa al disco C:\.
Figura 5 Archivo de texto aaaa.txtPara ver los datos de usuario inyectados en el BMS de Windows, inicie sesión en http://169.254.169.254/openstack/latest/user_data.
Figura 6 Consulta de datos de usuario en aaaa.txt
Caso 1
Este caso ilustra cómo inyectar datos de usuario para simplificar la configuración de BMS.
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 del BMS. Después de crear el BMS, vim se configura automáticamente en función de sus requisitos. Esto ayuda a mejorar la eficiencia de la configuración de BMS, especialmente cuando está creando BMS por un lote.
El script es el siguiente:
#cloud-config write_files: - path: /root/.vimrc content: | syntax on set tabstop=4 set number
Caso 2
Este caso ilustra cómo inyectar datos de usuario para restablecer la contraseña para iniciar sesión en un BMS de Linux.
En este ejemplo, la contraseña del usuario root se restablecerá a "******".
La nueva contraseña debe cumplir con los requisitos de complejidad de contraseña enumerados en Tabla 3.
Parámetro |
Requerimientos |
Valor de ejemplo |
---|---|---|
Contraseña |
|
Test12$@ |
El script es el siguiente (contener la sangría en el siguiente script):
#cloud-config chpasswd: list: | root:****** expire: False
Después de crear el BMS, puede usar la nueva contraseña 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 el BMS por primera vez.
Caso 3
Este caso ilustra cómo inyectar datos de usuario para crear un usuario en un BMS de Windows y establecer una 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.
Parámetro |
Requerimientos |
Valor de ejemplo |
---|---|---|
Contraseña |
|
Test12$@ |
El script es el siguiente:
rem cmd net user abc ****** /add net localgroup administrators abc /add
Después de crear el BMS, puede usar su nombre de usuario y contraseña para iniciar sesión en él.
Caso 4
Este caso ilustra cómo inyectar datos de usuario para actualizar paquetes de software del sistema para un BMS de Linux y habilitar el servicio HTTPd. Después de inyectar los datos de usuario, puede utilizar el servicio HTTPd.
El script es el siguiente:
#!/bin/bash yum update -y service httpd start chkconfig httpd on
Caso 5
Este caso ilustra cómo inyectar datos de usuario para asignar el permiso root de usuario para iniciar sesión remotamente en un BMS de Linux. Después de inyectar el archivo, puede iniciar sesión en el BMS como root de usuario en modo de autenticación de clave SSH.
El script es el siguiente:
#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