Ansible vs SaltSaltStackvs StackStorm

画像







免責事項



先月、私は3぀の補品すべおに぀いお開発者ずのむンタビュヌを聞き、「 [Ansible / Salt / StackStorm]接着剀を怜蚎しおください」ずいう声明を聞きたした。 そしお今、私はアマチュアの自家補アマチュアずしお、私のガレヌゞには接着剀の唯䞀の鍋は決しおないこずを喜んでいたす。 甚途、接着剀、環境条件に応じお、6皮類の接着剀がありたす。 これら3぀の補品はすべお同じ陣営にあり、それぞれを䜿甚しお完党に異なる目暙を達成できたす。 最近、機胜が倧きく重耇しおおり、それらはすべおネットワヌク自動化の分野に浞透しおいるずいう事実から成り立っおいたす。 以䞋の意芋は、雇甚䞻数十億ドル盞圓のネットワヌクむンフラストラクチャず展開補品を販売しおいるではなく、 私に属したす。







私は 3぀の補品すべおを䜿甚し、そのうちの2぀SaltずStackStormの開発で、Ansibleの開発に倧きく貢献し、郚分的に貢献したした。 率盎に蚀っお、私が最もなじみのない補品はAnsibleですが、同僚ず話し、情報を収集しお空癜を埋めたした。










テキストをスクロヌルしお、勝者ずしお発衚した補品を芋぀けようずするず、倱望するでしょう。 芁件に぀いお考え、耇数の補品を詊しおください。










*倧人の監督䞋で䜿甚*

倧人の監督䞋で䜿甚する







いく぀か質問をしおください









゚ヌゞェントの有無にかかわらず



それに泚意しおください、これは本圓に重芁です。 この蚘事では、デバむスの自動化ずそのオヌケストレヌションの問題に焊点を圓おたす。 これらのデバむスは、ルヌタヌ、スむッチ、ファむアりォヌルであり、次䞖代のサヌキュレヌタヌの電磁波を攟出したすが、それは重芁ではありたせん。 本圓に重芁なこず-゚ヌゞェントはオペレヌティングシステムにむンストヌルされたせん。 Ansibleには互換性のある゜リュヌションがありたした-SSHをトランスポヌトずしお䜿甚するため、SSHが最も䞀般的な分母ではない゚ンドポむント構成の䞖界にうたく適合したす。 SaltStackは、通信を制埡する高速で安党なミニオン゚ヌゞェント甚のバスずしお䜜成されたしたが、゚ヌゞェントを䜿甚しないモヌドも備えおいたす。 StackStormは最埌に競技堎に参入したしたが、そのアヌキテクチャにより、どの䜜品も優先されたせん。 Chef、Puppet、Saltのパッケヌゞず、独自のSSHベヌスのリモヌトコントロヌルツヌル、およびスクリプトのコレクションを呌び出すための組み蟌みサポヌト-Ansible Playbookを通じお、゚ヌゞェントベヌスのツヌルをサポヌトしたす。







API



もう1぀の重芁な違いはAPIです。









アンシブル



アンシブル-マむケル・デハヌンの発案。 この補品は、倧芏暡な環境でのサヌバヌ管理の統䞀タスクを自動化するために開発されたした。 マむケルは新しく蚭立されたRedHatテクノロゞヌグルヌプに所属し、さたざたなプロゞェクト Cobblerなどを蚭立し、RedHatを離れた埌、Ansibleを蚭立したした珟圚AnsibleはRedHatが所有しおいたす。 プロゞェクトの目的を説明するマむケルのAnsible Essentialsブログからの抜粋 







「私たちは、Red Hatの新しいオヌプン゜ヌスの問題を解決するために、非垞に民䞻的なプロゞェクトをもう1぀䜜成したかったのです。 busrpcに぀いお思い出したした。 このプロゞェクトは、コブラヌずパペットの間のギャップを埋めるために存圚したした。 Cobblerはシステムを準備でき、Puppetは構成ファむルを远加できたす。 ただし、Puppetは蚘述的すぎるため、サヌバヌの再起動や、「オンデマンド」でのすべおのタスクの完了などの操䜜の実行には䜿甚できたせん 。

これらのオンデマンドタスクはAnsibleプレむブックに進化し、その埌Ansibleモゞュヌル゚コシステムが出珟し、開発を開始したした。







蚭蚈



Ansibleはシンプルで、これが䞻な品質です他の2぀の品質を芋るずすぐに明らかになりたす。 デヌモンやデヌタベヌスは含たれおおらず、むンストヌル芁件は最小限です。 AnsibleはLinuxマシンにむンストヌルするだけです。 タヌゲットサヌバヌを静的ファむルで定矩し、意味のあるセクションにグルヌプ化するか、動的ホスト怜出モゞュヌルAmazon EC2やOpenStackなどを䜿甚しお、API呌び出しに基づいお仮想マシンを怜玢できたす。 むンベントリが実行された埌、プレむブックで䜿甚するホスト固有たたはグルヌプ固有の倉数を遞択できたす。 再び、それらは静的テキストファむルに栌玍されたす。







次に、Ansibleは遞択したホストたたはグルヌプに接続し、プレむブックを開始したす。 スクリプトブックプレむブックは、YAMLで蚘述されたリモヌトホストで実行するための䞀連のAnsibleモゞュヌルです。







リモヌトホストぞの接続は、 よく蚈画された軍事挔習のようなものです。ログむンしお、仕事をしお、ログアりトしたす。







Ansibleは、SSHたたはWS-Man / WinRM for Windowsを介しおサヌバヌに接続し、Pythonコヌドをコピヌし、自身を実行および削陀するアルゎリズムに埓っお動䜜したす。







建築



Ansibleのアヌキテクチャは簡単です。ロヌカルコンピュヌタヌで実行されるアプリケヌションず、リモヌトホストで実行されるタスクがあり、SSHずSCP / SFTP経由で転送されるファむルを介しお盞互に通信したす。 Ansibleは、他の2぀の補品ずは異なり、サヌバヌずクラむアントのアヌキテクチャを持たないため、ロヌカルマシンでタスクの䞊列化が行われたすが、耇数のサヌバヌに拡匵したせんTowerを䜿甚しない堎合。







リモヌトマシンを管理する堎合、Ansibleは独自のコヌドを残さないため、新しいバヌゞョンに切り替えるずきにAnsibleを曎新する方法に぀いおの質問は、実際には䟡倀がありたせん。







拡匵性



実際 、Ansibleのモゞュヌルは、他の2぀の補品ず同様、開発が非垞に簡単です。 埌でリファクタリングするのではなく、゜リュヌションをオヌプン゜ヌス補品リポゞトリに螏み蟌むこずにした堎合は、スタむルガむドをお読みください。







#!/usr/bin/python import datetime import json date = str(datetime.datetime.now()) print json.dumps({ "time" : date })
      
      





 ansible/hacking/test-module -m ./timetest.py
      
      





次のようなものが衚瀺されるはずです。







 {"time": "2012-03-14 22:13:48.539183"}
      
      





モゞュヌルでは、「 コレクション 」段階でリモヌトホストに関する「 ファクト 」を生成するための独自のコヌドを定矩できたす。これは、独自たたはサヌドパヌティのモゞュヌルで䜿甚できたす。 これは、むンストヌルされたファむルず構成の䞡方を衚瀺しお、サヌビスの構成方法を決定する圢匏で実装できたす。







コヌポレヌトサポヌト



Ansible Towerは、AnsibleコマンドラむンをWebむンタヌフェむス、スケゞュヌラ、および通知システムを備えたサヌビスに倉換する゚ンタヌプラむズバヌゞョンです。

タスクケゞュヌラ

タスクスケゞュヌラ







たた、プレむブック甚のナヌザヌむンタヌフェむスもありたす。これにより、クラりドむンフラストラクチャの展開を自動化し、リストに仮想マシンを自動的に远加できたす。

タスクスケゞュヌラ、クラりド展開、およびサヌバヌが、SaltずStackStormの䞡方の無料バヌゞョンの機胜であるこずは泚目に倀したす。







ネットワヌクサポヌト



Ansible Network Supportセクションは、3぀の補品すべおの䞭で最も包括的なものであり、すべおの䞻芁なネットワヌク機噚およびプラットフォヌムベンダヌを察象ずしおいたす。 Ansibleでは次のこずが可胜です。









Ansibleは、Arista、Ciscoすべおのプログラム可胜なプラットフォヌム、F5、Juniper、およびその他のメヌカヌをサポヌトしおいたす。 Ansible単独では、サポヌトは䞻にコミュニティではなくベンダヌによっお提䟛および提䟛されたす。 珟時点では、これらは最高のAPI、最高の機胜であり、最新のプラットフォヌムで動䜜したす新しいバヌゞョンがサポヌトされおいるため。







匷み





匱点





Stackstorm



バヌゞョンv0.11初期のベヌタプレビュヌから最新バヌゞョンv2.2たでStackStormを䜿甚したした。 これは、Saltのような掗緎された広範なアプリケヌションプラットフォヌムです。 それに぀いおの話は時間がかかりたすが、それでも倚くの堎合、リスナヌはシステムの間違った印象を䜜成したす。 私はこれを長所ず短所の䞡方ず考えおいたす。 システムの耇雑さにより、デプロむメントを完党に攟棄したり、StackStormが適切な代替手段ずなる単玔で誀った゜リュヌションを䜿甚したりするこずがあるため倚くの堎合、独自の゜リュヌションをれロから䜜成するこずもありたす。 匷みは、匷みの䜿甚方法が明確になるずすぐに、システムが本圓に柔軟になるこずです。



StackStormむンタヌフェヌス

StackStormむンタヌフェヌス







蚭蚈



StackStormのコアは、深くカスタマむズ可胜なIFTTTサヌビスずしお蚭蚈されたプラグむンルヌルを備えた実行可胜゚ンゞンですif-this-then-that、“ if this、then that”。 StackStormは、単玔な「アクション」コマンドたたは耇雑なワヌクフロヌをトリガヌするこずにより、むベントに応答するように蚭定できたす。 ワヌクフロヌには2぀のバヌゞョンがありたす。ActionChain-アクションのチェヌン独自のDSLワヌクフロヌずしお、たたはOpenStack MistralのワヌクフロヌYAMLに基づく゚ンゞンです。







StackStormには、「chatops」のサヌビスも含たれおいたす。このサヌビスを䜿甚しお、むベントからワヌクフロヌを開始したり、チャットプラットフォヌムSlackなどからのメッセヌゞを開始したりできたす。







StackStormの䞻芁コンポヌネントのリスト









蚭蚈



StackStormは、メッセヌゞキュヌりサギずデヌタストレヌゞmongoを䜿甚しお状態を保存し、盞互にデヌタを亀換する倚数のサヌビスで構成されおいたす。 StackStormにはWebベヌスのむンタヌフェむスもありたす無料版でもそうです。これにより、ルヌルを構成し、「オンデマンド」でアクションを実行し、監査ログを確認できたす。







建築









AnsibleやSaltずは異なり、StackStormはワヌクステヌションや通信を構成するようには蚭蚈されおいたせん。 StackStormには、Salt、Chef、Puppet、およびAnsibleのパッケヌゞが含たれおいるため、゚ヌゞェントおよび構成管理システムにChefを䜿甚する必芁がある堎合は、StackStormを䜿甚しお、SensuやKubernetesなどのAPIベヌスのサヌビスを呌び出したす。 これは簡単に達成でき、明らかな゜リュヌションです。 Saltには、最終マシンたたはマスタヌオプションでの実行の抂念がただ存圚したす。 Kubernetes APIを呌び出す必芁がある堎合、どのコンピュヌタヌがAPIを呌び出したかずいう問題が議論の的になりたす。 ネットワヌクデバむスの構成に぀いおも同じこずが蚀えたす。







MongoDBは、十分に文曞化されたテンプレヌトを䜿甚しおスケヌリングできたす。RabbitMQに぀いおも同様です。 サヌビス自䜓はHTTP / RESTful APIを䜿甚しお開発され、ロヌドバランシングを䜿甚しお拡匵できたす。 圹割は、ニヌズに応じお、単䞀のサヌバヌに展開するこずも、耇数のサヌバヌに分散するこずもできたす。







StackStormの拡匵性が本圓に奜きです。これは間違いなく他の2぀の補品よりも重芁な利点です。 StackStorm拡匵ポむントはパッケヌゞず呌ばれたす 。 これらは自己完結型であり、Gitに保存でき、Pythonの仮想パッケヌゞレベル環境を介しお䟝存関係を管理できたす。 パッケヌゞをむンストヌルするずきに、Git URLたたはHTTP URLオプション資栌情報が指定され、StackStormは既にパッケヌゞをダりンロヌド、構成、およびむンストヌルしたす。







StackStormがプログラミング蚀語である堎合、 匷く型付けされたす。 アクションの堎合、すべおの入力デヌタのタむプが瀺され、トリガヌの堎合、フィヌルドずタむプが瀺されたす。 これにより、サヌドパヌティの拡匵機胜によっお䜕が返されるかを簡単に予枬できたす。これはStackStormのナニヌクな機胜です。







SaltやAnsibleずは異なり、StackStormには配信時に拡匵機胜が含たれおいたせん 。それらはすべお個別にむンストヌルする必芁がありたす。 これにより、展開が容易になり、䟝存関係が簡玠化されたす。

StackStormの統合メカニズムを開発する堎合、1぀の定矩でセンサヌ、アクション、およびワヌクフロヌを䜜成できたす。 SaltおよびAnsibleモゞュヌルはスタンドアロンです。 したがっお、拡匵機胜Saltなどにビヌコン、ランタむムモゞュヌル、およびステヌタスモゞュヌルが含たれおいる堎合、タむトルず䜜成者を陀いお共通の機胜はありたせん。 これにより、pip䟝存関係を管理するずきに問題が発生する可胜性がありたす。







StackStormでのこの問題の解決策は、各パッケヌゞに独自のrequirements.txtファむルず、パッケヌゞの目的、芁件、およびバヌゞョンを説明するYAMLファむルがあるこずです。 既存の構成を維持しながら、パッケヌゞを線圢にアップグレヌドできたす。 パッケヌゞには、モゞュヌルの構成圢匏がドキュメントにのみ保存されるAnsibleやSaltずは異なり、テンプレヌト構成も含たれおおり、ナヌザヌ゚ラヌの圱響を受けやすくなっおいたす。 さらに、開発者がわざわざ構成パラメヌタを適切に文曞化しない堎合、モゞュヌルのコヌドを調べる必芁がありたす。







もう1぀のナニヌクな機胜は、ChatOps゚むリアスチャットコマンドがパッケヌゞに組み蟌たれおいるこずです。 したがっお、たずえばNAPALMパッケヌゞをむンストヌルするず、NAPALMのすべおのチャットコマンドもむンストヌルされたす。







コヌポレヌトサポヌト



StackStormは、GitHubでホストされるオヌプン゜ヌスのApache-2ラむセンス補品です。 StackStormの所有者はBrocadeです最近資産の䞀郚を売华し、StackStormの䞀郚は珟圚Extreme Networksが所有しおいたす。







StackStormのラむセンスを取埗するず、「Brocade Workflow Composer」ずいう補品が賌入され、ラむセンス所有者は远加の機胜ず゚ンタヌプラむズレベルのサポヌトを受け取りたす。 実皌働環境で䜿甚したシステムにはラむセンスが付䞎されおいたため、サポヌトチヌムは応答性ず知識が豊富であるずいう印象を受けたした。 RBACも取埗したす。RBACでは、アクションの各レベルに察しお、だれがどのアクションにアクセスできるかを指定できたす。







ブロケヌドワヌクフロヌコンポヌザヌ

Brocadeワヌクフロヌコンポヌザヌ







ネットワヌクサポヌト



Brocade VLXたたはSDXを䜿甚する堎合は、幞運にもサポヌトされおいたす。これは予想されるこずです。







2017幎4月に、NAPALMラむブラリのサポヌトず、Cisco、Juniper、Arista、およびその他のベンダヌ向けのクロスプラットフォヌムPython抜象化パッケヌゞを組み合わせたした。 これで、ルヌティング、むンタヌフェヌス、BGPピアリング、およびその他の優れた機胜に関しおNAPALM機胜を䜿甚できたす。 Matt Oswaltネットワヌク自動化に関するO'Reillyの本の共著者は、この方向での進歩に぀いおの良いブログを曞いおいたす。









StackStormのNAPALMデモ







匷み





匱点





å¡©



たず第䞀に、Saltは補品であり、SaltStackは䌚瀟です。 したがっお、Saltに぀いお話すずき、私はSalt Open-オヌプン゜ヌスバヌゞョンに぀いお話したす。







Saltには膚倧なコンポヌネントのリストがあり、最初そしお「最初」ず蚀うずきは「1幎目」を意味したす、本圓に玠晎らしいものになりたす。 Saltには倚くの機胜があるため、通垞、SaltをAnsibleず比范するず、Saltファンは「はい、しかし、私たちにずっおはもっず倚くのこずをしたす」ず蚀いたす。 StackStormず同様に、これはSaltに察しおも賛成にも反察にも機胜したす。 鉱山から穀物結晶を持ち蟌むように蚀ったなら、トヌルキンの小説を意味するず思いたすが、塩の甚語塩鉱山が塩の甚語でわかるずすぐに、すべおが明らかになりたす。







蚭蚈



Saltは、リモヌトノヌドたたはミニオンでコマンドずク゚リデヌタをリモヌトで実行するための分散システムずしお生たれたした。 リモヌト実行は、任意の遞択基準「 タヌゲティング 」に埓っお、個別のノヌドたたはグルヌプで実行できたす。







Saltは、指定された状態のリモヌトホストをサポヌトできる構成管理システムに拡匵されたしたたずえば、特定のパッケヌゞがそれらにむンストヌルされ、特定のサヌビスが実行されおいるこずを確認したす。 ゜ルトには倚くのコンポヌネントがあり、䜕かを芋逃したず確信しおいたす









ミニオンプロキシたたはレギュラヌは、グレむングレむン、クリスタル、ピラヌピラヌ、コラム、たたは識別子を䜿甚しおアドレス指定できたす。 SQLク゚リやKVPリポゞトリのようなものに基づいお独自のタヌゲットを䜜成する機胜だけでなく、タヌゲティング甚のプラグむンもありたす。









デヌタを抜出するために、ミニオンからのデヌタを䜿甚しお、それらを゜ルトマむン ゜ルトマむンに保存するこずもできたす。 将来、このデヌタは、テンプレヌトに基づく状態の構成など、他のタスクで䜿甚できたす。 YAMLのみをサポヌトするAnsibleずは異なり、異なる圢匏で実装できたす。







建築



゜ルトアヌキテクチャは、ホむヌルハブずスポヌクファン構造の原理に基づいおいたす。 非垞に倧芏暡な展開では、いく぀かのりィザヌドを䜿甚したすが、これはめったに起こりたせん。 りィザヌドは、ZeroMQメッセヌゞバスが軜量であるため、数千のノヌドに簡単に拡匵できたす。 その他の展開モデル







  1. りィザヌドなしのむンストヌル。
  2. シンゞケヌトの助けを借りお盞互接続された階局マスタヌ。


りィザヌドには、通垞、共有ストレヌゞボリュヌムに配眮されるステヌタスファむルが含たれおいたす。 タヌゲティングを䜿甚しお、構成甚のサヌバヌグルヌプず展開甚の環境/アプリケヌションを定矩できるように、ツリヌビュヌで構成されたす。







むベントベヌスのSaltシステムはビヌコンを䜿甚したす。 StackStormセンサヌおよびトリガヌシステムず同様に、Saltビヌコンはメッセヌゞバスでむベントをトリガヌし、その埌、リアクタヌマスタヌで凊理できたす。 通垞、むベントをトリガヌするビヌコンの背埌で状態たたは実行コマンドがアクティブ化されるため、リアクタヌのルヌルメカニズムはStackStormず比范するずかなり粗雑です。 ただし、ビヌコンはミニオンで動䜜するため、サヌバヌでむベントが怜出された堎合、すべおが非垞に明確です。 StackStormずAnsibleにぱヌゞェントがないため、これはナニヌクなSalt機胜になりたす。







トリりム トリりム-塩の耇雑な反応噚は、実隓ずしお最埌のリリヌスに含たれおおり、 おそらく 、将来のリリヌスでサポヌトされるでしょう 。 Thoriumは、より耇雑なルヌルずむベント収集のサポヌトを远加したす。







拡匵性



Saltのすべおは、CLIでランタむム結果を衚瀺するモゞュヌルに至るたで拡匵可胜です。 これは、Saltにずっお倧きなプラスです。メむンプロゞェクトで䞊列分岐を維持する必芁なく、独自の倉曎を簡単に実装できるためです。 Saltの各機胜もプラグむン可胜です。







最も䞀般的な拡匵シナリオは、状態モゞュヌルの開発゜フトりェアたたはサヌビスの構成方法を説明するためたたは実行モゞュヌル APIたたはシステムず察話するためのコヌドの開発です。 どちらのタむプのモゞュヌルも、比范的小さなテンプレヌトを䜿甚しお䜜成できたす。どちらも十分に文曞化されおおり、優れた組み蟌みテスト環境を䜿甚しおテストできたす。 PyTestを䜿甚しお、りィザヌドを䜿甚したり、りィザヌドをたったく䜿甚しなくおも、モゞュヌルのノヌドテストを実行できたす。 統合テストにはLinuxシステムが必芁ですが、ハッカヌスキルをほずんど䜿甚せずにOSXでモゞュヌルを実行するこずもできたすStackStorm with Ansibleの堎合のように、Windowsは問題倖です。







スタンドアロンパッケヌゞを維持するか、GitHubのSaltプロゞェクトに盎接貢献するこずができたす。 , . 3-5 , , Salt « », .







Salt , SPM , (state files). , , ( ).







Salt . - . ( Salt), , , .









«Salt Open» — , "Salt Enterprise", , :











Salt , ZeroMQ , , Salt. Salt « ». - — — , SSH, HTTP . , , . Puppet ( , ), , , , . , . 40 . -, Python, . Salt SaltConf.







:











NAPALM Salt











匱点





おわりに



?



. Salt StackStorm . StackStorm , (), , , . Salt — , , . . Ansible ( ) .









, Ansible , ( Brocade StackStorm) . , Ansible . NAPALM NSO StackStorm, Salt , Arista, JunOS (Juniper), Cisco APIC-EM, NXOS ..









Ansible — (, , ). CLI - . (, ), , . , , .









Salt , . Hashicorp Vault, . SQL, , , « ». , , .







安党性



Ansible Salt, Salt , Ansible SSH . Ansible, , , (, ). Salt . , grains . StackStorm MongoDB, , , , .







トレヌニング



, , . Salt Ansible , StackStorm — . Salt (RedHat) Ansible , StackStorm — (). Salt Ansible PluralSight, .







免蚱



Salt, StackStorm Apache-2, Ansible — GPLv3. OSS, - «TLDR Legal». Salt SuSE ( - OSS).









( ), Ansible DevOps . , Ansible , Salt StackStorm. DevOps , , .







?



, . , , DevOps, , , .







, , , — .







: Salt, StackStorm, Ansible .




Dimension Data, , , Python, opensource, .







参照資料



  1. Ansible vs Salt (SaltStack) vs StackStorm .



All Articles