Puncte:2

Cum transmit o configurație cloud-init când creez un container LXD?

drapel ck

Am citit documentația LXD și blogurile și răspunsurile de schimb de stive care spun că LXD ar trebui să aibă un fel de sintaxă init care vă permite să transmiteți date de configurare cloud către containerele dvs. pe măsură ce sunt create, dar niciunul dintre numeroasele exemple au lucrat pentru mine.Am încercat să urmez exemple care au configurat un profil, exemple care transmit date în utilizare --config, exemple care trec date yaml direct în și exemple care setează datele după init, dar înainte de a începe. Nimic nu a funcționat. Lipez ceea ce am în prezent... Poate cineva să-mi spună, vă rog, ce greșesc și cum să o repar?

Cel mai de bază exemplu la care mă pot gândi:

lxc șterge -f x

cat << EOF >config.yml
#cloud-config
ieșire: {toate: '| tee -a /var/log/my-cloud-init-output.log'}
package_update: adevărat
package_upgrade: adevărat
package_reboot_if_required: adevărat
pachete:
  - copac
runcmd:
  - atingeți /run/cloud-config-did-run
EOF

lxc lansează ubuntu: x --config=user.user-data="$(cat config.yml)"
somn 5
lxc exec x -- bash -c "ls /run"
lxc exec x -- bash -c "arborele /etc"

Acest lucru ar trebui să iasă la /var/log/my-cloud-init-output.log, instalați arborele și, de asemenea, faceți un fișier gol în /run. Ieșirea către /var/log/my-cloud-init-output.log funcționează, dar nimic altceva nu funcționează. Jurnalele nu arată nimic special.

drapel ck
Da, am încercat profiluri, dar nici asta nu a funcționat (directivele nu rulează niciodată). Caut doar CEVA, Orice lucru care funcționează din nou, astfel încât să am o bază de la care să lucrez.
drapel ck
Blogul respectiv este de fapt cel pe care l-am urmărit când încercam să folosesc profiluri.
drapel ck
Literal, tot ceea ce vreau este să lansez un container ubuntu și să am câteva pachete suplimentare instalate. Nu am nevoie de schimbări dinamice (nici măcar nu sunt sigur ce este). Am nevoie doar ca rezultatul final să fie un container ubuntu standard + niște pachete instalate (și nu trebuie să mă conectez manual și să instalez totul).
Puncte:2
drapel th

Se pare că trebuie să așteptați mai mult. Din moment ce le ai pe amândouă pachet_actualizare și upgrade_pachet specificat ca fiind adevărat, în esență ești alergat actualizare apt-get; apt-get upgrade (ceea ce poate dura mai mult de 5 secunde) înainte ca arborele să poată fi instalat sau să se execute runcmd.

Comenzile tale exacte funcționează pentru mine dacă înlocuiesc somn 5 cu

lxc exec x -- bash -c "starea cloud-init --wait"
sleep 2 # din cauza `package_reboot_if_required: true`
user535733 avatar
drapel cn
+5 dacă aș putea. Am avut *exact aceeași problemă* (nu aștept ca cloud-init să se finalizeze) acum câteva luni, dar nu am reușit să o recunosc în întrebare. Felicitari pentru munca de detectiv!
drapel ck
Hmm interesant... Când înlocuiesc acele comenzi, primesc un ecran plin de puncte, deoarece așteaptă pentru totdeauna (am renunțat după 15 minute). Chiar și eliminarea totul, dar comanda tactilă nu funcționează. Și acest lucru eșuează pe două sisteme separate (NixOS care rulează LXD 2.40 și Ubuntu care rulează 2.41).
drapel th
Ar trebui să puteți `lxc shell x` în container și să vedeți ce se întâmplă. `systemd-analyze critical-chain` ar trebui să se plângă dacă ceva blochează boot-ul. Dacă nu, `/var/log/cloud-init.log` ar trebui să indice orice defecțiuni specifice cloud-init.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.