6

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 を持つ同じイメージ (むしろスナップショット) が開始されない場合は? 「インスタンス」の場合は?

4

1 に答える 1

2

より多くのインスタンスを起動するために使用されるイメージを作成している場合、違いは重要だと思います.

インスタンスを設定するために cloud-init スクリプトを実行するとします。後で、そのインスタンスのイメージを作成し、そこからさらにインスタンスを起動できます。

イメージから新しいインスタンスを開始する場合:

  • 頻度が「1 回」のスクリプトは再度実行されません
  • 頻度が「インスタンス」のスクリプトは最初の起動時に実行され、そのインスタンスの存続期間中は二度と実行されません
  • 頻度が「常に」のスクリプトは、起動のたびに実行されます
于 2016-11-11T14:40:16.170 に答える