Bagaimana cara membuat skrip data pengguna EC2 dijalankan kembali saat startup?


19

Setelah cloud-init menjalankan skrip data pengguna pada boot pertama instance EC2, file state mungkin ditulis sehingga cloud-init tidak akan menjalankan skrip lagi pada reboot berikutnya. Ada kasus di mana saya ingin menghapus file status ini sehingga skrip data pengguna akan berjalan kembali. Dimana itu?

Jawaban:


24

rm /var/lib/cloud/instances/*/sem/config_scripts_user

Dikonfirmasi sedang mengerjakan:

  • CentOS 7.4
  • Ubuntu 14.04
  • Ubuntu 16.04

Demi kelengkapan, jika Anda memiliki situasi di mana Anda ingin melacak fakta / kemungkinan bahwa AMI ini [memiliki AMI induk yang ...] dan mereka semua menjalankan cloud-initdata pengguna, Anda hanya dapat menghapus semafor saat ini.

rm /var/lib/cloud/instance/sem/config_scripts_user


2
Anda tahu itu dengan cepat.
— c24w

9
@ c24w Stempel waktu itu menyesatkan. Sebenarnya saya perlu beberapa jam penelitian dan pengujian, jadi setelah saya menemukan jawabannya, saya membuat pertanyaan ini untuk membantu orang berikutnya mencari jawaban yang pasti.
— Mike

1
Saya sudah menemukan ini sejak dan tidak menyadari itu didorong untuk mengirim Q & As tipe wiki. Hargai Anda mendokumentasikan ini!
— c24w

1
Saya senang ini didorong di serverfault. Saya sudah melihatnya berkali-kali turun di SO
— jujur

1
@ flag5 Bahwa curlke layanan metadata untuk mendapatkan id instance saat ini tidak perlu karena /var/lib/cloud/instancesudah menjadi symlink ke instance saat ini di bawah /var/lib/cloud/instances. :-)
— Mike

2

Anda dapat meletakkan skrip Anda di /etc/rc.local, yang akan menjalankan skrip di setiap reboot.


/etc/rc.localtidak ada hubungannya dengan data pengguna EC2.
— Mike

@MikeConigliaro Saya ingin menggunakan data pengguna untuk membuat sesuatu berjalan pada setiap boot, jadi saya membuat skrip data pengguna menambahkannya ke /etc/rc.local.
— user253751

0

Anda juga dapat mengonfigurasi data pengguna Anda untuk dijalankan kembali pada setiap boot, alih-alih menghapus file status. Anda harus menggunakan cloud_final_modulesskrip data pengguna Anda untuk menjalankan kembali skrip data pengguna dan untuk itu Anda harus menyesuaikan uderdata agar memiliki beberapa file dalam data pengguna. Contoh file data pengguna akan seperti:

Content-Type: multipart/mixed; boundary="//"
MIME-Version: 1.0

--//
Content-Type: text/cloud-config; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment; filename="cloud-config.txt"

#cloud-config
cloud_final_modules:
- [scripts-user, always]

--//
Content-Type: text/x-shellscript; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment; filename="userdata.txt"

#!/bin/bash
/bin/echo "Hello World" >> /tmp/userdata-test.txt
--//

Ini akan membuat skrip data pengguna untuk dieksekusi pada langkah terakhir dari setiap proses boot. Di sini hanya satu baris yang bin/echo "Hello World" >> /tmp/userdata-test.txtharus dieksekusi, ganti ini dengan skrip shell Anda yang perlu dijalankan setiap kali mesin di-boot.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.