daca tu numai doriți să rulați un script, puteți transmite scriptul direct ca userdata, în loc să utilizați un cloud-config. Atâta timp cât scenariul începe cu #!
, cloud-init va încerca să-l ruleze direct, mai degrabă decât să-l interpreteze ca un cloud-config.
Dacă doriți să rulați atât cloud-config, cât și un script separat, în timp ce celălalt a postat scrie_fișiere
soluția va funcționa, puteți trece și o arhivă mime cu mai multe părți. Cloud-init conține un script de ajutor pentru a face acest lucru puțin mai ușor. Să presupunem că aveți date utilizator într-un fișier numit datele-meu-utilizator
:
#cloud-config
runcmd:
- echo 'test-from-cloud-config' > /var/tmp/test_from_cloud_config
Și un script pe care ai vrea să-l rulezi, numită test.sh
:
#!/bin/bash
echo 'test_from_script' > /var/tmp/test_from_script
Ai putea suna:
cloud-init devel make-mime -a test.sh:x-shellscript -a my-user-data:cloud-config > /tmp/userdata
Puteți lua fișierul cu mai multe părți rezultat și îl puteți transmite către cloud-init ca date utilizator (de exemplu, folosind LXD):
lxc lansează ubuntu:focal multi -c user.user-data="$(cat /tmp/userdata)"
Puteți vedea că atât cloud-config, cât și scriptul au rulat:
root@multi:~# cat /var/tmp/test_from_cloud_config
test-din-cloud-config
root@multi:~# cat /var/tmp/test_from_script
test_din_script
Vedea documentele cloud-init pentru trimitere.