2013-10-31 15 views
13

Derzeit habe ich alle meine Bereitstellung Skripts in der Shell, die etwa 10 Programme installiert und konfiguriert sie. So wie ich es Shell sehen ist ein fantastisches Werkzeug dafür:Vorteile eines Bereitstellungstools wie Ansible über Shell

Modular: nur ein Programm per Skript, auf diese Weise ich die Programme auf verschiedene Server verteilt werden.

Einfach: Shell-Skripte sind sehr einfach und benötigen keine andere Software installiert.

Ein-Klick: Ich muss nur das Shell-Skript einmal ausführen und alles ist eingerichtet.

Agnostic: Die meisten Programmierer können Shell herausfinden und müssen nicht wissen, wie man ein bestimmtes Programm verwendet.

Versionierung: Da mein Code ist auf GitHub ein einfaches Git ziehen und starten alle Supervisor wird meinen neuesten Code ausführen.

Mit all diesen Vorteilen, warum sind es Leute, die mir ständig sagen, dass ich ein Werkzeug wie Ansible oder Chef verwenden soll und Shell nicht benutzen soll?

+1

Ein guter Artikel, den ich zu diesem Thema gefunden habe. Es macht einen guten Job, wenn es darum geht, die wiederkehrenden Fragen zu beantworten, die Sie bekommen, wenn Sie versuchen, Systemadministratoren davon zu überzeugen, welche Werkzeuge wie Chef/ansible/puppet es wert sind, angeschaut zu werden: http://devopsu.com/blog/ansible-vs-shell-scripts/ –

+2

Fakt ist, dass dies in erster Linie auf Meinungsbasis geschlossen ist. Genau das finde ich am Stackoverflow ärgerlich. Die meisten Dinge, die wichtig sind, beinhalten Urteil (Meinungen). – AdamC

+0

Nur "Einfach" und "Agnostisch" gelten nicht auch für z. Ansible. – jwg

Antwort

35

Shell-Skripte sind nicht so schlimm, wenn Sie funktionieren, wie Sie brauchen.

Menschen empfehlen andere Werkzeuge (wie CFEngine, Puppet, Koch, ansible, und was auch immer) aus verschiedenen Gründen, von denen einige sind:

  1. Der gleiche Satz von Gründen, warum Menschen stattdessen Tools wie make verwenden Implementieren Build Systeme mit Skripten.
  2. Idempotenz: Die Qualität, wobei die gewährleistet war, dass es sicher sein kann beliebig oft wieder laufen, und bei jedem Lauf wird es entweder Zustand in den gewünschten kommen oder dort bleiben oder zumindest bewegen Näher dazu // konvergent.

    Sicher, können Sie Skripte schreiben, so dass das Endergebnis idempotent sind:

    # Crude example 
    grep myhost /etc/hosts || echo '1.2.3.4 myhost' >> /etc/hosts 
    

    Aber es ist viel schöner mit Idempotent Tools.

  3. Shell-Skripte sind imperativ. Werkzeuge wie Chef/Ansible/Puppet sind deklarative. Im Allgemeinen führt eine deklarative Aussage zu einer besseren Produktivität bei einem bestimmten Skalenwert.

  4. Die DSLs nehmen etwas Strom weg, aber dann geben sie Ordnung, Sauberkeit und andere Arten von Macht. Ich liebe Shell Scripting, aber ich liebe Ruby auch, und die Puppet Menschen lieben ihre Sprache! Wenn Sie immer noch denken Shell ist der Weg zu gehen, weil Sie es mehr mögen, hey, Sie haben dann kein Problem.

  5. [HINZUGEFÜGT] Wiederverteilbare, wiederverwendbare Pakete.Ruby hat Edelsteine, Perl hat CPAN, Knoten hat npm, Java hat Maven - und alle Sprachen haben diese ihre eigenen Konventionen, wie wiederverwendbar Quellcode verpackt und mit der Welt geteilt werden muss.

    Shell-Skripts nicht.

    Koch hat Kochbücher, die Konventionen folgen und können auf die gleiche Weise importiert werden Sie importieren einen Edelstein in Ihre Ruby-Anwendung, um Ihrer Anwendung einige neue Fähigkeiten zu geben. Puppet hat puppetforge und es sind Module, Juju hat Charms (sie sind ziemlich nah Shell-Skripte, so dass Sie interessiert sein könnten).

  6. Die Werkzeuge haben ihnen tatsächlich geholfen! Ich war ein hartnäckiger Shell Scripter, und bin immer noch, , aber mit Chef lässt mich früher nach Hause gehen, eine gute Nacht schlafen, bleiben Sie in der Kontrolle, über OS gehen, vermeiden Sie Verwirrung - greifbare Vorteile, die ich nach aufgegeben habe groß angelegte Server Shell-Scripting.

+1

+1. Markiert Wunderbare Erklärung. – slayedbylucifer