概要
Mac で chef-solo を実行し mac 自体をプロビジョニングする方法を紹介します
環境
- macOS 10.15.5
- Ruby 2.7.1p83
- chef 16.1.16
- knife-solo 0.7.0
chef のインストール
chef-workstation をインストールします
これに chef-solo も含まれています
これは chef を使うのに必要なツールなどが一式揃っているツール群になります
brew cask install chef-workstation
or
sudo curl -L http://www.opscode.com/chef/install.sh | sudo zsh
のどちらからでインストールします
どちらも dmg からインストールする方式なのでインストールされるものは同じです
gem install chef
だと chef コマンドが使えませんでした
テスト用の cookbook の作成
mkdir ~/try_chef
cd ~/try_chef
mkdir -p cookbooks/test/recipes
レシピ作成
vim cookbooks/test/recipes/default.rb
file "#{ENV['HOME']}/hoge.txt" do
action :touch
end
とりあえずホームディレクトリに空のファイルを作成するだけのレシピです
node ファイルの作成
vim localhost.json
{
"run_list": [
"recipe[test]"
]
}
作成した test cookbook を実行するようにします
solo.rb の作成
cookbook のパスや nodes, roles を管理するディレクトリを指定します
今回はカレント配下に作成しているので相対パスですが絶対パスで書いても OK です
vim solo.rb
cookbook_path ["cookbooks", "site-cookbooks"]
node_path "nodes"
role_path "roles"
environment_path "environments"
data_bag_path "data_bags"
node_path
や role_path
は今回作成していませんがとりあえず指定しています
実行してみる
あとは実行するだけです
chef-solo -j ./test.json -c ./solo.rb
これで ~/hoge.txt
が作成されているのが確認できると思います
おまけ: knife solo 経由で実行するには
knife solo というツールを使うと chef-solo を ssh 経由で実行できます
一応試したのですが knife solo prepare が macOS 10.15 に対応してないので諦めました
knife-solo のインストール
chef-workstation が使っている gem を使って knife-solo をインストールします
brew install coreutils
/opt/chef-workstation/embedded/bin/gem install knife-solo
or
sudo /opt/chef/embedded/bin/gem install knife-solo
Homebrew の場合は上で Omnibus Install の場合は下を使います
knife プロジェクトの初期化
knife solo init
で初期化します
カレントディレクトリを指定しているので注意してください
mkdir ~/try_chef2
cd ~/try_chef2
knife solo init .
cookbook の作成
chef コマンドを使うと雛形を作成してくれます
これ自体は knife solo とは関係ないので chef-solo のみの場合でも使えます
chef generate cookbook cookbooks/test
knife solo prepare して chef-solo を実行できる準備をする
ここで失敗しました
knife solo prepare localhost
「ERROR: RuntimeError: OS X version 10.15.5 not supported
」となりました
もしこれができればあとはレシピと node ファイルを作成して
knife solo cook localhost ./test.json
すれば OK です
mac 上で localhost に ssh ログインできるようにするには
環境設定から「共有」を選択します
そして「リモートログイン」にチェックを入れれば OK です
knife solo を実行するユーザが ssh できるようにユーザを追加するのを忘れないようにしましょう
最後に
Mac 上に chef-solo をインストールし Mac 自体をプロビジョニングするレシピを作成して動かしてみました
Mac から vagrant などをプロビジョニングする方法は紹介されているのですが Mac 自体をプロビジョニングする記事があまりなかったので紹介してみました
chef-solo をインストールするのが一番大変でした