GNU/Linux >> Belajar Linux >  >> Linux

Skrip data pengguna tidak berjalan di AMI khusus saya, tetapi bekerja di Linux Amazon standar

User_data dijalankan hanya pada permulaan pertama. Karena gambar Anda adalah gambar khusus, saya kira itu sudah dimulai satu kali sehingga data_pengguna dinonaktifkan.

Untuk windows, dapat dilakukan dengan mencentang kotak di Ec2 Services Properties. Saat ini saya sedang mencari cara melakukannya secara otomatis di akhir pembuatan gambar kustom.

Untuk linux, saya kira mekanismenya sama, dan user_data perlu diaktifkan kembali pada gambar khusus Anda.

#cloud-boothook membuatnya berfungsi karena mengubah skrip dari user_data mekanisme ke cloud-boothook yang berjalan pada setiap permulaan.

EDIT :

Berikut adalah kode untuk mengaktifkan kembali mulai di windows menggunakan 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

(Saya tahu pertanyaan fokus linux, tapi bisa membantu orang lain ...)


Saat saya menguji, ada beberapa data bootstrap di /var/lib/cloud directory.Setelah saya membersihkan direktori itu, Data Pengguna skrip berfungsi normal.

rm -rf /var/lib/cloud/*

Saya juga menghadapi masalah yang sama di Ubuntu 16.04 hvm AMI. Saya telah menyampaikan masalah ini ke dukungan AWS tetapi tetap saja saya tidak dapat menemukan alasan/bug pasti yang memengaruhinya.

Tapi tetap saja saya punya sesuatu yang mungkin bisa membantu Anda.

Sebelum mengambil AMI, hapus direktori /var/lib/cloud (setiap kali). Kemudian saat membuat Gambar, setel ke no-reboot.

Jika hal-hal ini masih tidak berfungsi, Anda dapat mengujinya lebih lanjut dengan memaksa data pengguna berjalan secara manual. Juga tailf /var/log/cloud-init-output.log untuk status cloud-init. Itu harus diakhiri dengan sesuatu seperti modules:final untuk membuat data pengguna Anda berjalan. Seharusnya tidak macet di modules:config.

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

Saya tidak tahu apakah perintah di atas akan berfungsi di CentOS atau tidak. Saya telah mengujinya di Ubuntu.

Dalam kasus saya, saya juga telah mencoba menghapus direktori /var/lib/cloud, tetapi tetap gagal mengeksekusi data pengguna dalam skenario kami. Tetapi saya telah menemukan solusi berbeda untuk itu. Apa yang telah kami lakukan adalah membuat skrip dengan perintah di atas dan membuat skrip tersebut berjalan saat sistem melakukan booting.

Saya telah menambahkan baris di bawah ini di /etc/rc.local untuk mewujudkannya.

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

Tapi inilah tangkapannya, itu akan mengeksekusi skrip pada setiap boot sehingga akan membuat data pengguna Anda berjalan di setiap boot, seperti #cloud-boothook. Jangan khawatir, Anda bisa men-tweaknya hanya dengan menghapus force-user-data.sh itu sendiri di bagian akhir. Jadi force-user-data.sh Anda akan terlihat seperti

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

Saya akan menghargai jika seseorang dapat menjelaskan mengapa tidak dapat mengeksekusi data pengguna.


Linux
  1. Linux – Caps Lock Led Tidak Bekerja di Konsol Linux?

  2. Kali Linux Amazon EC2 AMI

  3. PYTHONPATH tidak berfungsi untuk sudo di GNU/Linux (berfungsi untuk root)

  1. Perintah Linux 'akan' tidak berfungsi

  2. Bagaimana cara menginstal Postgresql 11 di Amazon Linux AMI?

  3. Perintah tanggal Linux tidak berfungsi

  1. Linux - perintah mount mengembalikan nol/0 tetapi tidak berfungsi

  2. Apa distribusi Linux yang menjadi dasar Amazon Linux AMI?

  3. sudo tidak bekerja pada perintah tertentu