Chef-solo-setup
提供:Dev Guides
シェフ-ソロ設定
Chef-Soloは、ローカルで実行されるオープンソースツールであり、Chefクライアントとサーバーの設定を複雑にすることなく、Chefクックブックを使用してゲストマシンをプロビジョニングできます。 自分で作成したサーバーでクックブックを実行するのに役立ちます。
ローカルマシンでChef-Soloを実行する前に、ローカルマシンに次の2つのファイルをインストールする必要があります。
- Solo.rb -このファイルは、クックブック、ロール、データバッグの場所をChefに伝えます。
- Node.json -必要に応じて、このファイルは実行リストとノード固有の属性を設定します。
solo.rbの構成
以下は、solo.rbを設定する手順です。
- ステップ1 *-chefリポジトリ内にsolo.rbファイルを作成します。
current_dir = File.expand_path(File.dirname(__FILE__))
file_cache_path "#{current_dir}"
cookbook_path "#{current_dir}/cookbooks"
role_path "#{current_dir}/roles"
data_bag_path "#{current_dir}/data_bags"
- ステップ2 *-ファイルをgit repoに追加します。
$ git add solo.rb
- ステップ3 *-次のコンテンツを含むchefリポジトリ内にnode.jsonファイルを作成します。
{
"run_list": [ "recipe[ntp]" ]
}
- ステップ4 *-ナイフを使用してシェフレポ内でntpクックブックを取得します。
vipin@laptop:~/chef-repo $ knife cookbook site install ntp
Installing ntp to/Users/mma/work/chef-repo/cookbooks
…TRUNCATED OUTPUT…
Cookbook ntp version 1.3.0 successfully installed
- ステップ5 *-node.jsonファイルをGitに追加します。
$ git add node.json
- ステップ6 *-ファイルをコミットしてgit repoにプッシュします。
vipin@laptop:~/chef-repo $ git commit -m "initial setup for Chef Solo"
vipin@laptop:~/chef-repo $ git push
Counting objects: 4, done.
Delta compression using up to 4 threads.
...TRUNCATED OUTPUT...
To [email protected]:mmarschall/chef-repo.git
b930647..5bcfab6 master -> master
ノードでクックブックを実行する
- ステップ1 *-Chef-Soloをプロビジョニングするノードにログインします。
- ステップ2 *-マシンでChefリポジトリを複製します。
$ git clone $URL_PATH
- ステップ3 *-シェフリポジトリにcdします。
$ cd chef-repo
最後に、シェフソロを実行してノードを収束させます-
$ sudo chef-solo -c solo.rb -j node.json
[2017-20-08T22:54:13+01:00] INFO: ** *Chef 11.0.0* **
[2017-20-08T22:54:13+01:00] INFO: Setting the run_list to
["recipe[ntp]"] from JSON
...TRUNCATED OUTPUT...
[2012-12-08T22:54:16+01:00] INFO: Chef Run complete in 2.388374
seconds
[2012-12-08T22:54:16+01:00] INFO: Running report handlers
*solo.rb* は、現在のディレクトリ(Chefリポジトリ)内でクックブック、ロール、およびデータバッグを検索するようにChef-Soloを構成します。
*Chef-Solo* は、JSONファイルからノード構成を取得します。 この例では、node.jsonと呼びます。 複数のサーバーを管理する場合は、ノードごとに個別のファイルが必要です。 次に、Chef-Soloは、solo.rbおよびnode.jsonにある構成データに基づいてChef実行を実行するだけです。