Как правильно использовать runcmd и scripts-user в cloud-init?

Посмотрев на код 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 и пользовательских скриптов и того, как их можно использовать.

Я также не понимаю разницы между всеми режимами, один раз (первая загрузка экземпляра), экземпляр (???), всегда (насколько я понимаю), загрузка ???? (тот существует? Не похоже работать...

РЕДАКТИРОВАТЬ:

хорошо, я нашел в 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

Но я не улавливаю разницы между «один раз» и «экземпляр». Итак, если то же изображение (скорее, снимок) с новым идентификатором экземпляра в случае «один раз» не запустится? в случае «экземпляра» это будет?


person mastier    schedule 12.11.2015    source источник


Ответы (1)


Я думаю, разница имеет значение, если вы создаете изображение, которое будет использоваться для запуска большего количества экземпляров.

Представьте, что вы запускаете сценарии облачной инициализации для установки экземпляра. Позже вы создадите образ этого экземпляра, из которого сможете запускать другие экземпляры.

Когда вы запускаете новый экземпляр с изображения:

  • скрипты с частотой «один раз» больше не запускаются
  • скрипты с частотой «экземпляр» будут запускаться при первой загрузке и никогда больше за время существования этого экземпляра
  • скрипты с частотой «всегда» будут запускаться при каждой загрузке
person Iain Samuel McLean Elder    schedule 11.11.2016