Puncte:-1

„Amintiți-vă” comenzile CLI pe care le-ați executat pentru un server

drapel cn

Să presupunem că aveți un program terță parte care rulează pe un server.

Pentru a-l configura, vă conectați, aplicați niște comenzi CLI și plecați din nou.

De fiecare dată când faceți acest lucru, copiați și lipiți comenzile într-un fișier din git, astfel încât, în viitor, să vă puteți da seama ce a fost configurat și, de asemenea, să puteți configura din nou serverul dacă aveți nevoie vreodată.

Acest lucru este predispus la erori.

Știu că oamenii au inventat lucruri precum Puppet pentru a evita această problemă, dar AFAIK Puppet se bazează pe module cu care poți defini starea și apoi face operații idempotente.Aceasta înseamnă că nu aveți un modul Puppet pentru toate și că modulele pe care le aveți s-ar putea să nu poată face toată configurația dorită.

Deci, după această poveste lungă:

Există o modalitate adecvată de a „înregistra” comenzile pe care le-ați executat, astfel încât să le puteți rula și să documentați rularea în același timp?

drapel in
Pentru asta este gestionarea configurației (cum ar fi marioneta). Dacă păpușa nu este potrivită pentru tine, încearcă alternativele.
J Fabian Meier avatar
drapel cn
@GeraldSchneider Dar asta nu necesită ca vânzătorul sau cel puțin comunitatea să furnizeze un modul pentru acest program? În plus, probabil înseamnă că nu puteți rula doar comenzile din manual, ci trebuie să aflați cum funcționează configurația în Puppet, Ansible, Chef, orice modul...
drapel in
„Dar asta nu necesită ca vânzătorul sau cel puțin comunitatea să furnizeze un modul pentru acest program?” - Nu chiar. Toate oferă o metodă de a rula comenzi arbitrare. Trebuie doar să-ți construiești rețeta, cartea de joc, cum se numesc ei. S-ar putea chiar să realizați că unele module ușurează sarcinile decât ținând 5 instrumente până când obțineți un rezultat.
J Fabian Meier avatar
drapel cn
@GeraldSchneider Dar, AFAIK, aceste cărți de joc nu se bazează pe ideea că totul este idempotent și poate fi rulat din nou de fiecare dată? Acest lucru este în general greu de realizat.
user9517 avatar
drapel cn
Lumea managementului serverelor a trecut mai departe. Dacă configurați un server, utilizați instrumentele de gestionare a configurației disponibile, știți că are sens.
J Fabian Meier avatar
drapel cn
@user9517 De fapt, multe programe bazate pe server încă folosesc GUI ca instrument standard pentru a le configura. Sunt deja fericit că pot face totul pe linia de comandă. Deci, deși cred că aveți dreptate în ceea ce privește platformele comune, cum ar fi de ex. Server JBoss, este diferit pentru alte instrumente.
user9517 avatar
drapel cn
Și acele instrumente „gui” își vor stoca configurația într-un fișier undeva care poate fi gestionat de un instrument de gestionare a configurației. Nu cred că faci nici un management real de server.
Puncte:3
drapel jp

Dacă doriți să o faceți în modul vechi, puteți utiliza scenariu (1) pentru a vă înregistra sesiunea.

drapel cn
Bob
Acum asta e de la vechea școală. Doar din curiozitate, ce se întâmplă când folosești `sudo -i` sau `sudo su -`, este înregistrat și ceea ce se întâmplă cu privilegiile ridicate?
drapel jp
@Bob, da, va înregistra totul, inclusiv sub-shell-uri privilegiate cu `sudo`/`su` și chiar programe interactive precum `vi`. Dar cu programele interactive, ieșirea scriptului va fi în mare parte ilizibilă, așa că va trebui să utilizați `scriptreplay` (care necesită înregistrarea timpului de către `script`).
Puncte:0
drapel cn
Bob

Problema pe care o descrieți este exact motivul pentru care oamenii decid la un moment dat că nu mai doresc să se bazeze pe comenzile manuale și pe administratorii care folosesc instrumente interactive (GUI).

Doriți să puteți repeta ceea ce ați făcut într-un mod mai structurat decât să urmați o listă de verificare care poate să nu fi fost actualizată după ultima lansare/modificare/criză.

Și deși asta pare o problemă simplă și prima abordare a unei liste lungi a tuturor comenzilor care au fost emise pentru a atinge starea actuală pare o idee bună, probabil vă dați seama după ce vă gândiți puțin, că nici o astfel de listă nu este cea mai bună soluție. Această listă conține probabil și pași precum, încercați, eroați, eșuați, reveniți și încercați altceva, greșeli de tipar, repetați din nou etc. pe care nu doriți sau nu trebuie neapărat să îi repetați.

Wikipedia oferă un rezumat frumos al mai multor instrumente create de oameni pentru a rezolva asta: https://en.wikipedia.org/wiki/Comparison_of_open-source_configuration_management_software

Toate acestea au o curbă de învățare și par mai complicate decât ceea ce crezi că ai nevoie, dar, crede-mă, investește ceva timp și efort și vezi de ce multe dintre acestea sunt utilizate pe scară largă pentru a rezolva tipul de problemă cu care te confrunți acum.

J Fabian Meier avatar
drapel cn
De fapt, vreau doar lista lungă de comenzi. Acestea sunt lucrurile documentate în manual. Scrierea unui manual de joc, orice rețetă înseamnă că adaug un strat suplimentar de complexitate: probabil că nu pot pur și simplu să rulez comenzi din manual, deoarece s-ar putea să nu fie idempotente, în schimb trebuie să mă bazez fie pe manualele comunității (în care pot sau nu am încredere în fac ceea ce trebuie) sau scriu eu unele lucruri.

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.