GNU/Linux >> Tutoriales Linux >  >> Linux

Los scripts de datos de usuario no se ejecutan en mi AMI personalizada, pero funcionan en Amazon Linux estándar

User_data se ejecuta solo en el primer inicio. Como su imagen es personalizada, supongo que ya se inició una vez y, por lo tanto, los datos de usuario están desactivados.

Para Windows, se puede hacer marcando una casilla en Propiedades de Ec2 Services. Estoy buscando en este momento cómo hacerlo de forma automatizada al final de la creación de la imagen personalizada.

Para Linux, supongo que el mecanismo es el mismo, y los datos de usuario deben reactivarse en su imagen personalizada.

El #cloud-boothook hacer que funcione porque cambia el script de un user_data mecanismo a un gancho de arranque en la nube que se ejecuta en cada inicio.

EDITAR:

Aquí está el código para reactivar el inicio en Windows usando PowerShell:

$configFile = "C:\\Program Files\\Amazon\\Ec2ConfigService\\Settings\\Config.xml"
[xml] $xdoc = get-content $configFile
$xdoc.SelectNodes("//Plugin") |?{ $_.Name -eq "Ec2HandleUserData"} |%{ $_.State = "Enabled" }
$xdoc.SelectNodes("//Plugin") |?{ $_.Name -eq "Ec2SetComputerName"} |%{ $_.State = "Enabled" }
$xdoc.OuterXml | Out-File -Encoding UTF8 $configFile

$configFile = "C:\\Program Files\\Amazon\\Ec2ConfigService\\Settings\\BundleConfig.xml"
[xml] $xdoc = get-content $configFile
$xdoc.SelectNodes("//Property") |?{ $_.Name -eq "AutoSysprep"} |%{ $_.Value = "Yes" }
$xdoc.OuterXml | Out-File -Encoding UTF8 $configFile

(Conozco la pregunta focus linux, pero podría ayudar a otros...)


Como probé, había algunos datos de arranque en /var/lib/cloud directorio.Después de borrar ese directorio, Datos de usuario el script funcionó normalmente.

rm -rf /var/lib/cloud/*

También me he enfrentado al mismo problema en Ubuntu 16.04 hvm AMI. Le planteé el problema al soporte de AWS, pero aún no pude encontrar el motivo/error exacto que lo afecta.

Pero todavía tengo algo que podría ayudarte.

Antes de tomar AMI, elimine el directorio /var/lib/cloud (cada vez). Luego, mientras crea la imagen, configúrela para no reiniciar.

Si estas cosas aún no funcionan, puede probarlas más forzando la ejecución manual de los datos del usuario. También tailf /var/log/cloud-init-output.log para el estado de inicialización de la nube. Debería terminar con algo como módulos:final para hacer que sus datos de usuario se ejecuten. No debería atascarse en módulos:config.

sudo rm -rf /var/lib/cloud/* sudo cloud-init init sudo cloud-init modules -m final

No tengo mucha idea de si los comandos anteriores funcionarán en CentOS o no. Lo he probado en Ubuntu.

En mi caso, también intenté eliminar el directorio /var/lib/cloud, pero aún así no pudo ejecutar los datos del usuario en nuestro escenario. Pero se me ocurrió una solución diferente para ello. Lo que hicimos fue crear un script con los comandos anteriores y hacer que ese script se ejecute mientras se inicia el sistema.

He agregado la siguiente línea en /etc/rc.local para que esto suceda.

sudo bash /home/ubuntu/force-user-data.sh || exit 1

Pero aquí está el problema, ejecutará el script en cada inicio, lo que hará que sus datos de usuario se ejecuten en cada inicio, al igual que #cloud-boothook. No se preocupe, puede modificarlo simplemente eliminando force-user-data.sh al final. Entonces, su force-user-data.sh se verá como

#!/bin/bash sudo rm -rf /var/lib/cloud/* sudo cloud-init init sudo cloud-init modules -m final sudo rm -f /home/ubuntu/force-user-data.sh exit 0

Apreciaré si alguien puede aclarar por qué no puede ejecutar los datos de usuario.


Linux
  1. Linux:¿el bloqueo de mayúsculas no funciona en la consola de Linux?

  2. Linux:¿los auriculares no funcionan en Linux Mint 18?

  3. Kali Linux Amazon EC2 AMI

  4. PYTHONPATH no funciona para sudo en GNU/Linux (funciona para root)

  5. La instalación/actualización de Composer no funciona

Arreglar el clic del panel táctil que no funciona en Linux Mint

¿Linux cómo copiar pero no sobrescribir?

fflush() no funciona en Linux

AMI de Amazon Linux frente a Ubuntu

El comando de fecha de Linux no funciona

comando de linux encontrado pero no encontrado al usar sudo