วิธีทำให้สคริปต์ข้อมูลผู้ใช้ EC2 ทำงานอีกครั้งเมื่อเริ่มต้น


19

หลังจาก cloud-init รันสคริปต์ข้อมูลผู้ใช้ในการบู๊ตครั้งแรกของอินสแตนซ์ EC2 ไฟล์สถานะจะถูกเขียนขึ้นเพื่อให้ cloud-init จะไม่เรียกใช้สคริปต์อีกครั้งในการรีบูตครั้งต่อไป มีบางกรณีที่ฉันต้องการลบไฟล์สถานะนี้เพื่อให้สคริปต์ข้อมูลผู้ใช้จะทำงานอีกครั้ง มันอยู่ที่ไหน?

คำตอบ:


24

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

ยืนยันการทำงานกับ:

  • CentOS 7.4
  • Ubuntu 14.04
  • Ubuntu 16.04

เพื่อความสมบูรณ์ถ้าคุณมีสถานการณ์ที่คุณสนใจติดตามความจริง / ความเป็นไปได้ที่ AMI นี้ [มีผู้ปกครอง AMI ที่ ... ] และพวกเขาทั้งหมดวิ่งcloud-initข้อมูลผู้ใช้คุณสามารถลบเพียงสัญญาณปัจจุบัน

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


2
คุณคิดออกอย่างรวดเร็ว
c24w

9
@ c24w การประทับเวลาเหล่านั้นทำให้เข้าใจผิด ที่จริงแล้วฉันใช้เวลาสองสามชั่วโมงในการวิจัยและทดสอบดังนั้นเมื่อฉันคิดออกแล้วฉันก็สร้างคำถามนี้ขึ้นมาเพื่อช่วยให้คนต่อไปมองหาคำตอบที่ชัดเจน
Mike

1
ฉันเจอสิ่งนี้มาตั้งแต่และไม่ทราบว่ามันเป็นกำลังใจที่จะโพสต์ wiki-type Q & As ขอบคุณที่คุณทำเอกสารนี้!
c24w

1
ฉันดีใจที่สิ่งนี้ได้รับการสนับสนุนในเซิร์ฟเวอร์ผิดพลาด ฉันเคยเห็นมันลงคะแนนหลายครั้งใน SO
จริงใจ

1
@ FLAG5 ที่curlจะให้บริการข้อมูลเมตาที่จะได้รับรหัสเช่นปัจจุบันไม่จำเป็นเพราะ/var/lib/cloud/instanceมีอยู่แล้ว symlink /var/lib/cloud/instancesไปเช่นปัจจุบันภายใต้ :-)
Mike

2

คุณสามารถใส่สคริปต์ของคุณใน /etc/rc.local ซึ่งจะเรียกใช้สคริปต์ในการรีบูตทุกครั้ง


/etc/rc.localไม่เกี่ยวข้องกับข้อมูลผู้ใช้ EC2
Mike

@MikeConigliaro ฉันต้องการใช้ข้อมูลผู้ใช้เพื่อทำให้บางสิ่งทำงานในการบู๊ตทุกครั้งดังนั้นฉันจึงสร้างสคริปต์ข้อมูลผู้ใช้ต่อท้ายไฟล์ /etc/rc.local
user253751

0

คุณยังสามารถกำหนดค่าข้อมูลผู้ใช้ของคุณให้รันซ้ำในทุกการบู๊ตแทนที่จะลบไฟล์สถานะ คุณต้องใช้cloud_final_modulesในสคริปต์ userdata ของคุณเพื่อเรียกใช้สคริปต์ userdata อีกครั้งและเพื่อให้คุณต้องปรับแต่ง uderdata เพื่อให้มีไฟล์ miultiple ใน userdata ตัวอย่างไฟล์ userdata จะเป็นเช่น:

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

สิ่งนี้จะทำให้สคริปต์ userdata ดำเนินการในขั้นตอนสุดท้ายของทุกกระบวนการบูต ที่นี่มีเพียงบรรทัดเดียวเท่านั้นbin/echo "Hello World" >> /tmp/userdata-test.txtที่จะดำเนินการแทนที่ด้วยเชลล์สคริปต์ของคุณที่จะต้องดำเนินการทุกครั้งที่บูตเครื่อง

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.