recipe でよく使うコマンド

recipeでよく使うコマンドのメモです。

パッケージインストール

NTPサーバの例

%w{
  ntp
}.each do |pkg|
  package pkg do
    action :install
  end
end

サービスの起動

service "ntpd" do
  action [:enable, :start]
end

テンプレートファイル切り替え

template "/etc/ntp.conf" do
  source "ntp.conf.erb"
  user "root"
  group "root"
  mode 0644
end

コマンド実行

execute "ntpdate ntp.nict.jp" do
  command "ntpdate ntp.nict.jp"
  user "root"
  group "root"
end

コマンド連続実行

zabbixでの例

bash "create user, database" do
  code <<-EOH
    mysql -u root -e "create database zabbix character set utf8 collate utf8_bin;"
    mysql -u root -e "grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix';"
    mysql -u root -e "flush privileges;"
  EOH
end

rpmファイルのインストール

nginxの場合

remote_file "#{Chef::Config[:file_cache_path]}/nginx-release-rhel-6-0.el6.ngx.noarch.rpm" do
  source "http://nginx.org/packages/rhel/6/noarch/RPMS/nginx-release-rhel-6-0.el6.ngx.noarch.rpm"
  not_if "rpm -qa | grep -q '^nginx-release'"
  action :create
  notifies :install, "rpm_package[nginx-release]", :immediately
end

rpm_package "nginx-release" do
  source "#{Chef::Config[:file_cache_path]}/nginx-release-rhel-6-0.el6.ngx.noarch.rpm"
  action :nothing
end

githubリポジトリを入れる

%w{
  https://github.com/k2la/tuning.git
}.each do |repo|
  file = repo.split("/")[-1].split(".")[0]
  git "/home/vagrant/#{file}" do
    repository repo
    revision "master"
    user "vagrant"
    group "vagrant"
    action :sync
  end
end