これは、Ubuntu Online、Fedora Online、Windows オンライン エミュレーター、または MAC OS オンライン エミュレーターなどの複数の無料オンライン ワークステーションの XNUMX つを使用して、OnWorks 無料ホスティング プロバイダーで実行できるコマンド チェークです。
プログラム:
NAME
chake - シェフを使用したサーバーレス構成
はじめに
Chake は、シェフを必要とせずに複数のホストを管理するのに役立つツールです。
サーバ。 構成はローカル ディレクトリで管理されます。おそらく次の場所にあるはずです。
によるバージョン管理 git(1) または他の何か。 設定は通常 rsync 経由でデプロイされます
SSH 経由で、呼び出して適用されます シェフソロ(1) 各ホストの SSH 経由。
作成 ザ リポジトリ
$ チョーク初期化
[作成]nodes.yaml
[ mkdir ] ノード.d/
[作成] config.rb
[ mkdir] 構成/役割
[ mkdir] クックブック/基本/レシピ/
[作成] クックブック/基本/レシピ/default.rb
[作成] Rakefile
作成されたファイルの簡単な説明:
· nodes.yaml: ここには、管理するホストと、どのレシピをリストするかが記載されます。
それぞれに当てはまります。
·nodes.d:nodes.yaml と同じ形式の複数のファイルが含まれるディレクトリ。 すべてのファイル
その中で一致する *.yaml がノードのリストに追加されます。
· config.rb: Chef-solo 設定が含まれています。 変更することもできますが、通常は
その必要はないでしょう。
· config/roles: ディレクトリは、ロール定義を配置できる場所です。
· クックブック: クックブックを保存するディレクトリ。 というサンプルクックブック
「basics」が作成されますが、自由に削除して実際のクックブックを追加してください。
· Rakefile: 必須の 'chake' 行のみが含まれます。 他のタスクで拡張することもできます
内部構造に固有のものです。
リポジトリの作成後、chake または rake を呼び出すことができます。これらは完全に機能するためです。
同等。
管理します ノード
リポジトリを作成した直後の、nodes.yaml の内容は次のようになります。
host1.mycompany.com:
実行リスト:
- レシピ[基本]
Rake ノードを使用してホストをリストできます。
$ レーキノード
host1.mycompany.com ssh
さらにノードを追加するには、nodes.yaml に追加するだけです。
host1.mycompany.com:
実行リスト:
- レシピ[基本]
host2.mycompany.com:
実行リスト:
- レシピ[基本]
そして、chake は新しいノードについて認識しました。
$ レーキノード
host1.mycompany.com ssh
host2.mycompany.com ssh
準備 ノード に BE おまかせ管理
ノードには、chake を使用して管理するための初期要件がほとんどありません。
· ノードは SSH 経由でアクセスできる必要があります。
· ノードに接続するユーザーは root であるか、sudo の実行を許可されている必要があります (
この場合、sudo がインストールされている必要があります)。
A 注意 on password プロンプト: Chake がノード上で ssh を呼び出すたびに、次のことが要求される場合があります。
パスワードを入力します。 Chake がノード上で sudo を呼び出すたびに、次のように入力する必要がある場合があります。
パスワードに。 XNUMX つまたは XNUMX つのノードを管理する場合はこれでおそらく問題ありませんが、大規模なノードの場合は
ノードの数を考慮すると現実的ではありません。 パスワードのプロンプトを回避するには、次の方法があります。
· SSH キーベースの認証を構成します。 これはパスワードを使用するよりも安全です。
その際、パスワード認証も無効にする必要があるでしょう。
完全に、キーベースの認証のみを許可します
· ノードへの接続に使用するユーザーのパスワードなしの sudo アクセスを構成します。
チェック中 コネクタ そして 初期 HOST セットアップ
ホストが正しく構成されているかどうかを確認するには、チェック タスクを使用できます。
$レーキチェック
これにより、各ホストで sudo true コマンドが実行されます。 それが必要なく過ぎてしまったら
パスワード、確かに
· 各ホストに SSH アクセスできる。 と
· 接続しているユーザーは、パスワードなしの sudo が正しく設定されています。
$レーキチェック
申請中 クックブック
構成をすべてのノードに適用するには、次を実行します。
$レーキコンバージ
構成を単一ノードに適用するには、次を実行します。
$ rake converge:$NODE
単一のレシピをすべてのノードに適用するには、次のコマンドを実行します。
$ rake apply[私のレシピ]
特定のノードに単一のレシピを適用するには、次のコマンドを実行します。
$ rake apply:$NODE[myrecipe]
コマンドラインでレシピを指定しない場合は、レシピの入力を求めるプロンプトが表示されます。
すべてのノードでシェル コマンドを実行するには、次を実行します。
$ rake run[コマンド]
実行したいコマンドにスペースやその他の特殊な文字が含まれている場合は、
シェルを引用する必要があります。
特定のノードでシェル コマンドを実行するには、次を実行します。
$ rake run:$NODE[コマンド]
コマンドラインでコマンドを指定しない場合は、コマンドの入力を求めるプロンプトが表示されます。
既存のタスクを確認するには、次を実行します。
$ レーキ -T
書き込み クックブック
Chake は実際には Chef Solo のラッパーであるため、[chef ドキュメント](
)。
特に、[Chef Solo Documentation](
Chef_solo.html>)。
ザ NODE ブートストラップ プロセス
Chake が初めてノード上で動作するときは、ノードをブートストラップする必要があります。 ブートストラップ
プロセスには次の操作が含まれます。
· Chef と rsync のインストール
· Chef クライアント デーモンを無効にする
· ホスト名の設定
NODE URL
nodes.yaml で表されるハッシュ内のキーはノード URL です。 のすべてのコンポーネント
URL とホスト名はオプションなので、ホスト名をリストするだけが最も簡単な形式です。
ノードを指定します。 ノード URL のすべてのコンポーネントは次のとおりです。
[バックエンド://][ユーザー名@]ホスト名[:ポート][/パス]
· バックエンド: ホストへの接続に使用するバックエンド。 ssh またはローカル (デフォルト: ssh)
· username: 接続するユーザー名 (デフォルト: ローカル ワークステーションのユーザー名)
· hostname: 接続先のホスト名 (デフォルト: なし)
· port: 接続するポート番号 (デフォルト: 22)
· /path: ノードでクックブックを保存する場所 (デフォルト: /var/tmp/chef.$USERNAME)
EXTRA 商品特徴
# フック
ノードをブートストラップする前に実行される rake タスクを定義できます。
構成管理コンテンツをノードにアップロードし、収束する前。 これをする、
対応するタスクを強化するだけです。
· bootstrap_common: ノードをブートストラップする前に実行されます (ノードがすでにブートストラップされている場合でも)
ブートストラップ)
· Upload_common: コンテンツをノードにアップロードする前に実行されます。
· converge_common: 収束前に実行されます (つまり、シェフを実行しています)
例:
タスク:bootstrap_common do
sh './scripts/pre-bootstrap-checks'
end
# 暗号化 ファイル
一致する末尾のファイル .gpg .asc は、送信される前に GnuPG で復号化されます。
ノード。 これらを使用して、パスワードやその他の機密情報 (SSL キー、
など) 残りの構成とともにリポジトリに保存されます。
# リポジトリローカル SSH CONFIGURATION
特別な SSH 設定パラメータが必要な場合は、.ssh_config というファイルを作成できます。
(または $CHAKE_SSH_CONFIG 環境変数にある任意のファイル名。以下を参照してください)
詳細については、リポジトリのルートにあり、chake は ssh を呼び出すときにそれを使用します。
# ロギング IN に A HOST
ホストの XNUMX つに簡単にログインするには、rake login:$HOSTNAME を実行するだけです。 この意志
上記のようにリポジトリローカルの SSH 構成が自動的に使用されるため、次の操作を行う必要はありません。
常に -F .ssh_config と入力します。
# ランニング 全て SSH 呼び出し WITH 一部 プレフィックス COMMAND
場合によっては、SSH 呼び出しの先頭に何らかのプレフィックスを付ける必要がある場合もあります。
たとえば、中央の出口ノードを介してトンネリングするためのコマンドです。 これは次の方法で行うことができます
環境に $CHAKE_SSH_PREFIX を設定します。 例:
CHAKE_SSH_PREFIX=tsocks レーキ コンバージ
上記により、すべてのホストへのすべての SSH 呼び出しが tsocks ssh として呼び出されるようになります [...]
# 収束中 LOCAL HOST
CHAKE を使用してローカル ワークステーションを管理したい場合は、次のようにローカル ノードを宣言できます。
これはnodes.yaml内にあります:
ローカル://サンダーボルト:
実行リスト:
- 役割[ワークステーション]
構成をローカル ホストに適用するには、従来の rake を使用できます。
converse:thunderbolt、または特別なターゲット rake local。
すべてのノードを収束する場合、chake は local:// で宣言されたノードをスキップします。
バックエンドのホスト名が宣言内のホスト名と一致しません。 例えば:
ローカル://デスクトップ:
実行リスト:
- 役割[ワークステーション]
ローカル://ラップトップ:
実行リスト:
- 役割[ワークステーション]
デスクトップで rake converge を実行すると、ラップトップはスキップされ、その逆も同様です。
ENVIRONMENT 変数
· $CHAKE_SSH_CONFIG: ローカル SSH 構成ファイル。 デフォルトは .ssh_config です。
· $CHAKE_SSH_PREFIX: SSH (および SSH を介した rsync) 呼び出しにプレフィックスを付けるコマンド。
· $CHAKE_RSYNC_OPTIONS: rsync に渡す追加のオプション。 大きなものを除外する場合などに便利です
ファイルが各サーバーにアップロードされないようにします。
· $CHAKE_NODES: 管理対象サーバーのリストを含むファイル。 デフォルト:nodes.yaml。
· $CHAKE_NODES_D: 管理対象のノード定義ファイルサーバーが含まれるディレクトリ。
デフォルト:nodes.d。
· $CHAKE_TMPDIR: 一時キャッシュ ファイルの保存に使用されるディレクトリ。 デフォルト: tmp/chake。
· $CHAKE_CHEF_CONFIG: リポジトリのルートを基準とした Chef 構成ファイル。
デフォルト: config.rb。
onworks.net サービスを使用してオンラインで Chake を使用する