By doing this project, you will learn how to automate the deployment of the WordPress application on the Amazon EC2 cloud using Cloudify.
Write a Cloudify blueprint for automating the installation of WordPress on the Amazon EC2 cloud. Perform the test on your Amazon EC2 account.
The blueprint should be written based on this topology:
You may have a look at example blueprint from cloudify-nodecellar-example which we have used in the previous tutorial. The blueprint is based on TOSCA standard. You may have a look at this document.
Email your ip address of your WordPress site to the instructors. walid.gaaloul@telecom-sudparis.eu
You can use the following script to associate with your topology:
#!/bin/bash -e sudo apt-get update sudo apt-get -y install apache2
#!/bin/bash -e sudo apt-get update sudo apt-get -y install php5 php5-mysql libapache2-mod-php5 php5-mcrypt sudo sed -i.bak "s/index.html index.cgi index.pl index.php/index.php index.html index.cgi/g" /etc/apache2/mods-enabled/dir.conf sudo service apache2 restart
#!/bin/bash -e sudo apt-get update sudo debconf-set-selections <<< 'mysql-server mysql-server/root_password password 123456' sudo debconf-set-selections <<< 'mysql-server mysql-server/root_password_again password 123456' sudo apt-get -y install mysql-server sudo sed -i.bak "s/bind-address/#bind-address/g" /etc/mysql/my.cnf sudo service mysql restart Q1="CREATE DATABASE wordpress;" Q2="CREATE USER 'wordpressuser'@'localhost' IDENTIFIED BY 'password';" Q3="CREATE USER 'wordpressuser'@'%' IDENTIFIED BY 'password';" Q4="GRANT ALL ON *.* TO 'wordpressuser'@'localhost';" Q5="GRANT ALL ON *.* TO 'wordpressuser'@'%';" SQL="${Q1}${Q2}${Q3}${Q4}${Q5}" mysql -h localhost -uroot -p123456 -e "${SQL}"
#!/bin/bash set -e function download() { url=$1 name=$2 if [ -f "`pwd`/${name}" ]; then ctx logger info "`pwd`/${name} already exists, No need to download" else # download to given directory ctx logger info "Downloading ${url} to `pwd`/${name}" set +e curl_cmd=$(which curl) wget_cmd=$(which wget) set -e if [[ ! -z ${curl_cmd} ]]; then curl -L -o ${name} ${url} elif [[ ! -z ${wget_cmd} ]]; then wget -O ${name} ${url} else ctx logger error "Failed to download ${url}: Neither 'cURL' nor 'wget' were found on the system" exit 1; fi fi } function untar() { tar_archive=$1 destination=$2 if [ ! -d ${destination} ]; then inner_name=$(tar -tf "${tar_archive}" | grep -o '^[^/]\+' | sort -u) ctx logger info "Untaring ${tar_archive}" tar -zxvf ${tar_archive} ctx logger info "Moving ${inner_name} to ${destination}" mv ${inner_name} ${destination} fi } TEMP_DIR='/tmp' WORDPRESS_TARBALL_NAME='latest.tar.gz' WORDPRESS_ROOT_PATH=${TEMP_DIR}/$(ctx execution-id)/wordpress WORDPRESS_PATH=~/wordpress mkdir -p ${WORDPRESS_ROOT_PATH} cd ${TEMP_DIR} download http://wordpress.org/${WORDPRESS_TARBALL_NAME} ${WORDPRESS_TARBALL_NAME} untar ${WORDPRESS_TARBALL_NAME} ${WORDPRESS_PATH} cp ~/wordpress/wp-config-sample.php ~/wordpress/wp-config.php sudo rsync -avP ~/wordpress/ /var/www/html/ cd /var/www/html sudo chown -R www-data:www-data * sudo mkdir /var/www/html/wp-content/uploads sudo chown -R www-data:www-data /var/www/html/wp-content/uploads export MONGO_HOST=$(ctx instance runtime_properties mysql_ip_address) #replace default database setting with your setting sed -i.bak "s/define('DB_HOST', 'localhost');/define('DB_HOST', '${MYSQL_HOST}');/g" /var/www/html/wp-config.php sed -i.bak "s/database_name_here/wordpress/g" /var/www/html/wp-config.php sed -i.bak "s/username_here/wordpressuser/g" /var/www/html/wp-config.php sed -i.bak "s/password_here/password/g" /var/www/html/wp-config.php
#!/bin/bash -e cd ~/wordpress sudo rsync -avP ~/wordpress/ /var/www/html/ cd /var/www/html sudo chown -R www-data:www-data * sudo mkdir /var/www/html/wp-content/uploads sudo chown -R www-data:www-data /var/www/html/wp-content/uploads
When you want to uninstall your deployment but it’s not possible because there is a running task. Use the following commands:
# to see all events $ cfy executions list -d wordpress # cancel the event $ cfy executions cancel -e YOUR_EVENT_ID
After that, you can uninstall your deployment and remove your deployment and blueprint:
cfy executions start -w uninstall -d wordpress --force cfy deployments delete -d wordpress cfy blueprints delete -b wordpress