Děkuji autorovi za článek, nedávno jsem začal koketovat s Puppetem, ale toto řešení je pro můj use-case mnohem přívětivější (nebo tak alespoň vypadá). S napětím očekávám další článek na toto téma.
Na strojích používáme Gentoo, kde je ansible přímo v hlavním repozitáři ve verzi 1.2.1, což je další příjemné plus.
P.S. první :-)
Zajimavej nastroj, jen jaksi nevim, co s tim muzeme na Gentoo delat. Portage syncuju z cronu, a updaty si netroufnu instalovat jinak, nez interaktivne. I kdyz je pravda, ze to krapet zdrzuje, kdyz se clovek stara o deset servru (nedejboze vic)..
P.S. Cekals do pulnoci, nebo sis dal budika? :-)
Trosku nerozumiem. Security patche aplikujem priebezne. Updaty na novsie verzie pokial vsetko funguje NIKDY neaplikovat. Debian.
To sa robi raz do roka, ked sa vsetko odskusa ci funguje na jednom servri a potom sa to necha zbehnut postupne na vsetkych strojoch. Vsetko vo virtualizacii. Vacsinu bezime na vserveroch.
To s tou novou verzí je mýtus starý jako gentoo samo. Přitom je to nesmysl. Jakmile se někde objeví patch na nějakou chybu neboi zranitelnost, v portage se objeví updatovaná verze toho stejného balíku právě jenom o ten patch, stejně jako v kterémkoliv jiném distru. Rozhodně se to neřeší upgradem na novou opravenou verzi.
To zalezi vyhradne na tom, jestli patch nekdo (at uz tvurce nebo nekdo spesl pro gentoo) backportuje na tu verzi. Jenze pokud by sis v gentoo chtel udrzet aktualni verze SW, musel bys investovat nemale usili na zamaskovani vseho, co prave ted nemas nainstalovany, a nejspozdeji do roka bys byl vprdeli jak bata s drevakama, protoze polovina tvyho systemu by z portage vypadla jako nepodporovana. A aktualizovat na novy verze jednou za rok opravdu neni vubec dobrej napad ... protoze se na 99% stane, ze stavajici SW nebude chodit s novejma knihovnama, pricemz ne vzdy se vse prekompajli jak ma ... protoze se proste predpoklada, ze system udrzujes +- aktualni a nepredpoklada se, ze mas appku 10 verzi zpet.
Ostatne, zazil sem to nekolikrat (a rok to nebyl), ze sem delsi dobu na gentoo nesah, a aktualizovat to pak byl docela horor. Ale poradil sem si ... i kdyz sem parkrat musel postupovat ruco balicek po balicku ... az to slo.
To debian se mi upgradnout nepovedlo vubec ... ani pres cca 14ti denni snahu (pak sem se na to vykaslal). Pri jakymkoli pokusu to skoncilo na nejakym zacyklenym nesouladu zavislosti ... a ani ruco si to nechtelo nechat vnutit ...
Pro bezneho uzivatele desktopu, ktery chce linux, neni imho debian to prave.
Pro informovaneho uzivatele linuxu, ktery chce debian, se na desktop hodi debian testing nebo debian unstable a aktualizovat pravidelne (a relativne casto, ja to delam tak jednou za dva az tri mesice). Vyhoda oproti gentoo je pricipielne nizsi pravdepodobnost toho ze narazis na obskurni bug, na ktery krome tebe narazili jen 3 uzivatele, z toho 3 rezignovali na jeho reseni. Na server, nebo domaci router si naopak dam s chuti debian stable (pokud bude podporovany HW), a kdyz vyjde novy stable, tak takovy stroj preinstaluju. Na serveru ci domacim routeru totiz nesmi byt tuna skorofunkcnich aplikaci ale jen deset dobre odladenych a dobre nakonfigurovanych. A co si budem povidat, obcas pri upgrade aplikace (serverove) musite sahnout na konfigurak, protoze nova/opravena funkcionalita je v defaultu nebo historicky nastavena jinak nez potrebujete.
Nevím, jestli to jde konkrétně s Ansible, ale u Puppetu nebo Chefu je třeba hodně zajímavá možnost mít nástroj, který mi umožní bleskově sestavit server, o kterém vím, že má přesnou parametrizovanou konfiguraci.
Například že je to "můj typický server pro malou firmu" - má nainstalované všechny odzkoušené softy v odzkoušené konfiguraci, akorát na správných místech má správný název domény, IP DNS poskytovatele, heslo LDAP serveru, atd. atd.
Jasně, mohl bys stejného efektu dosáhnout i haldou ad-hoc skriptů. Ale časem by tě z toho kleplo.
autor asi zapomnel si nejdrive zkontrolovat fakta.
to co uvadi, ze nejde s uspechem - my pouzivame prez 2 roky.. (deploy aplikaci)
ansible je urcite zajimavy nastroj, nicmene je mlady a porovnavat ho s ostatnima je IMHO predcasne.
jako hlavni nevyhodu ansible bych oznacil pristup skrze ssh, coz pro nekoho muze byt vyhoda (napr.pouze ssh pristup bez roota)
Dobrý den,
souhlasím, že jsem to nenapsal úplně jasně. Deploy aplikace pomocí puppetu i chefu určitě lze provést. To co umí ansible navíc, nebo přinejmenším pohodlněji je deploy aplikací na více serverů, kdy pro každý server postupně odebere aplikaci z loadbalanceru, deaktivuje notifikace v monitoringu, provede deploy a obojí opět aktivuje. A tohle provede jeden server po druhém tak, že nezaznamenáte výpadek. Podrobněji v dalších dílech. Rád se přiučím, jestli to podobně děláte, pošlete link :).
Ohledně mládí se nedá polemizovat, projekt skutečně mladý je.
Root přístup není potřeba, ansible umí bez problémů využít sudo.
Nechci rozpoutávat válku ohledně převzatí a pseudoskloňování anglických slov do češtiny. Chápu, že pro aktuální témata, ale i pro některé "dříve narozené" termíny, se v češtine ještě neujal český terminus-technicus. Co ale fakt nepochopím, proč místo slova "šablon" je použito "templatů" (proč ne "templateů" nebo rovnou "templejtů")? Proč místo "organizační" je použito nesmyslné "orchestrační"? Proč autor používá anglické slovo "deploy", tj. nasadit (instalovat, chcete-li), ve smyslu anglického "deployment", tj. nasazení (instalce, chcete-li)? To už není ani free, ani cool, a už vůbec ne in. To je prostě hloubost.
Nejsem žádný zastánce "čisté češtiny", a sám v hovorovém jazyce s kolegy občas také zkomolím nějaký ten anglický termín, ale tohle mi opravdu přijde přehnané a zbytečné. Na srozumitelnosti článku to nijak nepřidá.
Kažodpádně oceňuji snahu autora předat vlastní zkušenosti i ostatním a ušetřit jim tak drahocený čas. Díky.
Používat v IT oblasti české názvy pro technické a SW prvky je naprostý nesmysl a nikdo z branže Vám nebude téměř rozumět a budete považován za i****a. Skloňování takových slov je už trochu jiné téma. Co se týče orchestrační, tak se jedná o české slovo a tuším, že organizace není zrovna jeho ekvivalentem.
Ahoj, pokud někdo hledá obdobný nástroj a ještě si nevybral tak je tu ještě http://saltstack.org . Ten sice pro práci na potřebuje nainstalovaného agenta, ale z mého pohledu to není hendikep.
Davide, taky se přidávám, dík moc za článek. Orchestrace a cfg management je určitě aktuální a docela málo známé téma. Super, těším se na další díly.
Pokus o konstruktivní kritiku/reflexi:
Pak by mě taky zajímalo, jestli skupiny jsou jedinou možností "adresace" serverů, nebo má Ansible i něco na způsob facteru z Puppetu, popř. grainů/pil-laru* ze Saltu. Pokud by neměl, tak by to imho byla obrovská limitace a brzda.
A ještě si nemůžu odpustit boj proti oblíbenému mýtu, který se i ve Tvém článku dvakrát objevil: použít sudo proto, abych nepoužil roota <i>je</i> špatný nápad. Nepřináší to nic kromě zbytečných komplikací: musí se složitěji escapovat parametry skriptů, složitěji se vytváří shellové roury a celkově je to jenom opruz. Pokud má někdo paranoiu z toho, že mu roota hackne bot, není nic jednoduššího, než si vytvořit uživatele venca s uid=0,gid=0 a má stejný efekt zadarmo a bez opruzů. Jediná situace, kde má sudo opravdu smysl, je omezení práv na jenom nějaké příkazy. I kdyby se Canonical na hlavu postavil ;)
* pi-ll bez pomlčky je zakázané slovo :)
Bezpecnostni riziko sudo je pokud je bez hesla (kvuli skriptum) a pritom ten clovek pouziva ten ucet i k jinym ucelum nez ke sprave toho serveru, protoze pak je mozne, ze pres diru v aplikaci kterou tam pouziva se mu tam nekdo dostane a pres sudo si pak udela roota.
Miroslave díky,
konstruktivní kritiku beru, bez zpětné vazby nemám jak zjistit co se dá vylepšit.
Přiznám se ale , že na tvou kritiku mám problém odpovědět i teď. Ansible je totiž opravdu velmi minimalistické, že by se až dalo říct, že to je několik skriptů a sada modulů, které můžeš snadno vyvolat a nic více. Jenže v tom to vězí. Moduly ti umožňují nastavit na vzdálených serverech v podstatě cokoliv (i když v některých případech jen voláním shellu, což není ideální).
Samotné Ansible je psané v pythonu a potřebuje ... python. To je většina závislostí. V něm jsou i psány moduly (skripty), ale můžou být psát v čemkoliv, pro Ansible je důležité aby měly jako výstup JSON, nic víc. Přehled modulů jsme neuváděl i proto, že by článek byl ... dlouhý. Ale mohl jsem uvést aspoň odkaz na jejich dokumentaci: http://www.ansibleworks.com/docs/modules.html
Adresace je primárně pomocí skupin. Ale když si člověk například vytvoří novou instanci na AWS, tak je možné tuhle instanci rovnou zařadit do skupiny (i když jen dynamicky) a pokud se později ve zpracování s tou skupinou něco děje, tak je to včetně těch nových strojů. Nemýlím-li se, tak je možnost i zjistit si jaké servery má člověk na AWS, rackspace, ... a ty rozřadit do skupin, které se následně použijí. Ale ještě jsem to v praxi nezkoušel tak možná trochu kecám (odpovídá to tomu jak to v Ansible obvykle funguje, ale nemám to ověřené).
Do diskuze jestli sudo vylepšuje bezpečnost, nebo ne se nebudu pouštět, 10 linux adminů na to má pravděpodobně 14 názorů :). Za sebe jen řeknu, že někde to používám, někde ne a většinou to určuje bezpečnostní politika firmy pro kterou spravuju servery. Jak opodstatnější beru abych měl u těch uživatelů přihlášení jen přes klíč, bez hesla. Ke komplikacím se sudo - u Ansible jen označíš že pro task má použít sudo, to jediné, s ním to funguje stejně jako když použiješ rovnou root přístup.
Argument s uživatelem venca beru :).
Díky za obsáhlou a přínosnou reakci.
> Ale mohl jsem uvést aspoň odkaz na jejich dokumentaci: http://www.ansibleworks.com/docs/modules.html
Jo! To je přesně to, co mě zajímalo. A vypadá to dobře, funkcí hodně.
> Adresace je primárně pomocí skupin. [...]
Hm, tak to je docela škoda. V Saltu (a myslím, že i Puppetu) jde adresovat stroje i podle jejich vlastností z nějakého grainu/pi-llaru. Takže např. když najednou chci něco udělat se všemi stroji s nějakým určitým množstvím RAM, můžu. U Ansible bych si teda prvně musel vytvořit skupinu. To je docela nepříjemné, protože vytvořit si dopředu skupiny podle všeho, co bych potenciáně někdy mohl potřebovat, je nereálný...