Habréのブログでは、会社でのDevOpsカルチャーの構築について引き続き説明しています。以前に、作成した継続的インテグレーションシステムと、 ソフトウェアの公開およびライセンスのメカニズムについて説明しました 。 今日は、環境管理システムの選択と、サーバーへのソフトウェアの配信と展開に焦点を当てます。
問題は何ですか
使用する階層をよりよく理解するために、 この分類に従ってtype3とtype5が混在していると考えることができます。 私たちには独自の開発、サービスがあり、他の人、チームにそれらを提供し、「鉄」の部分はOPSによって私たちに供給されます。
歴史的に、当社では、プロセス自動化へのアプローチはやや混somewhatとしていました。 ライトに対する典型的なアクションを自動化する必要が生じたとき、松葉杖がしばしば生まれました。つまり、仮想マシンのクローン作成やソフトウェアのインストールなどのアクションを実行する独自のスクリプトを多数作成しました。
これは永遠に続くことはできませんでした-会社の成長とその製品の数に伴い、一般的なアクションを自動化し、使用するサービスの環境を準備するためのより信頼性の高いソリューションを作成する必要に直面しました。
タスクを解決できる専用の自動化プラットフォームが必要であることが明らかになりました。 Puppet、Ansible、SaltStackの3つのオプションから選択しました。
何を選んだのか
その結果、設定は次のように配布されました。
- Puppetは 、その人気にもかかわらず、Rubyを使用する主な理由である「私たち」と一緒には行きませんでしたが、会社ではPythonを好んでいます。 さらに、環境展開シナリオを記述する複雑なロジックのため、製品で作業を開始するための入力しきい値は非常に高くなりました。
- AnsibleはPuppetほど巨大ではなく、対処がはるかに簡単でした。 クライアントの不足により適合しませんでした-2番目のバージョンのリリース前に試してみました)。
- SaltStack-私たちにとって最も便利なオプションになりました。 操作モード(マスターミニオン、マスターレス、ssh)から選択する機能、実行された操作の履歴を便利な形式で保存する機能。 また、当社にはPythonの分野でかなりの専門知識があるため、独自のモジュールを迅速に作成でき、システムの機能を大幅に拡張できます。
システムのアーキテクチャを検討してください。 SaltStackの用語では、システムサーバーはマスターと呼ばれ、クライアントはミニオンと呼ばれます。
トランスポートプロトコルとして、システムはZeroMQ永続暗号化接続テクノロジーを使用します-多数のシナリオを実行すると、速度が大幅に向上します。 代替のRAETトランスポートが開発中です。 私たちはそれを使用しませんでした。あなたがそれについてのヒント/警告を持っているならば、我々はコメントでそれらを見てうれしいです。
以下、画像はSALTSTACK COMPONENTSの公式文書から取られています
穀物は、IPアドレスなどのシステム情報の単位です。 AnsibleとPuppetは、事実のローカルな類似物です。
状態ファイルは、Ansibleのプレイブックに類似しています。 それらでは、 state.modulesを使用して、ミニオンをどの状態にする必要があるかが記述されています。
また、SaltStackにはトップファイルの概念が存在します。 これは、実際には、いくつかの属性に従ってミニオンをグループ化し、再生する状態またはロール(ロールモデルを使用する場合)を示すのに役立つ辞書です。 各環境(dev、test、prod)には、独自のトップファイルを含めることができます。
また、システムには、データ転送( Pillar )の観点から保護されたリポジトリと、パスワードなどの秘密情報があります-このメカニズムを使用すると、ログインとパスワードに関する情報が誤って間違った場所に「アップロード」されるエラーを防ぎます。 どのモジュールも情報源として機能できます。 各環境(dev、test、prod)は、独自の柱ファイルを持つことができます。
実行モジュール-アドホックモードでAnsibleと比較できます。 エージェントとの手動作業に必要です。
多くの場合、 塩鉱山は注意を奪われており、「穀物」とは異なり、任意の間隔で更新できます。 このツールを使用すると、別のミニオンの状態の実行時に、あるミニオンのグレインを使用できます。 SaltStackの記事:依存または参照サービス構成の作成に、ケースが詳しく説明されています。 著者(@ eugenechepurniy )には、他のSaltStackの記事があります。
Salt Returners-デフォルトでは、ミニオンでの実行結果が「マスター」に返されます。 リターナーを使用すると、この出力をオーバーライドできます。 「小売業者」の完全なリスト 。
他の一般的なSCMシステムにない別の便利な機能はReactorです。 このモジュールは「リスナー」として機能し、タグ付きメッセージをフィルタリングし、この件名でいくつかのアクションを開始します。
SaltStackは、エージェントなしで(SSH経由で)動作します。 最近、ハブの使用例とともに記事がハブに公開されました。
公式ドキュメントには、システムの使用に関する優れたステップバイステップのチュートリアルがあります。 SaltStack Fundamentalsから始めることをお勧めします
SaltStackはどこで使用しますか?
Positive Technologiesでは、SaltStackを使用して次の問題を解決しています。
- ビルドエージェントの構成。
- 監視設定;
- テスト環境の準備;
- コンテナ管理;
- ライセンスの配信(会社の製品);
- 更新の配信(会社の製品);
- VMライフサイクル管理。
もちろん、SaltStackにはいくつかの欠点があります。 たとえば、すぐに理解するのが難しい非常に難しいドキュメント、および他のシステム(クライアントではなく同じミニオン)でよく知られているもののためのまったく新しいアナログ用語を作成することに対する開発者の愛。
SCMの選択は、エディターの選択に似ています。 各企業には独自のニーズがあります。
いくつかのオプションを試して、あなたのウィッシュリストをカバーする「あなた」を選択することをお勧めします。
PS SaltStackを使用した経験に関するストーリーは、最近モスクワで開催されたDevOpsミーティングの一部として紹介されました。
リンクには、イベント中に提示された16のレポートのプレゼンテーションが表示されます。 このトピック発表の最後に、すべてのプレゼンテーションとビデオプレゼンテーションがテーブルに追加されます。
著者 : ドミトリー・ミロシュニチェンコ