Fórumok
Van egy proxmox, ansible.
Ansible playbook-kal tudok konténert csinálni, oké.
Tudok megadott konténerbe mondjuk apache-ot installálni, oké.
Az lenne a feladat hogy csináljon egy új konténert majd ebbe az új konténerbe dobja bele az apache-ot.
Ezt egyelőre nem látom át, tudna valaki segíteni?
Hozzászólások
Ansible playbook-kal tudok konténert csinálni, oké.
Tudok megadott konténerbe mondjuk apache-ot installálni, oké.
Futtasd egymás után őket :)
Ha az új konténer kéne a proxmoxtól, használj proxmox dynamic inventoryt.
Igen, éppen ezt a dynamic inventory-t nézem, még nem látom, hogy az új konténereknek honnan lesznek rolejai.
--
Gábriel Ákos
Tehát:
- megcsinálom az új konténert
- majd berakok egy listenert ami elkap egy eventet hogy a konténer már meg van csinálva
- aztán rámegyek a konténerre
Más:
- a dynamic inventory-ból megkapom az összes gépet, szuper.
Mondjuk naming convention alapján szedem szét őket role-okra?
Tehát mondjuk web1...web9 a webserver, app1...app9 az alkalmazás, db1...db9 az adatbázis?
Erre van valami okosabb megoldás?
Vagy ennyire nem érdemes túlszofisztikálni?
--
Gábriel Ákos
Nem tudom, hogy ez az inventory be tudja-e host groupokba sorolni a konténerjeid, mert általában rolet a legegyszerűbb egy groupra rátenni (hosts: group_name a playbookban), bár ahogy írtad, web* meg app* is lehet ott.
" általában rolet a legegyszerűbb egy groupra rátenni (hosts: group_name a playbookban)"
ezt nem értem.
a playbookban ez a sor azt adja meg szerintem, hogy az alatta levő taskokat melyik role-al rendelkező hostok hajtsák végre.
a hostokat groupokba az inventory file-ban rendeled.
vagy arra gondolsz hogy web* -ot írok be a playbookba és úgy is hívom a gépet?
de akkor az a baj h egy géphez csak egy role (és az all) rendelhető.
--
Gábriel Ákos
szorri most látom hogy keveredett eddig nálam a group meg a role.
--
Gábriel Ákos
Nem egy nagy kaland:
És ha lennének hostgroupok, akkor web* helyett lehetne írni a group nevét.
miert nem Dockerfile-lal oldod meg?
--
t-systems-es it architect allast keres. Jelige: csak webshopot ne kelljen...
Nem nagyon ismerem a dockert, de eddigi ismereteim alapján az inkább development környezetekhez alkalmas.
Nem is látom benne azt a kód-újrahasznosítást mint az ansible-ban.
Ja és meglevő gépeket ansible -vel be lehet húzni automatizálás alá, a dockerizálás az komplett újrahúzást is jelent.
--
Gábriel Ákos
> de eddigi ismereteim alapján az inkább development környezetekhez alkalmas.
A Paypal asszem 100k Docker kontenert futtat production-ben.
----------------------
while (!sleep) sheep++;
valoban jo development kornyezethez is, de azert elesben is hasznaljak, ld. a felettem levo kommentet is.
Nem is látom benne azt a kód-újrahasznosítást mint az ansible-ban.
ez nem csoda, mert a dockerfile nem kod (meg ha tehetsz bele shell magick-et is), inkabb egy leiro, hogy a docker hogyan rakja ossze az image-et. A komplett ujrahuzas, felteve, hogy valoban kb. a 0-rol tortenik, sem kene, hogy showstopper legyen...
--
t-systems-es it architect allast keres. Jelige: csak webshopot ne kelljen...
Lehet félreértem, de az Ansible arra kell hogy a konténerekbe felepakolj cuccokat miután online vannak? Az úgy nem oké.
Ha már egyszer elindult a konténer akkor oda file-t nem teszünk, hiszen ha újraindul akkor az már nem lesz ott.
Ha konténerezni akarsz akkor a következők kellenek:
Terv (application architecture diagram)
Cluster (Docker Swarm/Kubernetes), olvasd el a doksikat aztán döntsd el hogy melyik kell.
Megépíted a konténer image-t Dockerfile-val, majd push a registrybe. Ez természetesen host-role alapon működik, mindegyikből csinálsz egyet.
Cluster policy: X gépen ez és ez fusson (affinity-vel), Y gépen meg amaz.
-
Cluster nem KELL.
Félreérted, mivel a proxmox LXC konténereket hoz létre.
A leírás alapján lehet, hogy egy sima Compose is jó lehet?
A topic alapján Kubernetes-t ajánlani sztem kicsit túlzás.
♲♻♲
Kicsivel lejjebb 9 apache és ugyanannyi DB server van említve, itt azért már el kell gondolkodni azon hogy ezek az erőforrások hogyan lesznek megfelelően kezelve (nyilván nem 100 vagy 1000 host, de elméletileg lehetne).
Lehet jó lenne a compose, de ha kiveszünk egy hostot aztán meg hozzáadunk mondjuk ötöt (mondjuk templateből, meg mert épp olyanunk van) akkor kicsit kacifántosabb rendezni a helyzetet.
Kubernetest azért javasoltam mert van szép dashboardja és ez segíthet megérteni a dolgokat (vagy épp összekuszálni).
Docker Swarm-ot meg azért mert konkrétan 2 parancs kiadásával indulásra kész, aztán már csak a hálózattal kell "hülyéskedni", hogy az jó is legyen.
Bár igaz hogy az eredeti felvetésben nem volt szó monitoringról, de azért javallott elgondolkodni azon hogy ez milyen megoldással lesz összehozva. Nyilván annak is valamiféle konténerben kellene futnia ha már minden ott van.
-
big like
eegen és itt jön a dolog financiális/infra adottságok oldala.
lehetne ugyanezt a feladatot kubernetes-sel megoldani, de akkor két utat látok:
- beteszünk mindent a google-ba és fizetünk mint a köles
- veszünk plusz hardvert, felépítjük azon a saját kubernetes infránkat és futtatunk ott
ezért maradtunk a proxmox lxc konténereknél és az ansible-nél
a monitoring is egy szép, megoldandó feladat, zabbix-szal szerintem meg fogom tudni csinálni
--
Gábriel Ákos
Kubernetesen nem fogsz LXD-t futtatni egyelore(?).
Viszont vmi clusterezest epp most adnak hozza.
Meggyőztél, a 9 db + 9 app szerverről lemaradtam.
♲♻♲
En a Kubernetest javasolnam neked.
Ez ilyen pavlovi reflex, ha meghallja valaki azt a szót, hogy konténer, egyből rávágja, hogy Docker vagy Kubernetes?
Nem, semmi ilyen nincs benne. Ugy tunt, hogy a kerdezo nincs eppen a topon a temaban, javasoltam neki, hogy viszonylag kevesebb tudassal mivel tudna elorebb lepni.
Ha mar kerdesek, ha valamire kivancsi vagy, felteheted a kerdesed mindenfele negativ fennhang nelkul is. Ha eleve megkerdojelezed mas tanacsat ugy hogy tudnal a hattererol, akkor szinten negativ hangnemben fog folyni a tovabbi kommunikacio. Meg amugy is, minek kell az ilyen?
Ha így kezdődik egy kérdés:
Van egy proxmox, ansible.
És erre valaki bevág egy teljesen más dolgot, semmi konkrét javaslattal, hogy ez hogyan is oldaná meg a problémáját, akkor csak azt feltételeztem, hogy write-only módban van. Kevesebb tudással Kubernetest telepíteni, majd teljesen átalakítani az eddigi rendszerét, azt azért megnézném. És itt ugye a hol tárolja a DB a fájljait is erős megfontolást igényel.
Mintha valaki kérdezne a síelésről, erre a válasz az lenne, hogy a snowboardot javaslom.
Ez engem is nagyon érdekelne. Ha sikerül összehozni kitehetnél a playbookokat.
Még nem jutottam oda, hogy elkezdjem a munkát, de pár hónapon belül ansible-el meg kellene oldjam LXD konténerek telepítését és telepítés után a belső szolgáltatások menedzsmentjét.
Ez kb ugyanaz amit te is csinálsz, csak te lxc konténerekkel dolgozol.
http://docs.ansible.com/ansible/latest/lxd_container_module.html
Mondjuk nekem nem mukodik igy, de nekem sose semmi nem ugy mukodik, mint a dokumentacioban:)
Sajnos ez így senkinek sem működik szerintem, mivel létrejön egy sima konténer, amiben semmi nincs beállítva.
Az ansible a szokásos módon próbál a konténerbe belépni (ssh), de ahhoz kellene hálózat és publikus kulcs.
Tehát valahogy úgy kellene telepíteni a konténert, hogy ez a két alapdolog be legyen rajta állítva.
Ezt a config paraméterrel valahogy meg lehet csinálni, de még nem jutottam el odáig, hogy rájöjjek, hogy.
Valahogy a témanyitónak is így kell eljárnia.
Ha tudsz konténert csinálni, akkor úgy kell megcsináld, hogy legyen benne hálózat és publikus kulcs, és utána beletehetsz akármit.
Valahogy így képzelem el:
# An example for creating a Ubuntu container and install apache2
- hosts: valami
tasks:
- name: Create a started container
lxc_container:
name: mycontainer
state: started
template: ubuntu
template_options: --release xenial
container_config:
- name: check apache2 is installed in container
delegate_to: mycontainer
raw: dpkg -s apache2
register: apache2_install_check
failed_when: apache2_install_check.rc not in [0, 1]
changed_when: false
- name: install apache2 in container
delegate_to: mycontainer
raw: apt-get install -y apache2
when: apache2_install_check.rc == 1
Összevágtam az LXD és LXC ansible fájlokat, pár elírás benne maradhatott.
"Sajnos ez így senkinek sem működik szerintem, mivel létrejön egy sima konténer, amiben semmi nincs beállítva."
Ez nem probléma, mert ennyire alap dolgokat bele tudok varrni a telepítő targizibe.
(ansible, ssh csomag install, ssh kulcsok telepítése)
Akár úgy is bele lehet hákolni, hogy a konténer indító scriptjébe belerakod a 2-3 megfelelő shell parancsot - amit a proxmox az új konténer indításakor futtat.
--
Gábriel Ákos
Ez már meg is van: https://gist.github.com/gabrielke/e675138ed71510cfce31ab3768fb1ae5
Egyetlen "híja" van a történetnek, de ez ansible sajátosság, a konténer létrejötte után az első alkalommal be kell gyűjteni az új konténer publikus kulcsát az ansible host számára. Ezt is körbe lehetne varrni scripttel vagy ki lehet kapcsolni a host_key_check -et ansible oldalon, de most inkább haladok tovább.
--
Gábriel Ákos
az ansible konfigban meg lehet adni, hogy milyen parameterekkel hivja meg az ssh-t. Ott allitsd be, hogy ne torodjon a szerver kulcsaval...
--
t-systems-es it architect allast keres. Jelige: csak webshopot ne kelljen...
vö. : "ki lehet kapcsolni a host_key_check -et ansible oldalon" :)
--
Gábriel Ákos
igen, mert ez még 4.4-es proxmox. ha upgradelünk 5-re, akkor lxd lesz.
ha sikerül kitisztázni úgy a playbookokat (vagy eleve megírni úgy) hogy ne legyen benne "titok" akkor kiteszem persze
--
Gábriel Ákos
Szerintem a delegate_to kell neked.
A hostb a remote LXD/LXC host.
A foo a kontener, amit letrehozol.
Azaz definialod foo host-ot, a delegate_to-val a hostb-n futtatod addig a parancsokat, amig nem tudsz mar foo-ra is csatlakozni es utana mar azon futtatod.
Innen szedve:
https://github.com/ansible/ansible-modules-extras/issues/3660
Ha LXD-d lenne, lenne alternativa is, de az LXD remote lehetosege szerintem igy eleg nagy kalap szar a legtobb esetben.
+100 ez nagyon ígéretes, remélem ma eljutok odáig az egyebek mellett h ezt kipróbáljam.
--
Gábriel Ákos
+1
--
A legértékesebb idő a pillanat amelyben élsz.
https://sites.google.com/site/jupiter2005ster/