vm/chef/cookbooks/wordpress-ha/recipes/default.rb (107 lines of code) (raw):
# Copyright 2022 Google LLC
#
# 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 'apache2::rm-index'
include_recipe 'apache2::security-config'
include_recipe 'mysql::configure-apt-repo-version-5.7'
include_recipe 'php74'
include_recipe 'php74::module_libapache2'
include_recipe 'php74::module_mbstring'
include_recipe 'php74::module_mysql'
include_recipe 'php74::module_xml'
apt_update do
action :update
end
package node['wordpress-ha']['packages'] do
action :install
end
package node['wordpress-ha']['temp_packages'] do
action :install
end
remote_file '/tmp/wp-cli.phar' do
source node['wordpress-ha']['cli']['url']
action :create
end
# Reference: http://wp-cli.org/#installing
bash 'configure wp cli' do
cwd '/tmp'
code <<-EOH
# Change permissions on the wp-cli.phar file for manipulation
chmod +x wp-cli.phar
# Move wp-cli.phar to complete installation
mv wp-cli.phar /usr/local/bin/wp
EOH
end
execute 'download wordpress' do
cwd '/var/www/html'
command <<-EOH
wp core download \
--version=${version} \
--path=/var/www/html \
--allow-root
EOH
environment({ 'version' => node['wordpress-ha']['version'] })
live_stream true
end
remote_file '/tmp/wp-stateless.zip' do
source "https://downloads.wordpress.org/plugin/wp-stateless.#{node['wordpress-ha']['wp-stateless']['version']}.zip"
action :create
end
execute 'unzip wp-stateless' do
user 'root'
cwd '/tmp'
command <<-EOH
unzip -q /tmp/wp-stateless.zip -d /opt/c2d/downloads
EOH
end
execute 'chown wordpress home' do
command 'chown -R ${user}:${user} /var/www/html'
environment({ 'user' => node['wordpress-ha']['user'] })
end
execute 'a2enmods' do
command 'a2enmod rewrite proxy_fcgi setenvif'
end
execute 'a2enconfs' do
command 'a2enconf php7.4-fpm'
end
template '/etc/apache2/sites-available/wordpress.conf' do
source 'wordpress.conf.erb'
end
execute 'enable wordpress.conf' do
command 'a2ensite wordpress'
end
# GCS Sync Setup
cookbook_file '/lib/systemd/system/gcs-sync.service' do
source 'gcs-sync.service'
owner 'root'
group 'root'
mode 0644
action :create
end
cookbook_file '/opt/c2d/downloads/gcs-push.sh' do
source 'gcs-push.sh'
owner 'root'
group 'root'
mode '0755'
action :create
end
cookbook_file '/opt/c2d/downloads/gcs-pull.sh' do
source 'gcs-pull.sh'
owner 'root'
group 'root'
mode '0755'
action :create
end
cookbook_file '/opt/c2d/downloads/gcs-pull-once.sh' do
source 'gcs-pull-once.sh'
owner 'root'
group 'root'
mode '0755'
action :create
end
cookbook_file '/opt/c2d/downloads/gcs-pull-lib.sh' do
source 'gcs-pull-lib.sh'
owner 'root'
group 'root'
mode '0755'
action :create
end
# The sync service will be enabled and started in a startup script, since we
# need to delete one of the push/pull scripts, and rename the one we keep to
# /opt/c2d/downloads/gcs-sync based on what role the VM will be playing
c2d_startup_script 'wordpress-ha-setup'
c2d_startup_script 'load-balancer-check'
package node['wordpress-ha']['temp_packages'] do
action :purge
end