LoginSignup
4
5

More than 5 years have passed since last update.

Windows で knife solo を実行する方法

Last updated at Posted at 2016-03-03

Windows で knife solo を実行する方法

まえがき

サーバ/インフラエンジニア養成読本 DevOps編を買いました。
読み進めていくうちに「特集2 CircleCIによる継続的インテグレーション入門」でknife-soloコマンドを使うことになっているのですが正常に動かすことができず。
エラーの内容を掘っていってknife自体のソースを変更することでどうにか動かすことができたのでその時のメモを残します。

一通りの流れを記載しますが実際に動かしている環境では他にいろいろ触っていたので他に必要な操作、不要な操作があるかもしれません。

あくまでも今の自分のWindows環境やタイミングを含めて動いているものをメモしているだけなので助けにならない場合もあるのでご容赦ください。

Cygwinをインストールからパスの設定まで

Rubyのインストール

  • Rubyの最新版をインストール 今回はRuby 2.2.4 (x64)で試しました。 Ruby Downloads
  • Rubyのパスを通す C:\Ruby22-x64\binを環境変数のpathに追加しました。

DEVELOPEMENT KITをインストール

  • RubyをダウンロードしたページにあるDEVELOPEMENT KITにあるRuby2.0以上用のファイルをダウンロード
    今回はFor use with Ruby 2.0 and above (x64 - 64bits only)
    DevKit-mingw64-64-4.7.2-20130224-1432-sfx.exe
    をダウンロードしました。

  • ダウンロードしたファイルを解凍して配置

C:\Ruby22-x64\devkit

に置きました。

  • コマンドプロンプトにて以下を実行。

dk.rbファイルがない場合、解凍とかファイルの移動とか失敗していると思われます。

cd C:\Ruby22-x64\devkit
ruby dk.rb init
ruby dk.rb install

Vagrantをインストール

普通にインストール
Vagrant

ユーザー用環境変数に home を設定

システムの環境変数には設定しないこと。
↓こんな感じのディレクトリをHOMEに設定する
C:\home\nakagawa

  • 個人のhome用ディレクトリを掘る

コマンドプロンプトを起動

cd c:\
mkdir home
cd home
mkdir nakagawa
  • 環境変数を追加、システムの詳細設定から ユーザーの環境変数に

HOME C:\home\nakagawa

を追加

gemを使ってknife-soloをインストール

gem install knife-solo -v 0.5.1

重要!net-ssh Version2.9.4のソースを変更する

元のソース

変更前のpageant.rb
C:\Ruby22-x64\lib\ruby\gems\2.2.0\gems\net-ssh-2.9.4\lib\net\ssh\authentication\pageant.rb
 1:require 'dl/import'
 6:  require 'dl/types'
 7:  require 'fiddle'
40:        extend Dl::Importer
42:        include Dl::Win32Types
44:        SIZEOF_DWORD = Dl::SIZEOF_LONG

以下のように変更

変更後のpageant.rb
 1:require 'fiddle/import'
 6:  require 'fiddle/types'
 7:  require 'fiddle'
40:        extend Fiddle::Importer
42:        include Fiddle::Win32Types
44:        SIZEOF_DWORD = Fiddle::SIZEOF_LONG

DLじゃなくてFiddleを使うようにします。
この時点で動くようになるはず・・・。

本の通りにknife-soloを使ってみよう!

  • とりあえずCookBooksというディレクトリを作る
cd C:\
mkdir cookbooks
cd cookbooks
  • Knife-soloを実行する
knife solo init infra-ci-cookbooks
  • 作ったCookbookのディレクトリに移動
cd infra-ci-cookbooks
  • Vagrant というファイルを作り以下の内容を記載する
Vagrant
# -*- mode: ruby -*-
# vi: set ft=ruby :

Vagrant.configure(2) do |config|
  config.vm.box = "bento/centos-7.1"
  config.vm.define :webapp do |host|
    host.vm.hostname = "webapp"
  end
end
  • Vagrantを起動
vagrant up webapp
  • sshの接続情報を出力
vagrant ssh-config webapp >> vagrant_ssh_config
  • Vagrant内の仮想環境にCookbookを注入!
knife solo prepare webapp -F vagrant_ssh_config

これが正常に通れば書籍の通りに試せるはず!

4
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
5