Cdist
「Cdist」
「Cdist」
cdistは、Unixライクなシステム向けの無料の ソフトウェア構成管理ツールです。Bourne Shellを使用してSSH経由でノードを管理し、ターゲットノードに追加のソフトウェアをインストールする必要はありません。 cdist 原作者
ニコ・ショッテリウス、スティーブン・アームストロング
初回リリース
2010 ; 11年前 (2010)
安定リリース
6.9.5 / 2021年2月28日 ; 9か月前 (2021-02-28)
リポジトリ
コード.ungleich .CH / ungleich-公共/ cdist .git
で書かれている
Python、Bourneシェル
オペレーティング・システム
Linux、Unixライク、macOS
タイプ
ソフトウェア構成管理
ライセンス
GNU General PublicLicenseバージョン3以降
Webサイト
www .cdi .st
Cdistは、構成スクリプトを作成するための主要言語としてBourne Shellを選択し、ターゲットノードへの依存を事実上必要としないことで、競合する構成管理システムとの差別化を図っています。cdistのコアはPythonで記述されていますが、インタープリターはホストマシンにのみ必要であり、ターゲットノードには必要ありません。
コンテンツ
1 発達
2 特徴
3 インストールと構成
4 建築
4.1 芯 4.2 構成6 同様のソフトウェア
7 参考文献
8 外部リンク
発達
cdistの開発は2010年にETHチューリッヒで開始され、活発に開発されており、主にNicoSchotteliusとStevenArmstrongによって維持されています。 cdistは、スイスのさまざまな企業(ETHチューリッヒやOMAブラウザプロジェクトなど)、米国、ドイツ、フランスで使用されています。
特徴
cdistは、依存関係のない構成管理システムです。ターゲットホストに必要なのはsshとbourne互換シェルのみで、ほとんどのUnixライクなマシンでデフォルトで提供されます。このため、cdistを使用して他の構成管理システムをブートストラップすることができます。
インストールと構成
cdistは通常、パッケージ(.debや.rpmなど)としてインストールされるのではなく、gitを介してインストールされます。すべてのコマンドは、作成されたチェックアウトから実行されます。構成のエントリポイントは、シェルスクリプトconf / manifest / initです。これは、cdist用語では初期マニフェストと呼ばれます。
cdistの主要なコンポーネントは、機能をバンドルするいわゆる型です。タイプは基本的に、タイプが再利用するタイプと、ターゲットホストで実行するために生成されるコードを定義するための多数のシェルスクリプトで構成されています。
建築
cdistは2つのコンポーネントに分かれています。
コア
構成スクリプト
芯
Cdistのコアは、構成の読み取りとリモートホストとの通信を処理します。Ansibleと同様に、cdistは「プッシュ」モデルを使用して構成の変更を適用します。「ホスト」マシンのcdistプロセスは、SSHを介して任意の数のリモートノードに接続し、それらのノードで構成の更新を実行します。Cdistは、複数のホストを並行して構成して、構成にかかる時間を短縮できます。
構成
構成スクリプトは、ターゲットの構成方法を定義します。彼らは一般的に書かれているのBourneシェルとで構成されてい
最初のマニフェスト、すべての構成が実行されるエントリポイント。このスクリプトは通常、ホスト名やオペレーティングシステムなどのターゲットノードに関する情報を使用して、実際の構成を実行する他のより具体的なスクリプトを呼び出します。
グローバルエクスプローラー、ターゲットシステム(オペレーティングシステム、initシステム、ホスト名など)に関する情報を収集する小さなスクリプト
構成の再利用可能なチャンクを記述するタイプ。タイプはマニフェストでインスタンス化され、ターゲットマシンで実際にコードを実行する唯一の方法です。「型」という名前は、オブジェクト指向言語の「クラス」に類似したものです。これは、型に渡されるパラメーターに応じて、型を複数の「オブジェクト」に変換できるためです。たとえば、__fileタイプを複数の「オブジェクト」に変換できます。各オブジェクトは、特定のファイルの作成を表します。Ansibleの「役割」は、cdistのタイプと同等です。タイプには多くのコンポーネントを含めることができます。
オブジェクトID:型がオブジェクトに変換されると、一意のオブジェクトIDが渡されます。同じタイプを同じIDで2回インスタンス化することはできません。このIDは、UUIDのようにランダムではなく、タイプに関連して意味のある一意の識別子です。たとえば、__fileタイプのIDはファイルへの絶対パスです。
パラメータ:多くのタイプはオブジェクトIDで完全に記述できず、パラメータの形式で追加情報を取得します。この__file型は、groupどのUnixグループがファイルを所有するかを指定するパラメーターを取ります。
エクスプローラー:上記のグローバルエクスプローラーに加えて、タイプには、リモートマシンからタイプ固有の情報を収集する独自のエクスプローラーがある場合がこの__fileタイプは、エクスプローラーを使用して、作成中のファイルが既に存在するかどうかを判別します。この情報を使用して、ファイルの作成をスキップすることが
マニフェスト:型マニフェストは他の型をインスタンス化できるため、コードの再利用が容易になります。
Gencodeスクリプト:gencode-remoteスクリプトは、ターゲットノードの構成を実際に更新するための主な方法です。gencode-remoteローカルマシンで実行されますが、その標準出力はリモートマシンに送信され、シェルスクリプトとして実行されます。gencode-localローカルで実行するコードを出力する、あまり使用されないスクリプトも
シェルはcdist構成スクリプトを作成するための事実上の言語ですが、適切なシバン行が含まれている場合、ほとんどのスクリプトは任意の言語で作成できます。シェルスクリプトは、環境変数へのアクセス、ファイルの読み取り、およびシステムコマンドの実行が非常に簡単であるために好まれています。
構成言語
ユーザーが構成できるすべての部分は、シェルスクリプトであるマニフェストまたはgencode-scriptsに含まれています。Unixシステム管理者は通常、シェルスクリプトの読み取りと書き込みに習熟しているため、シェルスクリプトが選択されました。さらに、シェルは潜在的なターゲットシステムでも一般的に利用できるため、そこに追加のソフトウェアをインストールする必要がありません(「依存関係なし」)。
cdistは、ホストがタイプにマップされている初期マニフェスト(conf / manifest / init)から構成を読み取ります。
ケース ” $ __ target_host ” で myhostnameと)
__package zsh –state present
__addifnosuchline / tmp / cdist-welcome –line “Welcome to cdist” ;; esac
cdistで型を使用する場合、それらはマニフェストで通常のプログラムのように呼び出され、stdinからの読み取りだけでなく高度なパラメーター解析も利用できます。
#デフォルトファイルを提供しますが、ユーザーに変更させます__file /home/frodo/.bashrc –source “/etc/skel/.bashrc” –state does –owner frodo –mode 0600#stdinからファイルコンテンツを取得します__file / tmp / whatever –owner root –group root –mode 644 –source- << DONEここに/ tmp / whateverのコンテンツがありますDONE
依存関係は、require環境変数を設定することで表されます。
__ディレクトリ/ tmp / foobar
require = “_ _ directory // tmp / foobar” __file / tmp / foobar / baz
タイプ内のパスとファイルへのアクセスは、$ __objectなどの環境変数によって与えられます。
同様のソフトウェア
Ansibleは、cdistと同様に、エージェントレスプッシュモデルを使用してノードを構成します。ただし、Ansibleは通常、ターゲットにPythonを必要としますが、cdistは必要ありません。 Ansibleは、宣言型YAMLベースの言語で記述されたロールとPythonで記述されたモジュールを区別します。Cdistには、モジュールとロールの両方の目的を果たす「タイプ」のみがあり、ほとんどがBourneShellで記述されています。Shellは、これまで構成管理システムを使用したことがない多くのシステム管理者に馴染みがあるため、Cdistのアプローチが望ましいかもしれませんが、Ansibleの宣言型言語の方が間違いなく読みやすく適切です。
参考文献
^ シャルマ、リシャブ; ソニ、ミテシュ
ラーニングシェフ。Packt。pp。10、17–18。ISBN 978-1783285211。
^ 「リリース・ungleich-public / cdist・GitLab」。code.ungleich.ch 。2021-03-29を取得。
^ 「3。サポートされているオペレーティングシステム— cdist6.9.5ドキュメント」。cdi.st 。2021-03-29を取得。
^ ^ 「ungleich / cdist:cdist構成管理」。GitHub.com。
^ 「アーカイブされたコピー」。
^ 「アーカイブされたコピー」。
^ Torberntsson、キム; Rydin、Ylva。構成管理の研究-クラウド環境でのソフトウェアの展開と構成のためのシステムソリューション(PDF)(論文)。ウプサラ大学。pp。8、27、31、42。2018年11月22日のオリジナルからアーカイブ(PDF)。
^ 「Googleグループ」。Groups.google.com 。
^ クルーゼ、クリスチャン(2016)。「cdistを使用した自動構成デプロイメント」。WWWTech。
^ “cdist-type(7)”。Nico.schottelius.org。
^ ベズロウコフ、ニコライ。「cdist」。ソフトパノラマ。
^ 「13。マニフェスト— cdist4.10.6-6-g61ac4a26ドキュメント」。www.nico.schottelius.org 。2019-03-26を取得。
^ 「インストールガイド」。Ansible。管理対象ノードの要件。
外部リンク
公式ウェブサイト
ソースコード
cdistメーリングリスト
フリーコードのcdist