CentOS7にChef server 12をインストール
file /etc/opscode/pivotal.pem is missing.
というエラー (https://github.com/chef/chef-server/issues/727)
-> cp /opt/opscode/embedded/service/omnibus-ctl/spec/fixtures/pivotal.pem /etc/opscode/
No resource, method, or local variable named `create_stop_system_service' for `Chef::Provider::MysqlService エラー
http://stackoverflow.com/questions/31051890/chef-failed-to-install-mysql-no-resouce-method-or-variable-named-createに対策が書いてあった。私の場合、alb2_installのrecipeを変更した
以下のエラーがでたが、chef-server-ctl reconfigureしたら解決した。
(install chef-manageの後で chef-server-ctl reconfigureを実行しなかったのが原因と思われる)
注意:pivotalというユーザは削除してはならないらしい。
[root@alb Downloads]# chef-server-ctl user-create anagix Joe Anagix support@anagix.com 'xxxxxxxxxxxx' --filename /home/anagix/chef/anagix.pem
ERROR: Failed to authenticate to https://127.0.0.1:443 as pivotal with key /etc/opscode/pivotal.pem
Response: Failed to authenticate as 'pivotal'. Ensure that your node_name and client key are correct.
次にorgとvalidatorを作る
chef-server-ctl org-create anagix 'Anagix Corporation' --association_user anagix --filename /home/anagix/chef/anagix-validator.pem
適当にclient.rbをつくってchef-clientを実行したところ以下のエラー
Authentication Error:
---------------------
Failed to authenticate to the chef server (http 401).
原因は、
chef_server_url 'https://alb.anagix.com/
としていたこと。managerにWEBで入り、Administration->Organizations->Generate Knife Configしたらわかった
client.rbを以下のようにしたら動いた
log_level :info
log_location STDOUT
chef_server_url 'https://alb.anagix.com/organizations/anagix'
validation_client_name 'anagix-validator'
validation_key '/etc/chef/anagix-validator.pem'
node_name 'restore'
ssl_verify_mode :verify_none
client_key '/Users/anagix/.chef/client.pem'
knife cookbook upload -a で、以下のエラー
ERROR: You authenticated successfully to https://alb.anagix.com/organizations/anagix as restore but you \
are not authorized for this action
Response: missing create permission
knife.rbのnode_name をanagix、client_keyをanagix.pemにしたらエラーしなくなった。
普通のnodeのknife.rbの場合、knife cookbook uplaod -a --user anagix --key ~/.chef/anagix.pem でもよい
omnibus installer:
curl -L https://www.chef.io/chef/install.sh | sudo bash
mysql cookbook(v6.0.3)をLinuxMint 17.1で使おうとしてはまった(未解決)
しばらくmysqlをアップデートしてなかったので、 仕様がまったく変わっていた。
以前は、LWRPではなかったように思う。 それはさておき本題。
linuxmint 17.1では、ohaiが 以下をかえす。
platform = 'linuxmint'
platform_family = 'debian'
platform_version = '17.1'
mysqlでは、ubuntu(10.04-14.04と14.10とdebianしかサポートしてない。
helpers.rbで、以下とかやってみた:
@pkginfo.set['debian']['17']['5.5']['client_package'] = %w(mysql-client libmysqlclient-dev)
def keyname_forで、return '7' if platform == 'linuxmint'
return '5.5' if node['platform_family'] == 'debian' && node['platform_version'].to_i == 17
/spec/mysql_service/debian/linuxmint_70_service_55_multi_spec.rb も作ってみたけどダメ。
chef-clientが以下のエラーで止まる:
No resource, method, or local variable named `create_stop_system_service' for `Chef::Provider::MysqlService ""'
Cookbook Trace:
---------------
/var/chef/cache/cookbooks/mysql/libraries/provider_mysql_service.rb:37:in `block in <class:MysqlService>'
とりあえずgive up。
chef 12 clientでは、SSL証明書を使うようになった
/var/opt/chef-server/nginx/caの下に home.anagix.com.crtというのがあるから
これをinstall.anagix.com.crtにrenameして利用者に渡せばいいっぽい。
利用者は、そのファイルを c:\chef\trusted_certs の下に置く。ディレクトリは
自分で作ってもらう。
Windows版chef 12 clientでは、rubyのバージョンが2に上がった(これまでは1.9.3)。
12.0.3では、ruby 2.0.0p451だった。
redmine installation
1. Used chef's ruby (/opt/chef/embedded/bin/ruby)
export PATH=/opt/chef/embedded/bin:$PATH
2. gem install rmagick --no-ri --no-rdoc failed
yum install ImageMagick-devel
setenv PKG_CONFIG_PATH /usr/lib/pkgconfig
backup serverの立ち上げ
1. 以下のようなknife.rbを作る
log_level :info
log_location STDOUT
node_name 'restore'
client_key '/Users/anagix/.chef/client.pem'
validation_client_name 'chef-validator'
validation_key '/Users/anagix/.chef/chef-validator.pem'
chef_server_url 'https://backup.anagix.com'
cache_type 'BasicFile'
cache_options( :path => '/Users/anagix/.chef/checksums' )
cookbook_path [ "/Users/anagix/chef-repo/cookbooks" ]
chef-validator.pemはbackup serverからもってくる。
2. chef-client -c knife.rb を実行
client.pemが作られる
3. webuiで、ノード(この場合restore)をadminにかえる
4. HOMEで、knife backup restoreを実行
以下のようなエラーが出た
=== Restoring cookbooks ===
Restoring cookbook alb_install
Uploading alb_install [0.1.15]
ERROR: Cookbook alb_install depends on cookbook mysql version >= 0.0.0,
ERROR: which is not currently being uploaded and cannot be found on the server.
5. backup serverで、chef-server-ctl reconfigure を実行
その前に、/etc/hostsを以下のように設定するのがミソかも知れない:
127.0.0.1 backup.anagix.com tomoko localhost.localdomain localhost
::1 localhost6.localdomain6 localhost6
192.168.0.228 backup.anagix.com tomoko
注意:127.0.0.1の行で、backup.anagix.com はlocalhostxxxより前でなくてはならない
6. cookbook は入れなおす
chef-repoで、knife cookbook upload -a
7. 再度、knife backup restoreを実行するとエラーは出なかった(cookbookは入れなおしていたので当然か)
以上
vagrantでv-rootがマウントされない
mount -t vboxsf v-root /vagrant
/etc/init.d/vboxadd setup (guest additionsがあたらしくなってkernel moduleのコンパイルが必要な場合)
ubuntuでパッケージが見つからない場合
apt-get update する
Vagrantでboxが古くなっている場合は、
ユーザrubyへのgemのインストール
Installing gems in a new Chef system Ruby during the Chef Run
# Need to reload OHAI to ensure the newest ruby is loaded up
ohai "reload" do action :reload end ["bundler", "rake", "...."].each do |gem_to_install| ruby_block "install #{gem_to_install} in new ruby" do block do g = Chef::Resource::GemPackage.new(gem_to_install) g.gem_binary "#{node['languages']['ruby']['bin_dir']}/gem" g.run_action(:install) end action :create end end
mysqlのルートパスワード
自動生成されたものが、/etc/mysql/grant.sql に記録されている
mysql serverが入らないときの recipe
recipe[mysql::server]
古いlinux kernel (2.6.30以前らしい)で、shefなどが止まる問題の対策
centos4.8(32bit, kernel 2.6.9-89)で対策したが、centos5(64bit, kernel 2.6.18)では必要なかったのでよくわからん
対策: lib/ohai/plugins/linux/[memory.rb, uptime.rb]で以下のように修正した
#File.open("/proc/meminfo").each do |line|
`/bin/cat /proc/meminfo`.each_line do |line|
#uptime, idletime = File.open("/proc/uptime").gets.split(" ")
uptime, idletime = `/bin/cat /proc/uptime`.split(" ")
参考:Files in /proc should not be read directly by Ruby rubyで既知の問題のようだ
Fix for older linux kernels and blocking read of /proc/* files in virtualization plugin ohaiでも指摘されているがohai-6.16.0時点で修正されてない