если ты Только хотите запустить скрипт, вы можете передать скрипт напрямую как данные пользователя, вместо использования облачной конфигурации. Пока скрипт начинается с #!
, cloud-init попытается запустить его напрямую, а не интерпретировать как cloud-config.
Если вы хотите запустить и облачный конфиг, и отдельный скрипт, а другой выложил write_files
решение будет работать, вы также можете передать архив mime, состоящий из нескольких частей. Cloud-init содержит вспомогательный скрипт, облегчающий эту задачу. Скажем, у вас есть пользовательские данные в файле с именем мои-пользовательские-данные
:
#cloud-config
выполнить команду:
- echo 'test-from-cloud-config' > /var/tmp/test_from_cloud_config
И скрипт, который вы хотите запустить callecd тест.ш
:
#!/бин/баш
эхо 'test_from_script' > /var/tmp/test_from_script
Вы можете позвонить:
cloud-init devel make-mime -a test.sh:x-shellscript -a my-user-data:cloud-config > /tmp/userdata
Вы можете взять полученный файл из нескольких частей и передать его в cloud-init в качестве пользовательских данных (например, с помощью LXD):
lxc запустить ubuntu:focal multi -c user.user-data="$(cat /tmp/userdata)"
Вы можете видеть, что и облачная конфигурация, и скрипт запущены:
root@multi:~# cat /var/tmp/test_from_cloud_config
тестовая конфигурация из облака
root@multi:~# cat /var/tmp/test_from_script
test_from_script
Видеть документы cloud-init для справки.