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なにか作ります。