Datos de usuario
Al crear una instancia de IBM Cloud® Virtual Servers for Virtual Private Cloud, puede especificar datos de usuario opcionales que realicen automáticamente tareas de configuración comunes o que ejecuten scripts. Para obtener más información sobre los datos de usuario y los nombres de usuario, consulte Acceso de IAM.
IBM Cloud VPC utiliza la tecnología Cloud-init para configurar instancias de servidores virtuales. El campo Datos de usuario de la página Nuevo servidor virtual para VPC permite a los usuarios introducir opciones de configuración personalizadas utilizando cloud-init. Cloud-init admite varios formatos para los datos de configuración, incluyendo yaml en un archivo de configuración de nube.
Puede especificar datos de configuración de nube directamente en el campo Datos de usuario, o bien puede incluir los datos de configuración de nube en un archivo de texto y especificar el nombre de archivo al crear la instancia.
Por ejemplo, si guarda los datos de configuración de nube en userdata.blob
, especifique -user-data @userdata.blob
cuando cree una instancia mediante la CLI.
Al crear una instancia de servidor virtual utilizando la imagen de IBM Hyper Protect Container Runtime, debe pasar un contrato como parte del campo Datos de usuario. Puesto que la imagen es una imagen bloqueada con el acceso SSH inhabilitado, la única forma de interactuar con la instancia es pasando el contrato.
El límite de tamaño del campo Datos de usuario (o archivo) es de 64 K bytes.
Ejemplos de datos de usuario para Linux
La cuenta de usuario predeterminada para Linux depende del sistema operativo. Para ver la lista de sistemas operativos y sus correspondientes cuentas de usuario predeterminadas, consulte Conexión a instancias de Linux: Determinación de la cuenta de usuario predeterminada.
Añadir un usuario y una clave SSH
En el ejemplo de cloud-init siguiente se muestra cómo un usuario de Linux puede añadir un usuario y proporcionarle una clave SSH autorizada. El campo Nombre tiene la clave pública que se ha añadido a ~/.ssh/authorized_keys
.
Para imágenes Linux , el tipo de clave SSH Ed25519 sólo se puede utilizar si el servidor SSH para el sistema operativo soporta este tipo de clave. Para obtener más información, consulte Iniciación a las claves SSH.
#cloud-config
users:
- name: demouser
gecos: Demo User
sudo: ALL=(ALL) NOPASSWD:ALL
groups: users, admin
ssh_import_id: None
lock_passwd: true
ssh_authorized_keys:
- <ssh public key>
En el siguiente ejemplo de script de shell se muestra cómo un usuario de Linux puede añadir una clave SSH para el usuario actual.
#!/bin/bash
echo <sshKey> > ~/.ssh/authorized_keys
Puede pegar uno de estos ejemplos directamente en el campo Datos de usuario. De esta forma, los datos de usuario están disponibles para la instancia de servidor virtual durante el suministro.
Si especifica incluir un archivo y tiene espacios que preceden al nombre del archivo, los datos no se interpretan correctamente. Compruebe que #!/bin/sh
o #!/bin/bash
son los primeros caracteres de la línea que sigue
inmediatamente a la designación de fin de archivo (<<EOF
). Los caracteres no pueden tener sangría.
Para más ejemplos e información sobre los datos de usuario de Linux, consulte Ejemplos de configuración de la nube).
Configuración de un almacenamiento de instancia de un solo disco utilizando el script cloud-config
El almacenamiento de instancia es una característica de VPC en la puede solicitar instancias de servidor virtual con un almacenamiento local rápido conectado. Para obtener más información sobre el almacenamiento de instancia, consulte Acerca del almacenamiento de instancia.
De forma predeterminada, cuando se proporciona una instancia de servidor virtual con almacenamiento de instancia y luego se inicia sesión en ese servidor por primera vez, los discos de almacenamiento de instancia no están configurados. Se
muestran como dispositivos de bloque (por ejemplo, /dev/vdb
) y necesitan que se haga lo siguiente antes de poder utilizarlos con un sistema de archivos:
- Particionar el dispositivo.
- Formatear la partición con un sistema de archivos.
- Montar el sistema de archivos.
Estas actividades también se pueden realizar automáticamente utilizando el campo Datos de usuario para suministrar la instancia virtual. El script cloud-config
define estas acciones:
- Indica al proceso de inicialización de la nube que se ejecute durante el primer arranque de su instancia virtual.
- Particiona automáticamente el dispositivo.
- Formatea la partición con un sistema de archivos
ext4
. - Monta el sistema de archivos.
No especifique el campo Datos de usuario para configurar automáticamente un disco de almacenamiento de instancia que no forme parte de la definición de instancia virtual. Si se intenta configurar automáticamente un disco de
almacenamiento de instancia que no forma parte de la definición de instancia virtual el destino sería dev/vdb device
y podría apuntar al origen de datos cloud-init, lo que dañaría las configuraciones de cloud-init como, por
ejemplo, el nombre de host y las claves ssh.
En el ejemplo siguiente se muestran datos de usuario que configuran automáticamente un disco de almacenamiento de instancia. Este ejemplo se puede utilizar con un perfil de instancia que especifique un solo disco.
#cloud-config
# Cloud-init supports simple partition and file system config.
# This user data yaml will create a full partition on the first
# virtio_blk device after the boot device, initialize ext4 on it and
# mount it on a folder matching the label.
#
disk_setup:
/dev/vdb:
table_type: 'mbr'
layout:
- 100
overwrite: false
fs_setup:
- label: /mnt/inststg1
filesystem: 'ext4'
device: /dev/vdb1
overwrite: false
runcmd:
- [ mkdir, /mnt/inststg1 ]
mounts:
- ["/dev/vdb1", "/mnt/inststg1"]
mount_default_fields: [ None, None, "auto", "defaults,nofail", "0", "2" ]
Este script configura /dev/vdb, el primer dispositivo de almacenamiento de instancia con tipo de interfaz virtio_blk disponible en la instancia virtual. Este script se puede pegar en el campo Datos de usuario o se puede importar utilizando el enlace Importar datos de usuario de la interfaz de usuario.
Este script se ha probado con una imagen en stock de Ubuntu 20.04 LTS Focal Fossa
. Aunque el script puede ser apropiado para otras imágenes personalizadas y acciones de Linux, es posible que sea necesario realizar ajustes en el
mismo.
El script cloud-config no es adecuado para servidores virtuales Windows. Si su instancia no contiene almacenamiento de instancia, no utilice este script. Podría configurar un dispositivo no deseado.
Consulte la siguiente información sobre los elementos que se encuentran en el script cloud-config:
- disk_setup: crea una única partición predeterminada que abarca todo el disco con un registro de arranque maestro. “overwrite: false” hace que se omita esta operación si el dispositivo ya está particionado.
- fs_setup: crea un sistema de archivos ext4 en la primera partición del dispositivo de bloque vdb y le asigna la etiqueta “inststg1”. Puede ajustar el tipo y la etiqueta del sistema de archivos para adaptarlos a sus necesidades. El valor "overwrite: false" impide formatear la partición si ya está formateada con un sistema de archivos.
- runcmd: crea un directorio para utilizarlo como punto de montaje a partir de ‘/’ en el sistema de archivos padre jerárquico.
- mounts: realiza el montaje del dispositivo de sistema de archivos en /inststg1. Puede cambiar el nombre de la vía de acceso del directorio aquí y bajo runcmd.
- mount_default_fields: crea una directiva de montaje permanente en el archivo /etc/fstab. Si emite un mandato de rearranque, cuando el servidor virtual se reinicia tiene el sistema de archivos de almacenamiento de instancia todavía montado.
La CLI y la API también admiten el campo Datos de usuario.
Este ejemplo de script cloud-config configura automáticamente un dispositivo de bloque de almacenamiento de instancia /dev/vdb
. Si sólo reinicias tu servidor virtual, esta configuración sigue funcionando porque la configuración
y los datos persisten. Sin embargo, si arranca un servidor virtual que se detuvo previamente, entonces el servidor virtual tiene un nuevo conjunto de discos de almacenamiento de instancia cuando arranca. Esta situación requeriría volver
a ejecutar manualmente los pasos de cloud-init. Por defecto, el script cloud-config se ejecuta sólo en el primer arranque. También puede editar la sección cloud-init del archivo cloud.config de forma que los pasos de cloud-init se ejecuten
automáticamente en cada arranque. Para ver los pasos, consulte la sección Editar la sección cloud_cloud_init_modules del archivo cloud.config para que se ejecute en cada arranque.
Configuración de una instancia de almacenamiento de dos discos mediante el script cloud-config
En el ejemplo siguiente se muestran datos de usuario que configuran automáticamente un disco de almacenamiento de instancia. Este ejemplo se puede utilizar con un perfil de instancia que especifique dos discos.
#cloud-config
# Cloud-init supports simple partition and file system config.
# This user data yaml will create a full partition on the first two
# virtio_blk devices after the boot device, initialize ext4 on them and
# mount them on new folders off of ‘/mnt/’.
#
disk_setup:
/dev/vdb:
table_type: 'mbr'
layout:
- 100
overwrite: false
/dev/vdc:
table_type: 'mbr'
layout:
- 100
overwrite: false
fs_setup:
- label: /mnt/inststg1
filesystem: 'ext4'
device: /dev/vdb1
overwrite: false
- label: /mnt/inststg2
filesystem: 'ext4'
device: /dev/vdc1
overwrite: false
runcmd:
- [ mkdir, /mnt/inststg1 ]
- [ mkdir, /mnt/inststg2 ]
mounts:
- ["/dev/vdb1", "/mnt/inststg1"]
- ["/dev/vdc1", "/mnt/inststg2"]
mount_default_fields: [ None, None, "auto", "defaults,nofail", "0", "2" ]
Este ejemplo de script de configuración de nube configura automáticamente el almacenamiento de instancia /dev/vdb
y los dispositivos de bloque dev/vdc
, y presupone un tipo de interfaz virtio_blk
para
el almacenamiento de instancia. Si sólo reinicia su servidor virtual, esta configuración sigue funcionando porque la configuración y los datos persisten.
Si arranca un servidor virtual que estaba parado, el servidor virtual tendrá un nuevo conjunto de discos de almacenamiento de instancia cuando arranque. Esta situación requiere que los pasos de cloud-init se ejecuten manualmente de nuevo. Por defecto, el script cloud-config se ejecuta sólo en el primer arranque. También puede editar la sección cloud-init del archivo cloud.config de forma que los pasos de cloud-init se ejecuten automáticamente en cada arranque.
Editar la sección cloud_cloud_init_modules del archivo cloud.config para que se ejecute en cada arranque
El script cloud-config del ejemplo anterior configura automáticamente un dispositivo de bloque de almacenamiento de instancia /dev/vdb
. Si sólo reinicias tu servidor virtual, esta configuración sigue funcionando porque la configuración
y los datos persisten. Sin embargo, si arranca un servidor virtual que estaba parado, el servidor virtual tendrá un nuevo conjunto de discos de almacenamiento de instancia cuando arranque. Esta situación requiere que los pasos de cloud-init
se ejecuten manualmente de nuevo. Por defecto, el script cloud-config se ejecuta sólo en el primer arranque.
- Necesita una instancia aprovisionada con el campo Datos de usuario que especifique los datos yaml de cloud-init del ejemplo anterior.
- Al iniciar sesión en la instancia iniciada, el sistema de archivos debe estar configurado y montado.
- No tiene otras directivas en las secciones disk_setup o mount en el yaml cloud-config que se especifiquen como datos de usuario.
Para ejecutar el script cloud-config en cada arranque sucesivo, utilice el siguiente procedimiento:
-
Edite el archivo
etc/cloud/cloud.cfg
. -
Busque la sección "
cloud_init_modules
" (Archivos de instalación de disco), que contiene los módulos disk_setup y mount. -
Cambie las líneas de los módulos disk_setup y mount a
always
. La sección queda así:# The modules that run in the 'init' stage cloud_init_modules: - migrator - seed_random - bootcmd - write-files - growpart - resizefs - [disk_setup, always] - [mounts, always] - set_hostname - update_hostname - update_etc_hosts - ca-certs - rsyslog - users-groups - ssh
-
Guarde el archivo y, a continuación, detenga e inicie la instancia. El montaje se crea automáticamente en un sistema de archivos recién particionado y formateado.
Ejemplo de datos de usuario para Windows
En el ejemplo siguiente se muestra cómo se pueden pasar datos de usuario a una instancia de Windows. Esta muestra de datos de usuario establece la zona horaria.
"user_data": "Content-Type: multipart/mixed; boundary=MIMEBOUNDARY\nMIME-Version: 1.0\n\n--MIMEBOUNDARY\nContent-Type: text/cloud-config; charset=\"us-ascii\"\nMIME-Version: 1.0\nContent-Transfer-Encoding: 7bit\nContent-Disposition: attachment; filename=\"cloud-config\"\n#cloud-config\n\nset_timezone: America/Detroit\n\n--MIMEBOUNDARY--\n"
Para más ejemplos e información sobre datos de usuario de Windows, consulte la documentación de Cloudbase-init 1.0.
Ejemplos de datos de usuario para Fedora Core OS
Los ejemplos siguientes muestran datos de usuario que se pueden pasar a una instancia de Fedora Core OS.
El inicio de sesión de usuario 'root' está inhabilitado de forma predeterminada en Fedora Core OS. En las instancias de Fedora Core OS, se puede usar el inicio de sesión de usuario 'core' para iniciar sesión.
Los datos de usuario de Fedora Core OS tienen que estar en formato de Ignition.
Utilice el ejemplo siguiente para arrancar una instancia de Fedora Core OS
ibmcloud is instance-create $NAME $VPC $ZONE $PROFILE $SUBNET --image-id $IMAGE --key-ids $SSHKEY --user-data @example.ign
Utilice el ejemplo siguiente para crear un usuario local.
-
Escriba la configuración Butane en formato YAML.
Configuración Butane
variant: fcos version: 1.4.0 passwd: users: - name: demouser
-
Utilice Butane para convertir la configuración Butane en una configuración Ignition.
Configuración Ignition
"ignition": { "version": "1.4.0" }, "passwd": { "users": [ { "name": "demouser" } ] } }
Utilice los siguientes datos de usuario de ejemplo para añadir una clave SSH para un usuario local.
-
Escriba la configuración Butane en formato YAML.
Configuración Butane
variant: fcos version: 1.4.0 passwd: users: - name: demouser ssh_authorized_keys: - <ssh public key>
-
Utilice Butane para convertir la configuración Butane en una configuración Ignition.
Configuración Ignition
"ignition": { "version": "1.4.0" }, "passwd": { "users": [ { "name": "demouser", "sshAuthorizedKeys": [ "<ssh public key>" ] } ] } }
Para obtener más información y ejemplos de datos de usuario de Fedora Core OS, consulte Documentación del proyecto Fedora.
Próximos pasos
Una vez elegido un perfil, es el momento de planificar y crear una instancia.