From e5a0d84b20c6377e145460ca8e729ebaceb8cea5 Mon Sep 17 00:00:00 2001 From: Kris Lamoureux Date: Wed, 16 Jan 2019 14:40:35 -0500 Subject: [PATCH] WordPress Installs Sets up a very basic WordPress website on the puppet agent. --- Vagrantfile | 3 +- code/environments/production/Puppetfile | 17 ++++++ .../environments/production/manifests/site.pp | 3 +- .../modules/wordpress/manifests/init.pp | 58 +++++++++++++++++++ .../wordpress/templates/wp-config.php.epp | 58 +++++++++++++++++++ setup/roles/client/tasks/main.yml | 1 - setup/roles/server/tasks/main.yml | 10 ++++ 7 files changed, 147 insertions(+), 3 deletions(-) create mode 100644 code/environments/production/Puppetfile create mode 100644 code/environments/production/modules/wordpress/manifests/init.pp create mode 100644 code/environments/production/modules/wordpress/templates/wp-config.php.epp diff --git a/Vagrantfile b/Vagrantfile index 6e101aa..3e5ca59 100644 --- a/Vagrantfile +++ b/Vagrantfile @@ -19,7 +19,8 @@ Vagrant.configure("2") do |config| end # Sync Puppet code to Puppet Master - master.vm.synced_folder "./code", "/etc/puppet/code" + master.vm.synced_folder "./code", "/etc/puppet/code", type: "rsync", + rsync__args: ["--verbose", "--archive", "-z", "--copy-links"] end diff --git a/code/environments/production/Puppetfile b/code/environments/production/Puppetfile new file mode 100644 index 0000000..2d26829 --- /dev/null +++ b/code/environments/production/Puppetfile @@ -0,0 +1,17 @@ +forge "http://forge.puppetlabs.com" + +# Custom +mod 'wordpress', local: true + +# Forge Mods +mod 'puppetlabs-apache', '4.0.0' # Supported +mod 'puppetlabs-stdlib', '5.1.0' +mod 'puppetlabs-concat', '5.2.0' + +mod 'puppet-php', '6.0.2' # Approved + +mod 'puppetlabs-mysql', '7.0.0' # Supported +mod 'puppetlabs-translate', '1.2.0' + +mod 'puppet-archive', '3.2.1' # Approved + diff --git a/code/environments/production/manifests/site.pp b/code/environments/production/manifests/site.pp index e8b79fa..92aaf00 100644 --- a/code/environments/production/manifests/site.pp +++ b/code/environments/production/manifests/site.pp @@ -1,3 +1,4 @@ node 'webserver' { - notify { 'Hello Puppet!': } + include wordpress } + diff --git a/code/environments/production/modules/wordpress/manifests/init.pp b/code/environments/production/modules/wordpress/manifests/init.pp new file mode 100644 index 0000000..01a78db --- /dev/null +++ b/code/environments/production/modules/wordpress/manifests/init.pp @@ -0,0 +1,58 @@ +class wordpress { + + # Install webserver + class { 'apache': + default_vhost => false, + mpm_module => 'prefork' + } + + # Enable PHP support + class { 'apache::mod::php': } + + # Install database server + class { '::mysql::server': } + + # Install PHP's MySQL module + package { 'php-mysql': + ensure => present, + notify => Service['apache2'] + } + + # Create database + mysql::db { 'wordpress': + user => 'wordpress_user', + password => 'Password1', + host => 'localhost', + grant => ['ALL', 'GRANT'] + } + + file { '/var/www/wordpress/': + ensure => directory + } + + file { '/var/www/wordpress/public_html/wp-config.php': + ensure => file, + content => template('wordpress/wp-config.php.epp') + } + + # Deploy WordPress code + archive { '/tmp/wordpress-5.0.3.tar.gz': + ensure => present, + extract => true, + extract_command => 'tar xfz %s --strip-components=1', + extract_path => '/var/www/wordpress/public_html', + source => 'https://wordpress.org/wordpress-5.0.3.tar.gz', + checksum => 'f9a4b482288b5be7a71e9f3dc9b5b0c1f881102b', + checksum_type => 'sha1', + creates => '/var/www/wordpress/public_html/index.php', + cleanup => true + } + + apache::vhost { 'www.example.com': + port => 80, + docroot => '/var/www/wordpress/public_html', + notify => Service['apache2'] + } + +} + diff --git a/code/environments/production/modules/wordpress/templates/wp-config.php.epp b/code/environments/production/modules/wordpress/templates/wp-config.php.epp new file mode 100644 index 0000000..2816de2 --- /dev/null +++ b/code/environments/production/modules/wordpress/templates/wp-config.php.epp @@ -0,0 +1,58 @@ + 1 when: agent_install.changed - become_user: vagrant diff --git a/setup/roles/server/tasks/main.yml b/setup/roles/server/tasks/main.yml index f7cf285..04ccc66 100644 --- a/setup/roles/server/tasks/main.yml +++ b/setup/roles/server/tasks/main.yml @@ -10,6 +10,16 @@ service: name=ntp state=restarted when: ntp_status.changed +- name: Install R10K + apt: name=r10k state=present + register: r10k_install + +- name: Install Puppet Modules + shell: + cmd: r10k puppetfile install + chdir: /etc/puppet/code/environments/production + when: r10k_install.changed + - name: Wait for Webserver Key wait_for: path: /var/lib/puppet/ssl/ca/requests/webserver.pem