runcmdコード (/usr/lib/python2.6/site-packages/cloudinit/config/cc_runcmd.py) を見ると、他と比較して「頻度」が指定されていないことに気付きました。スクリプトが行う唯一のことのほかに、指定されたスクリプトをシェル スクリプトとして /var/lib/cloud/instance/scripts/runcmd に保存します。
したがって、モジュールを詳細に指定する場合は、頻度を設定する必要があります。
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」によって実行できるため、指定する必要があります。
- [ scripts-user, always ]
runcmd スクリプトを機能させる
そうするのは適切な方法ですか?ドキュメント (少なくとも現在の 0.7.7) には、runcmd とユーザー スクリプト、およびそれらの使用方法に関する適切な説明がありません。
私はまた、すべてのモードの違いを理解していません.1回(インスタンスの初回起動時)、インスタンス(???)、常に(私は理解しています)、????ブート(それは存在しますか?それはないようです働くために...
編集:
わかりました、cloudinit/settings.py で見つけました:
# Valid frequencies of handlers/modules
PER_INSTANCE = "once-per-instance"
PER_ALWAYS = "always"
PER_ONCE = "once"
そして、このスクリプトで説明を見つけました:
[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
しかし、「一度」と「インスタンス」の違いがわかりません。したがって、「一度」の場合に新しいインスタンス ID を持つ同じイメージ (むしろスナップショット) が開始されない場合は? 「インスタンス」の場合は?