通过查看runcmd代码(/usr/lib/python2.6/site-packages/cloudinit/config/cc_runcmd.py),我注意到与其他代码相比没有指定"频率".除了脚本所做的唯一事情是保存在/ var/lib/cloud/instance/scripts/runcmd下作为shell脚本提供的脚本.
因此,如果我详细说明模块,我必须设置频率.
cloud_config_modules:
- mounts
- locale
- set-passwords
- timezone
- [ runcmd, always ]
cloud_final_modules:
- scripts-per-once
- scripts-per-boot
- scripts-per-instance
- [ scripts-user, always ]
- ssh-authkey-fingerprints
Run Code Online (Sandbox Code Playgroud)
并且由这个特定的脚本创建的脚本可以由'scripts-user'运行,所以我需要指定ie
- [ scripts-user, always ]
Run Code Online (Sandbox Code Playgroud)
使runcmd脚本工作
这样做是否正确?文档(至少是当前的0.7.7)缺乏对runcmd和用户脚本的正确解释以及如何使用它们
我也想不明白之间的所有差异的模式,一次(第一次实例启动),实例(???),总是(即我的理解),????启动(即一个存在吗?它似乎并不上班...
编辑:
好的,我在cloudinit/settings.py中找到了:
# Valid frequencies of handlers/modules
PER_INSTANCE = "once-per-instance"
PER_ALWAYS = "always"
PER_ONCE = "once"
Run Code Online (Sandbox Code Playgroud)
在我脚本旁边找到了一个解释:
[root@euca-10-254-97-216 ~]# cloud-init-per -h
Usage: cloud-init-per frequency name cmd [ arg1 [ arg2 [ ... ] ]
run cmd with arguments provided.
This utility can make it easier to use boothooks or bootcmd
on a per "once" or "always" basis.
If frequency is:
* once: run only once (do not re-run for new instance-id)
* instance: run only the first boot for a given instance-id
* always: run every boot
Run Code Online (Sandbox Code Playgroud)
但我没有发现'一次'和'实例'之间的区别.因此,如果在"一次"情况下具有新实例ID的相同图像(相当快照)将无法启动?如果'实例'它会?
我认为如果您要创建一个将用于启动更多实例的映像,那么差异很重要。
想象一下您运行 cloud-init 脚本来设置一个实例。稍后您可以创建该实例的映像,您可以从中启动更多实例。
当您从映像启动新实例时:
| 归档时间: |
|
| 查看次数: |
2233 次 |
| 最近记录: |