# # Cookbook Name:: wordpress # Recipe:: default # # Copyright 2009-2010, Opscode, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # include_recipe "apache2" include_recipe "mysql::server" include_recipe "php" include_recipe "php::module_mysql" include_recipe "apache2::mod_php5" if node.has_key?("ec2") server_fqdn = node['ec2']['public_hostname'] else server_fqdn = node['fqdn'] end node.set['wordpress']['db']['password'] = secure_password node.set['wordpress']['keys']['auth'] = secure_password node.set['wordpress']['keys']['secure_auth'] = secure_password node.set['wordpress']['keys']['logged_in'] = secure_password node.set['wordpress']['keys']['nonce'] = secure_password remote_file "#{Chef::Config[:file_cache_path]}/wordpress-#{node['wordpress']['version']}.tar.gz" do # checksum node['wordpress']['checksum'] source "http://wordpress.org/wordpress-#{node['wordpress']['version']}.tar.gz" mode "0644" end directory "#{node['wordpress']['dir']}" do owner "root" group "root" mode "0755" action :create recursive true end execute "untar-wordpress" do cwd node['wordpress']['dir'] command "tar --strip-components 1 -xzf #{Chef::Config[:file_cache_path]}/wordpress-#{node['wordpress']['version']}.tar.gz" creates "#{node['wordpress']['dir']}/wp-settings.php" end execute "mysql-install-wp-privileges" do command "/usr/bin/mysql -u root #{node['mysql']['server_root_password'].empty? ? '' : '-p' }#{node['mysql']['server_root_password']} < #{node['mysql']['conf_dir']}/wp-grants.sql" action :nothing end template "#{node['mysql']['conf_dir']}/wp-grants.sql" do source "grants.sql.erb" owner "root" group "root" mode "0600" variables( :user => node['wordpress']['db']['user'], :password => node['wordpress']['db']['password'], :database => node['wordpress']['db']['database'] ) notifies :run, "execute[mysql-install-wp-privileges]", :immediately end execute "create #{node['wordpress']['db']['database']} database" do command "/usr/bin/mysqladmin -u root #{node['mysql']['server_root_password'].empty? ? '' : '-p' }#{node['mysql']['server_root_password']} create #{node['wordpress']['db']['database']}" not_if do require 'mysql' m = Mysql.new("localhost", "root", node['mysql']['server_root_password']) m.list_dbs.include?(node['wordpress']['db']['database']) end unless Chef::Config[:solo] notifies :create, "ruby_block[save node data]", :immediately end end # save node data after writing the MYSQL root password, so that a failed chef-client run that gets this far doesn't cause an unknown password to get applied to the box without being saved in the node data. unless Chef::Config[:solo] ruby_block "save node data" do block do node.save end action :create end end log "Navigate to 'http://#{server_fqdn}/wp-admin/install.php' to complete wordpress installation" do action :nothing end template "#{node['wordpress']['dir']}/wp-config.php" do source "wp-config.php.erb" owner "root" group "root" mode "0644" variables( :database => node['wordpress']['db']['database'], :user => node['wordpress']['db']['user'], :password => node['wordpress']['db']['password'], :auth_key => node['wordpress']['keys']['auth'], :secure_auth_key => node['wordpress']['keys']['secure_auth'], :logged_in_key => node['wordpress']['keys']['logged_in'], :nonce_key => node['wordpress']['keys']['nonce'] ) notifies :write, "log[Navigate to 'http://#{server_fqdn}/wp-admin/install.php' to complete wordpress installation]" end apache_site "000-default" do enable false end web_app "wordpress" do template "wordpress.conf.erb" docroot "#{node['wordpress']['dir']}" server_name server_fqdn server_aliases node['fqdn'] end