WindowsにChefをインストールできるようなので試してみました。また、Chefの実行はコマンドプロンプトから行うため、合わせてコマンドプロンプトを使いやすくしてみた。
インストール
Ruby
まず、WindowsにRubyのインストールを行います。
Windows用のインストーラーが用意されているため、RubyInstallerから「rubyinstaller-1.9.3-p545.exe」をダウンロードします。*1
「rubyinstaller-1.9.3-p545.exe」をクリックし、Rubyをインストールします。
ほぼデフォルトのままで良いかと思いますが、「インストール先とオプションの指定」では、以下のように指定しました。
インストール後に、コマンドプロンプトにて以下のコマンドを実行し、Rubyがインストールされていることを確認します。
> ruby -v ruby 1.9.3p545 (2014-02-24) [i386-mingw32]
DevKit
ChefのインストールにDevKitも必要であるため、同じサイトから「DevKit-tdm-32-4.5.2-20111229-1559-sfx.exe」をダウンロードします。
適当なフォルダに展開し、以下のコマンドを実行し、インストールを行います。
> cd C:\Ruby\DevKit > ruby dk.rb init > ruby dk.rb install
cwRsync
ChefはSSHを使用しているため、WindowsでもSSHを使用できるようにするため、cwRsyncというソフトウェアを使用します。
cwRsync - Rsync for Windowsから「Free」をクリックします。次にダウンロードページから「Download!」をクリックし、「cwRsync_5.3.0_Free.zip」をダウンロードします。
適当なフォルダに展開します。
> mkdir C:\User\<アカウント名>\bin > C:\Users\<アカウント名>\bin\cwRsync_5.3.0に展開
次に、システム環境変数のPathに以下を追加します。
;C:\Users\<アカウント名>\bin\cwRsync_5.3.0
以下のコマンドを実行し、他サーバへSSH接続が可能か確認します。
> ssh <ユーザ名>@<サーバのIPアドレス>:
サーバにパスワードなしで接続できるように、公開鍵認証の設定を行います。
ssh-keygenコマンドで認証用の鍵を作成し、対象サーバへ転送します。
> ssh-keygen > cd C:\User\<アカウント名>\.ssh > rsync id_rsa.pub <ユーザ名>@<サーバのIPアドレス>: > ssh <ユーザ名>@<サーバのIPアドレス> # サーバへログイン $ cat id_rsa.pub >> ~/.ssh/authorized_keys
Chef
以下のコマンドを実行し、Chefのインストールを行います。
このあたりはCentOSと変わりません。
> cd C:\User\<アカウント名> > gem install chef -v 11.10 # Chefをインストール > knife configure # 初期設定 > gem install knife-solo
今回、Ruby1.9系を使用しましたが、Ruby2.0系でknife configureコマンドを実行した際に、以下のメッセージが出力される場合があり、おとなしくRuby1.9系にしました。
> knife configure ERROR: Ohai::Exceptions::DependencyNotFound: Can not find a plugin for dependency os
> knife configure DL is deprecated, please use Fiddle C:/Ruby/2.0.0-p481/lib/ruby/gems/gems/windows-api-0.4.0/lib/windows/api.rb:1:in `req uire': 126: 指定されたモジュールが見つかりません。 - C:/Ruby/2.0.0-p481/lib/ruby/g ems/gems/win32-api-1.4.6-x86-mswin32-60/lib/win32/api.so (LoadError)
また、Chef11.12系では、knife cookをした際に以下のような警告メッセージが出力されるようになりました。Windowsでの対処方法が見つからなかったため、Chef11.10系を指定してインストールしています。
SSL validation of HTTPS requests is disabled. HTTPS connections are still encrypted, but chef is not able to detect forged replies or man in the middle attacks. To fix this issue add an entry like this to your configuration file: ``` # Verify all HTTPS connections (recommended) ssl_verify_mode :verify_peer # OR, Verify only connections to chef-server verify_api_cert true ``` To check your SSL configuration, or troubleshoot errors, you can use the `knife ssl check` command like so: ``` knife ssl check -c /tmp/vagrant-chef-1/solo.rb ```
次に、Chefのリポジトリを作成します。
> knife solo init chef-repo
cookbookを作成します。
> cd chef-repo > knife cookbook create apache2 -o site-cookbooks > site-cookbooks/apache2/recipes/default.rb package "apache2" do action :install end
サーバのIPアドレス.jsonのファイルが作成されるため、実行したいcookbookを指定します。
> nodes/<サーバのIPアドレス>.json { "run_list":[ "recipe[apache2]" ] }
サーバへChefをインストールし、cookbookを実行します。
> knife solo bootstrap <ユーザ名>@<サーバのIPアドレス> -p <Dockerコンテナのポート番号>
コマンドプロンプトを使いやすくする
Console
コマンドプロンプトを拡張する「Console」というソフトウェアがあります。このソフトウェアは、コマンドラインの実行環境はそのままで、フォントの変更やコピーアンドペーストの挙動、背景の透明化、タブ化など、コマンドプロンプトではできない機能を使用することができます。
Consoleから、「Console-2.00b148-Beta_32bit.zip」をダウンロードし、適当なフォルダに展開します。
> mkdir C:\User\<アカウント名>\tools > C:\Users\<アカウント名>\tools\Consoleに展開
Console.exeから起動することができます。
[Edit]>[Setting..]をクリックすると、Console Settingの画面が開きます。
代表的な設定は以下で設定することができます。
- フォント: Appearance>Font>Name
- コピーアンドペーストの挙動: Behavior>Copy Paste
- 背景の透明化: Appearance>More..>Window transparency>Alpha>Active window,Inactive windows
- 上矢印キーで履歴: Hotkeys>Use Scroll Lock for scrollingをOFF
Vim
コマンドプロンプトにはCUIエディタがないため、Windows用のVimをインストールします。
Vim — KaoriYaから「vim74-kaoriya-win32-20140504.zip」をダウンロードし、適当なフォルダに展開します。
> C:\Users\<アカウント名>\bin\vim74に展開
次に、システム環境変数のPathに以下を追加します。
;C:\Users\<アカウント名>\bin\vim74
doskey
Windowsにもdoskeyというエイリアス機能があるので、Linuxライクなコマンドが使えるように変更します。
ホームディレクトリにcmd.aliasesというファイルを作成し、以下のような設定を入力します。
> %HOME%\cmd.aliases pwd=cd mv=move $* rm=del $* grep=find "$1" $2 diff=fc $* cp=copy $* cat=type $* ls=dir /b $* ll=dir $* vi=vim $* ps=tasklist $*
Consoleの[Edit]>[Setting..]をクリックすると、Console Settingにて以下の設定を行います。
- シェル: Console>Shell
C:\Windows\system32\cmd.exe /K doskey /macrofile=%HOME%\cmd.aliases
例えば、「ll」と入力すると、dirコマンドの結果を見ることができます。
> ll 2014/05/17 02:59 <DIR> . 2014/05/17 02:59 <DIR> .. 2014/05/16 14:24 <DIR> .chef 2014/05/16 14:24 13 .gitignore 2014/05/17 00:07 87 chef_run.bat 2014/05/16 14:24 <DIR> cookbooks :
これで、Windowsから直接Chefを実行する環境が整いました。
*1:2014/5時点で最新のものです。