chefの学習(レシピを作成)
レシピ
パッケージやコマンドの制御を記載したもの。
apacheレシピ
sudo knife cookbook create apache -o /var/chef/cookbooks
で作成して
/var/chef/cookbooks/apache/recipes/default.rb
package "httpd" do action :install end package "httpd-devel" do action :install end service "httpd" do action [ :enable, :start ] end
※パッケージを1つずつインストールする場合は毎回記載しなくてはならない…
実行
※複数指定することでまとめて実行
[vagrant@localhost ~]$ sudo chef-solo -o apache,php,mysql [2014-07-13T04:50:08+00:00] WARN: ***************************************** [2014-07-13T04:50:08+00:00] WARN: Did not find config file: /etc/chef/solo.rb, using command line options. [2014-07-13T04:50:08+00:00] WARN: ***************************************** [2014-07-13T04:50:08+00:00] WARN: * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * SSL validation of HTTPS requests is disabled. HTTPS connections are still encrypted, but chef is not able to detect forged replies or man in the middle attacks. To fix this issue add an entry like this to your configuration file: ``` # Verify all HTTPS connections (recommended) ssl_verify_mode :verify_peer # OR, Verify only connections to chef-server verify_api_cert true ``` To check your SSL configuration, or troubleshoot errors, you can use the `knife ssl check` command like so: ``` knife ssl check -c /etc/chef/solo.rb ``` * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * Starting Chef Client, version 11.12.8 [2014-07-13T04:50:16+00:00] WARN: Run List override has been provided. [2014-07-13T04:50:16+00:00] WARN: Original Run List: [] [2014-07-13T04:50:16+00:00] WARN: Overridden Run List: [recipe[apache], recipe[php], recipe[mysql]] Compiling Cookbooks... Converging 9 resources Recipe: apache::default * package[httpd] action install - install version 2.2.15-30.el6.centos of package httpd * package[httpd-devel] action install - install version 2.2.15-30.el6.centos of package httpd-devel * service[httpd] action enable - enable service service[httpd] * service[httpd] action start - start service service[httpd] Recipe: php::default * package[php] action install - install version 5.3.3-27.el6_5 of package php * package[php-devel] action install - install version 5.3.3-27.el6_5 of package php-devel Recipe: mysql::default * package[mysql] action install - install version 5.1.73-3.el6_5 of package mysql * package[mysql-devel] action install - install version 5.1.73-3.el6_5 of package mysql-devel * package[mysql-server] action install - install version 5.1.73-3.el6_5 of package mysql-server * service[mysqld] action enable - enable service service[mysqld] * service[mysqld] action start - start service service[mysqld] Running handlers: Running handlers complete Chef Client finished, 11/11 resources updated in 216.118470292 seconds [vagrant@localhost ~]$
※少し時間がかかります。
リポジトリとか指定していないのでデフォルトのものになる感じかな?
php54サンプル
レシピ
sudo knife cookbook create php54 -o /var/chef/cookbooks
↓
/var/chef/cookbooks/php54/recipes/default.rb
remote_file "#{Chef::Config[:file_cache_path]}/latest.rpm" do source "http://mirror.webtatic.com/yum/el6/latest.rpm" not_if "rpm -qa | grep -q '^latest'" action :create notifies :install, "rpm_package[latest]", :immediately end rpm_package "latest" do source "#{Chef::Config[:file_cache_path]}/latest.rpm" action :nothing end %w{php54w php54w-bcmath php54w-cli php54w-common php54w-dba php54w-devel php54w-embedded php54w-enchant php54w-fpm php54w-gd php54w-imap php54w-interbase php54w-intl php54w-ldap php54w-mbstring php54w-mcrypt php54w-mssql php54w-mysqlnd php54w-odbc php54w-pdo php54w-pear php54w-pecl-apc php54w-pecl-apcu php54w-pecl-apcu-devel php54w-pecl-gearman php54w-pecl-memcache php54w-pecl-xdebug php54w-pecl-zendopcache php54w-pgsql php54w-process php54w-pspell php54w-recode php54w-snmp php54w-soap php54w-tidy php54w-xml php54w-xmlrpc}.each do |item| package item do action :install end end
※リポジトリをダウンロードしないといけないらしく多少手間です。