如何禁用 cloud-init 执行用户数据

如何禁用 cloud-init 执行用户数据

我正在 EC2 中创建一个新的 AMI,并希望禁止它运行在从此 AMI 启动(或重新启动)时可能放入用户数据中的任何内容。我查看了现有的/etc/cloud/cloud.cfg/etc/cloud/cloud.cfg.d/*但没有看到启用此功能的位置(因此可能默认情况下处于启用状态)。 我该如何重新配置​​ cloud-init 以不允许此功能或者甚至允许重新启用此功能? 我怀疑我还需要禁用#cloud-config。我需要禁用整个 cloud-init 包来实现这一点吗?

编辑:

我将使用 Amazon Linux各种 AMI 中的 Ubuntu。

编辑2:

看来我需要禁用全部user-data。也许这样会更容易一些。

编辑3:

我确实希望能够user-data访问我的脚本。

答案1

这是我目前的破解方法——不是太优雅,但它有效:

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

答案2

一个更优雅的方法是创建一个名为云配置.txt/var/lib/cloud/instances/{你的实例 ID},内容如下:

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

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

相关内容