CentOS7にZsh入れるとこまで

Windowsでこの作業やったら泣きそうになった(:.;゚;Д;゚;.:)
後でまとめよう。

Chefリポジトリを作成する。

$ mkdir -p vms/chef-repo && cd vms/chef-repo

ChefとKnife-Zeroのインストール

Windowsではwindows-prとかないとエラー出まくって嫌になった。
berkshelfが依存してるdep-selector-libgecodeってgemが強敵。

cat <<... > Gemfile
source 'https://rubygems.org'

gem 'chef'
gem 'knife-zero'
gem 'berkshelf'
if RUBY_PLATFORM.match(/mswin(?!ce)|mingw|cygwin|bccwin/)
  gem 'rdp-ruby-wmi'
  gem 'ruby-wmi'
  gem 'windows-api'
  gem 'windows-pr'
  gem 'win32-eventlog'
  gem 'win32-process'
  gem 'win32-service'
end
...

bundle install

.chef/knife.rb

常にローカルモードで動くように。

mkdir ~/.chef
echo 'local_mode true' > ~/.chef/knife.rb

GuestOSにChef Clientをインストールする

bundle exec knife zero bootstrap 10.0.0.10 --sudoしたら

/Users/nob/.rbenv/versions/2.2.0/lib/ruby/gems/2.2.0/gems/chef-12.0.3/lib/chef/data_bag_item.rb:161: warning: circular argument reference - data_bag

みたいな警告が出るから調べてみたら、ChefのBugだった。
どーすんのよ?って調べてたら暫定対応っぽいパッチ書いてる目からビーム出すおじさんが居た。
/Users/nob/.rbenv/versions/2.2.0/lib/ruby/gems/2.2.0/gems/chef-12.0.3/lib/chef/data_bag_item.rbここを参考に下記のような感じで直しちゃう。

# 161行目の
def destroy(data_bag=data_bag, databag_item=name)
# を
def destroy(data_bag=data_bag(), databag_item=name)
# に修正する

気を取り直して、、

# Chef Clientをインストールする
bundle exec knife zero bootstrap 10.0.0.10

bundle exec knife node list
WARN: No cookbooks directory found at or above current directory.  Assuming /Users/nob/vms/chef-repo.
cos7

# 無事インストール出来たのでsnapshotとっとく
vagrant snapshot take v1_chef_client_installed

レシピを適用する

cat <<... > Berksfile
source "https://supermarket.chef.io"

cookbook 'zsh'
...
bundle exec berks vendor cookbooks

bundle exec knife node run_list add localhost zsh

# ??? 下記のコマンドは通らない、Guest OS側のネットワーク系の設定不足だと思う
bundle exec knife zero chef_client 'name:cos7' --attribute ipaddress

問題解決した?

# → nodeの情報見てみる
$ knife node show cos7

Node Name:   cos7
Environment: _default
FQDN:        cos7
IP:          10.0.2.15
Run List:    recipe[zsh]
Roles:
Recipes:
Platform:    centos 7.0.1406
Tags:

# vagrant sshして…
$ ip a

# enp0s3のIPが設定されてた。
# 10.0.0.10じゃないとssh通らないから、そっちのIP使って欲しい。
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 08:00:27:ea:9b:b5 brd ff:ff:ff:ff:ff:ff
    inet 10.0.2.15/24 brd 10.0.2.255 scope global dynamic enp0s3
       valid_lft 82613sec preferred_lft 82613sec
    inet6 fe80::a00:27ff:feea:9bb5/64 scope link
       valid_lft forever preferred_lft forever
3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 08:00:27:dc:fc:d5 brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.10/24 brd 10.0.0.255 scope global enp0s8
       valid_lft forever preferred_lft forever
    inet6 fe80::a00:27ff:fedc:fcd5/64 scope link
       valid_lft forever preferred_lft forever

nodes/cos7.json

    "ipaddress": "10.0.2.15",
    "macaddress": "08:00:27:EA:9B:B5",
    "ip6address": "fe80::a00:27ff:fedc:fcd5",
// を
    "ipaddress": "10.0.0.10",
    "macaddress": "08:00:27:dc:fc:d5",
    "ip6address": "fe80::a00:27ff:fedc:fcd5",

に書き換えちゃう。

したら

$ knife node show cos7

Node Name:   cos7
Environment: _default
FQDN:        cos7
IP:          10.0.0.10
Run List:    recipe[zsh]
Roles:
Recipes:     zsh, zsh::default
Platform:    centos 7.0.1406
Tags:

になってzshのインストールもさくっと出来た。
でも、、、
毎回この設定書き換わるから、この対処法は間違ってる。

とりあえず、今からプラバンdeなにか作ります。