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 2025-02-18 GMT+08:00

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

  1. 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.
  2. 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
  3. 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.

    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?
    1. Inicie sesión en el BMS.
    2. 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?
    1. Inicie sesión en el BMS.
    2. Ingrese la siguiente URL en el cuadro de dirección de un navegador y vea los datos de usuario inyectados:

      http://169.254.169.254/openstack/latest/user_data

  • 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.txt

    Para 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.txt

    Ejemplo 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.txt

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

Tabla 3 Requerimientos de contraseña

Parámetro

Requerimientos

Valor de ejemplo

Contraseña

  • Consta de 8 a 26 caracteres.
  • Debe contener al menos tres de los siguientes tipos de caracteres:
    • Letras en mayúscula
    • Letras en minúscula
    • Dígitos
    • Caracteres especiales !@$%^-_=+[]{}:,./?
  • No puede contener el nombre de usuario ni el nombre de usuario escrito al revés.
  • No puede contener más de dos caracteres en la misma secuencia que aparecen en el nombre de usuario. (Este requisito solo se aplica a los BMS de Windows.)

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.

Tabla 4 Requerimientos de contraseña

Parámetro

Requerimientos

Valor de ejemplo

Contraseña

  • Consta de 8 a 26 caracteres.
  • Debe contener al menos tres de los siguientes tipos de caracteres:
    • Letras en mayúscula
    • Letras en minúscula
    • Dígitos
    • Caracteres especiales !@$%^-_=+[]{}:,./?
  • No puede contener el nombre de usuario ni el nombre de usuario escrito al revés.
  • No puede contener más de dos caracteres en la misma secuencia que aparecen en el nombre de usuario. (Este requisito solo se aplica a los BMS de Windows.)

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

Enlaces útiles

Para obtener más información sobre los casos de inyección de datos de usuario, visite el sitio web oficial de Cloud-init/Cloudbase-init: