2020年5月31日日曜日

Mac で chef-solo を実行してみた

概要

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_pathrole_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 をインストールするのが一番大変でした

0 件のコメント:

コメントを投稿