通過查看runcmd代碼(/usr/lib/python2.6/site-packages/cloudinit/config/cc_runcmd.py) 我注意到沒有指定與其他頻率相比的「頻率」。除了腳本所做的僅僅是將作爲shell腳本提供的腳本保存在/ var/lib/cloud/instance/scripts/runcmd下。如何在cloud-init中正確使用runcmd和scripts-user?
所以如果我詳細地指定模塊,我必須設置頻率。
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
,並通過這個特別的創建的腳本可以通過'腳本,用戶可以運行的,所以我需要指定即
- [ scripts-user, always ]
使RUNCMD腳本工作
是不是正確的方法這樣做?該文檔(至少當前0.7.7)缺乏runcmd和用戶腳本的正確解釋,以及它們如何可以利用
我也不明白所有模式之間的差異,一次(第一次實例引導),實例(???),總是(即我的理解),????啓動(即一個存在,似乎不工作...
編輯:
好吧,我已經找到cloudinit/settings.py:
# Valid frequencies of handlers/modules
PER_INSTANCE = "once-per-instance"
PER_ALWAYS = "always"
PER_ONCE = "once"
和旁邊我在這個腳本中找到了一個解釋:
[[email protected] ~]# 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
但我沒有發現'once'和'instance'之間的區別。因此,如果在「一次」情況下使用新實例ID的相同圖像(而不是快照)不會啓動?萬一'實例'它會?