GNU/Linux >> Linux Esercitazione >  >> Linux

Gli script dei dati utente non sono in esecuzione sulla mia AMI personalizzata, ma funzionano in Amazon Linux standard

User_data viene eseguito solo al primo avvio. Poiché la tua immagine è personalizzata, suppongo che sia già stata avviata una volta e quindi user_data è disattivato.

Per Windows, può essere fatto selezionando una casella nelle proprietà dei servizi Ec2. Sto cercando al momento come farlo in modo automatizzato alla fine della creazione dell'immagine personalizzata.

Per Linux, suppongo che il meccanismo sia lo stesso e che user_data debba essere riattivato sulla tua immagine personalizzata.

Il #cloud-boothook farlo funzionare perché cambia lo script da un user_data meccanismo a un cloud-boothook che viene eseguito a ogni avvio.

MODIFICA :

Ecco il codice per riattivare l'avvio su Windows utilizzando 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

(Conosco la domanda focus linux, ma potrebbe aiutare altri...)


Durante il test, c'erano alcuni dati di bootstrap in /var/lib/cloud directory.Dopo aver cancellato quella directory, User Data lo script ha funzionato normalmente.

rm -rf /var/lib/cloud/*

Ho anche affrontato lo stesso problema su Ubuntu 16.04 hvm AMI. Ho sollevato il problema al supporto AWS ma ancora non sono riuscito a trovare il motivo/bug esatto che lo riguarda.

Ma ho ancora qualcosa che potrebbe aiutarti.

Prima di prendere l'AMI rimuovere la directory /var/lib/cloud (ogni volta). Quindi durante la creazione dell'immagine, impostala su no-reboot.

Se queste cose continuano a non funzionare, puoi testarlo ulteriormente forzando l'esecuzione manuale dei dati utente. Anche tailf /var/log/cloud-init-output.log per lo stato cloud-init. Dovrebbe terminare con qualcosa di simile a modules:final per far funzionare i tuoi dati utente. Non dovrebbe bloccarsi su modules:config.

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

Non ho molta idea se i comandi precedenti funzioneranno o meno su CentOS. L'ho testato su Ubuntu.

Nel mio caso, ho anche provato a rimuovere la directory /var/lib/cloud, ma ancora non è riuscito a eseguire i dati utente nel nostro scenario. Ma ho trovato una soluzione diversa per questo. Quello che abbiamo fatto è stato creare uno script con i comandi precedenti e fare in modo che lo script venga eseguito all'avvio del sistema.

Ho aggiunto sotto la riga in /etc/rc.local per farlo accadere.

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

Ma ecco il trucco, eseguirà lo script ad ogni avvio in modo che i tuoi dati utente vengano eseguiti ad ogni singolo avvio, proprio come #cloud-boothook. Nessun problema, puoi semplicemente modificarlo semplicemente rimuovendo lo stesso force-user-data.sh alla fine. Quindi il tuo force-user-data.sh sarà simile a

#!/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

Apprezzerò se qualcuno può chiarire perché non è in grado di eseguire i dati utente.


Linux
  1. Linux:il led Caps Lock non funziona su console Linux?

  2. Kali Linux Amazon EC2 AMI

  3. PYTHONPATH non funziona per sudo su GNU/Linux (funziona per root)

  4. Installazione/aggiornamento del compositore non funzionante

  5. AMI Amazon Linux vs Ubuntu

Correggi il touchpad Fare clic su Non funziona in Linux Mint

Come installare Postgresql 11 nell'AMI Amazon Linux?

Il comando data di Linux non funziona

sudo -i ma mantieni la directory di lavoro corrente

Su quale distribuzione Linux si basa l'AMI Amazon Linux?

sudo non funziona su alcuni comandi