Chef12対応Chef Workstation構築手順~Bash on Ubuntu on Windows10~

2016年4月に発表された、「Bash on Ubuntu on Windows10」は、Windows10上でubuntu 14.04のバイナリがそのまま動く(ユーザーモード限定ですが)ため、Linux上のアプリケーション開発やクロスプラットフォーム開発がスピーディーに行えるようになる見込みです。ここでは、Windows 10 Pro Insider Priview 14342の上で動くubuntuでChef Workstationを構築してみます。手順自体は本家サイトの手順に従って行います。なお、すでにCentOS7編で詳細なコマンド出力結果は書いていますので、ここではBash on Ubuntu on Windows10特有の出力以外は実行したコマンドだけを記載します。また、Bash on Ubuntu on Windowsの有効化手順はこちらの記事を参照してください。

1. Chef Development Kit (Chef DK)のインストールとユーザー作成

ChefのCookbookを開発するためのSDKやコマンドラインツールがセットになった「Chef Development Kit」(以下Chef DK)をダウンロードします。そしてRPMコマンドでインストールします。

dpkgコマンドでのChef DKをインストールする際、30分以上と非常に時間がかかります。その様子はWindowsのタスクマネージャからも見ることができます。

taskmgr

次に、Cookbookの管理などで必要になるgitとunzipをインストールしておきます。

ChefのCookbook作成などの作業には管理者権限は不要なので、開発用の一般ユーザーを作成します。ここではChefにログインするときに作ったユーザーと同じ名前にしておきます。(例では「chef-admin」)

2. Chef開発用ユーザーの環境設定

chef-adminユーザーに切り替えた後、Gitの初期設定を行い、その後Chef DKが正常にインストールされているか確認するコマンドを実行します。以前のCentOS上でのChef Workstation構築の記事ではGitの初期設定をしていませんでしたが、Chef DK 0.15系からはGit初期設定が必要になったようです。設定しないとエラーがたくさん出てしまいます。

ただし、Insider PreviewのバージョンがBuild 14352より古い場合は不具合があり、メモリ確保に失敗した旨のエラーが出てしまいます。執筆時点では修正版がリリースされています。不具合の詳細はGithubのこちらのサイトに記述がありました。

出力結果の後半で、すべてのコンポーネントの結果が「succeeded」となっていることを確認します。次に、このユーザーでのデフォルトRubyのパスをChef DKと一緒にインストールされているものに設定します。そのためには、~/.bashrcに1行追記し、~/.bashrcの設定を再読み込みします。

これでchef-adminユーザーのデフォルトrubyがChef DKに同梱されたものになりました。なお、実際に設定される環境変数などを確認すると、以下のようになります。

3. Starter Kitの展開とChef Serverとの接続設定

Chef DKの環境を簡単に整えるために、Chef ServerのWeb管理画面からStarter Kitをダウンロードします。そのために、Web管理画面にログイン後、画面TOPの「Administration」をクリックします。

chefserver-organization01

次に、画面左にある「Organization」をクリック後、表示された組織一覧から前回の記事で作成した組織を選びます。その後、画面左にある「Starter Kit」をクリックします。その後、画面中央に表示される「Download Starter Kit」ボタンをクリックします。

chefserver-organization02

ボタンをクリックすると警告が表示されますが、「Proceed」をクリックしてダウンロードを行います。

chefserver-starterkit

ここでダウンロードした「chef-starter.zip」は/mnt/c/Users/(ユーザー名)/Downloads以下にあるのでコピーを行い、unizpコマンドで展開します。

ここで作られたchef-repoディレクトリでCookbookを作成できるよう初期化を行います。

次に、秘密鍵などが保管されている.chefディレクトリをgit管理対象外にするための設定を行います。

最後にChef ServerのSSL証明書(自己証明書)を信頼するよう設定します。前提条件として、Chef Serverの名前解決ができることと、~/chef-repo/.chef/knife.rbに書かれているChef ServerのURLが正しいこと(ホスト名がFQDNになっているかなど)を確認しておきます。また、このコマンドも非常に長い時間がかかります(2016/7/18追記:Windows10 build 14390にアップデート後、時間がかからず完了するようになりました。)

以上で、Chef DKの環境が整いました。

4. Chef Serverとの接続確認

~/chef-repoディレクトリ以下でknifeコマンドを実行することで、Chef Serverと接続でき、クライアントや管理者ユーザーのリストが取得できることを確認します。

以上で、一般的なBash on Ubuntu on Windows環境内にChef Workstation環境が出来上がりました。ただ、時間がかかりすぎて今はまだ実運用までたどり着けない、かもしれません・・・(2016/7/18追記:Windows 10 Build 14390以降はスムーズに実行されるようになりました。使える、かもしれません!)