Amazon-Ec2

如何通過 cloud-init 禁用執行使用者數據

  • June 14, 2019

我正在 EC2 中創建一個新的 AMI,並希望禁用它執行從該 AMI 啟動(或重新啟動)時可能放入使用者數據的任何內容。我查看了現有的/etc/cloud/cloud.cfg/etc/cloud/cloud.cfg.d/*但沒有看到它在哪裡啟用(所以預設情況下它可能是打開的)。 如何重新配置​​ cloud-init 以不允許這樣做,甚至允許重新啟用它? 我懷疑我還需要禁用#cloud-config. 我是否需要禁用整個 cloud-init 包才能實現這一點?

編輯:

我將在各種 AMI中使用 Amazon Linux和Ubuntu。

編輯2:

看來我需要禁用所有. user-data也許這會更容易。

編輯3:

我確實希望能夠user-data我的腳本中訪問。

這是我目前的 hack——不太優雅,但它有效:

patch /usr/lib/python2.7/dist-packages/cloudinit/stages.py <<EOF
@@ -469,7 +469,6 @@
    def consume_data(self, frequency=PER_INSTANCE):
        # Consume the userdata first, because we need want to let the part
        # handlers run first (for merging stuff)
-        self._consume_userdata(frequency)
        self._consume_vendordata(frequency)

        # Perform post-consumption adjustments so that
EOF

更優雅的方法是在**/var/lib/cloud/instances/{your-instance-id}中創建一個名為cloud-config.txt**的文件,其內容如下:

#cloud-config   
# from 1 files
# cloud-config.txt

--- cloud_final_modules:
-   - scripts-user
   - never 
...

引用自:https://serverfault.com/questions/717219