Thứ tư, 22/10/2014 | 00:00 GMT+7

Cách tạo module puppet để tự động cài đặt WordPress trên Ubuntu 14.04

Puppet là một công cụ quản lý cấu hình mà administrator hệ thống sử dụng để tự động hóa các quy trình liên quan đến việc duy trì cơ sở hạ tầng CNTT của công ty. Viết các file kê khai Puppet riêng lẻ là đủ để tự động hóa các việc đơn giản. Tuy nhiên, khi bạn có toàn bộ quy trình làm việc để tự động hóa, tốt nhất là bạn nên tạo và sử dụng module Puppet . Mô-đun Puppet chỉ là một tập hợp các file kê khai cùng với các file mà các file kê khai đó yêu cầu, được gói gọn gàng thành một gói có thể sử dụng lại và chia sẻ được.

WordPress là một nền tảng blog rất phổ biến. Là một administrator , bạn có thể thấy mình cài đặt WordPress và các phụ thuộc của nó (Apache, PHP và MySQL) rất thường xuyên. Quá trình cài đặt này là một thành phần sáng giá cho tự động hóa và hôm nay ta tạo một module Puppet để thực hiện điều đó.

Hướng dẫn này bao gồm những gì

Trong hướng dẫn này, bạn sẽ tạo một module Puppet có thể thực hiện các hoạt động sau:

  • Cài đặt Apache và PHP
  • Cài đặt MySQL
  • Tạo database và user database trên MySQL cho WordPress
  • Cài đặt và cấu hình WordPress

Sau đó, bạn sẽ tạo một file kê khai đơn giản sử dụng module để cài đặt WordPress trên Ubuntu 14.04. Ở cuối hướng dẫn này, bạn sẽ có một module WordPress có thể tái sử dụng và cài đặt WordPress đang hoạt động trên server .

Yêu cầu

Bạn cần những thứ sau:

  • Server Ubuntu 14.04
  • Một user sudo
  • Bạn chắc chắn hiểu cách quản lý WordPress khi bạn vào cài đặt console . Nếu bạn cần trợ giúp về việc đó, hãy xem các phần sau của hướng dẫn này

Bước 1 - Cài đặt puppet ở chế độ độc lập

Để cài đặt Puppet bằng apt-get , repository Puppet Labs Package phải được thêm vào danh sách các repository có sẵn. Puppet Labs có một gói Debian thực hiện việc này. Tên của gói này tùy thuộc vào version Ubuntu bạn đang sử dụng. Vì hướng dẫn này sử dụng Ubuntu 14.04, Trusty Tahr, bạn phải download và cài đặt puppetlabs-release-trusty.deb .

Tạo và chuyển vào folder Downloads của bạn:

mkdir ~/Downloads cd ~/Downloads 

Nhận gói:

wget https://apt.puppetlabs.com/puppetlabs-release-trusty.deb sudo dpkg -i puppetlabs-release-trusty.deb 

Đến đây bạn có thể cài đặt Puppet bằng apt-get .

sudo apt-get update sudo apt-get install puppet 

Puppet hiện đã được cài đặt. Bạn có thể kiểm tra bằng lệnh :

sudo puppet --version 

Nó sẽ in version của Puppet. Tại thời điểm viết bài này, version mới nhất là 3.7.1 .

Lưu ý : Nếu bạn thấy thông báo cảnh báo về templatedir , hãy kiểm tra giải pháp ở Bước 2.

Bước 2 - Cài đặt các module Apache và MySQL

Quản lý Apache và MySQL là những hoạt động phổ biến đến nỗi PuppetLabs có các module riêng cho chúng. Ta sẽ sử dụng các module này để cài đặt và cấu hình Apache và MySQL.

Bạn có thể liệt kê tất cả các module Puppet được cài đặt trên hệ thống của bạn bằng lệnh sau:

sudo puppet module list 

Bạn sẽ không tìm thấy module nào hiện được cài đặt.

Bạn có thể thấy một thông báo cảnh báo cho biết:

Warning: Setting templatedir is deprecated. See http://links.puppetlabs.com/env-settings-deprecations (at /usr/lib/ruby/vendor_ruby/puppet/settings.rb:1071:in `each') 

Để xóa cảnh báo này, hãy sử dụng nano để chỉnh sửa file rối.conf và comment dòng templatedir :

sudo nano /etc/puppet/puppet.conf 

Sau khi chỉnh sửa, file sẽ có các nội dung sau. Bạn chỉ đang comment về dòng templatedir :

[main] logdir=/var/log/puppet vardir=/var/lib/puppet ssldir=/var/lib/puppet/ssl rundir=/var/run/puppet factpath=$vardir/lib/facter #templatedir=$confdir/templates  [master] # These are needed when the puppetmaster is run by passenger # and can safely be removed if webrick is used. ssl_client_header = SSL_CLIENT_S_DN ssl_client_verify_header = SSL_CLIENT_VERIFY 

Điều đó sẽ loại bỏ thông báo cảnh báo.

Cài đặt các module PuppetLabs Apache và MySQL:

sudo puppet module install puppetlabs-apache sudo puppet module install puppetlabs-mysql 

Xác minh cài đặt bằng cách liệt kê lại các module :

sudo puppet module list 

Bạn có thể thấy các module Apache và MySQL trong danh sách.

/etc/puppet/modules ├── puppetlabs-apache (v1.1.1) ├── puppetlabs-concat (v1.1.1) ├── puppetlabs-mysql (v2.3.1) └── puppetlabs-stdlib (v4.3.2) 

Bước 3 - Tạo một module mới cho WordPress

Tạo một folder mới để giữ tất cả các module tùy chỉnh của bạn.

mkdir ~/MyModules cd ~/MyModules 

Hãy để ta gọi module của ta là do-wordpress . Tạo module mới chung:

puppet module generate do-wordpress --skip-interview 

Nếu bạn không bao gồm cờ –skip-phỏng vấn , lệnh sẽ tương tác và sẽ nhắc bạn với nhiều câu hỏi khác nhau về module để điền vào file metadata.json .

Lúc này một folder mới có tên do-wordpress đã được tạo. Nó chứa mã soạn sẵn và cấu trúc folder cần thiết để xây dựng module .

Chỉnh sửa file metadata.json để thay thế rốilabs-stdlib bằng rốilabs / stdlib .

nano ~/MyModules/do-wordpress/metadata.json 

Chỉnh sửa này là bắt buộc do một lỗi hiện đang mở trong Puppet. Sau khi thay đổi, file metadata.json của bạn sẽ trông giống như sau:

{   "name": "do-wordpress",   "version": "0.1.0",   "author": "do",   "summary": null,   "license": "Apache 2.0",   "source": "",   "project_page": null,   "issues_url": null,   "dependencies": [     {"name":"puppetlabs/stdlib","version_requirement":">= 1.0.0"}   ] } 

Bước 4 - Tạo một file kê khai để cài đặt Apache và PHP

Sử dụng nano để tạo và chỉnh sửa file có tên web.pp trong folder tệp kê khai, file này sẽ cài đặt Apache và PHP:

nano ~/MyModules/do-wordpress/manifests/web.pp 

Cài đặt Apache và PHP với các tham số mặc định. Ta sử dụng prefork làm MPM (Multi-Processing Module) để tối đa hóa khả năng tương thích với các thư viện khác.

Thêm chính xác mã sau vào file :

class wordpress::web {      # Install Apache     class {'apache':          mpm_module => 'prefork'     }      # Add support for PHP      class {'::apache::mod::php': } } 

Bước 5 - Tạo file để lưu trữ các biến cấu hình

Sử dụng nano để tạo và chỉnh sửa file có tên conf.pp trong folder tệp kê khai .

nano ~/MyModules/do-wordpress/manifests/conf.pp 

Tệp này là nơi bạn nên đặt các giá trị cấu hình tùy chỉnh như password và tên. Mọi file cấu hình khác trên hệ thống sẽ lấy các giá trị của nó từ file này.

Trong tương lai, nếu bạn cần thay đổi cấu hình Wordpress / MySQL, bạn sẽ chỉ phải thay đổi file này.

Thêm mã sau vào file . Đảm bảo rằng bạn thay thế các giá trị database bằng thông tin tùy chỉnh mà bạn muốn sử dụng với WordPress. Rất có thể bạn cần đặt server db thành localhost . Bạn nên thay đổi các rootpassworddb password user .

Các biến mà bạn có thể hoặc nên chỉnh sửa được đánh dấu màu đỏ :

class wordpress::conf {     # You can change the values of these variables     # according to your preferences      $root_password = 'password'     $db_name = 'wordpress'     $db_user = 'wp'     $db_user_password = 'password'     $db_host = 'localhost'      # Don't change the following variables      # This will evaluate to wp@localhost     $db_user_host = "${db_user}@${db_host}"      # This will evaluate to wp@localhost/wordpress.*     $db_user_host_db = "${db_user}@${db_host}/${db_name}.*" } 

Bước 6 - Tạo một file kê khai cho MySQL

Sử dụng nano để tạo và chỉnh sửa file có tên db.pp trong folder tệp kê khai :

nano ~/MyModules/do-wordpress/manifests/db.pp 

Tệp kê khai này thực hiện những việc sau:

  • Cài đặt server MySQL
  • Đặt password root cho server MySQL
  • Tạo database cho Wordpress
  • Tạo user cho Wordpress
  • Cấp quyền cho user để truy cập database
  • Cài đặt ứng dụng client MySQL và các liên kết cho các ngôn ngữ khác nhau

Tất cả các hành động trên được thực hiện bởi các lớp ::mysql::server::mysql::client .

Thêm mã sau vào file chính xác như được hiển thị. Comment nội tuyến được bao gồm để hiểu rõ hơn:

class wordpress::db {      class { '::mysql::server':          # Set the root password         root_password => $wordpress::conf::root_password,          # Create the database         databases => {             "${wordpress::conf::db_name}" => {                 ensure => 'present',                 charset => 'utf8'             }         },          # Create the user         users => {             "${wordpress::conf::db_user_host}" => {                 ensure => present,                 password_hash => mysql_password("${wordpress::conf::db_user_password}")             }         },          # Grant privileges to the user         grants => {             "${wordpress::conf::db_user_host_db}" => {                 ensure     => 'present',                 options    => ['GRANT'],                 privileges => ['ALL'],                 table      => "${wordpress::conf::db_name}.*",                 user       => "${wordpress::conf::db_user_host}",             }         },     }      # Install MySQL client and all bindings     class { '::mysql::client':         require => Class['::mysql::server'],         bindings_enable => true     } } 

Bước 7 - Download WordPress mới nhất

Download gói cài đặt WordPress mới nhất từ trang web chính thức bằng wget và lưu trữ trong thư mục file .

Tạo và chuyển đến một folder mới:

mkdir ~/MyModules/do-wordpress/files cd ~/MyModules/do-wordpress/files 

Download các file :

wget http://wordpress.org/latest.tar.gz 

Bước 8 - Tạo Mẫu cho wp-config.php

Bạn có thể đã biết rằng Wordpress cần một file wp-config.php chứa thông tin về database MySQL mà nó được phép sử dụng. Một mẫu được sử dụng để Puppet có thể tạo file này với các giá trị phù hợp.

Tạo một folder mới có tên là các mẫu .

mkdir ~/MyModules/do-wordpress/templates 

Di chuyển vào thư mục / tmp :

cd /tmp 

Extract các file WordPress:

tar -xvzf ~/MyModules/do-wordpress/files/latest.tar.gz  # Extract the tar 

Tệp mới nhất.tar.gz mà bạn đã download chứa file wp-config-sample.php . Sao chép file vào folder mẫu dưới dạng wp-config.php.erb .

cp /tmp/wordpress/wp-config-sample.php ~/MyModules/do-wordpress/templates/wp-config.php.erb 

Dọn dẹp thư mục / tmp :

rm -rf /tmp/wordpress  # Clean up 

Chỉnh sửa file wp-config.php.erb bằng nano .

nano ~/MyModules/do-wordpress/templates/wp-config.php.erb 

Sử dụng các biến được xác định trong conf.pp để đặt giá trị cho DB NAME , DBUSER , DB PASSWORDDBHOST . Bạn có thể sử dụng cài đặt chính xác được hiển thị bên dưới, cài đặt này sẽ kéo các biến thực tế của bạn từ file conf.pp mà ta đã tạo trước đó. Các mục được đánh dấu màu đỏ là những thay đổi chính xác mà bạn cần thực hiện trên bốn dòng liên quan đến database .

Bỏ qua các comment , file của bạn sẽ trông như thế này:

<?php define('DB_NAME', '<%= scope.lookupvar('wordpress::conf::db_name') %>'); define('DB_USER', '<%= scope.lookupvar('wordpress::conf::db_user') %>'); define('DB_PASSWORD', '<%= scope.lookupvar('wordpress::conf::db_user_password') %>'); define('DB_HOST', '<%= scope.lookupvar('wordpress::conf::db_host') %>'); define('DB_CHARSET', 'utf8'); define('DB_COLLATE', '');  define('AUTH_KEY',         'put your unique phrase here'); define('SECURE_AUTH_KEY',  'put your unique phrase here'); define('LOGGED_IN_KEY',    'put your unique phrase here'); define('NONCE_KEY',        'put your unique phrase here'); define('AUTH_SALT',        'put your unique phrase here'); define('SECURE_AUTH_SALT', 'put your unique phrase here'); define('LOGGED_IN_SALT',   'put your unique phrase here'); define('NONCE_SALT',       'put your unique phrase here');  $table_prefix  = 'wp_';  define('WP_DEBUG', false);  if ( !defined('ABSPATH') )     define('ABSPATH', dirname(__FILE__) . '/');  require_once(ABSPATH . 'wp-settings.php'); 

Bước 9 - Tạo một file kê khai cho Wordpress

Sử dụng nano để tạo và chỉnh sửa file có tên wp.pp trong folder manifests :

nano ~/MyModules/do-wordpress/manifests/wp.pp 

Tệp kê khai này thực hiện các việc sau:

  • Sao chép nội dung của gói cài đặt Wordpress vào / var / www / . Điều này phải được thực hiện vì cấu hình mặc định của Apache phục vụ các file từ / var / www /
  • Tạo file wp-config.php bằng cách sử dụng mẫu

Thêm mã sau vào file chính xác như được hiển thị:

class wordpress::wp {      # Copy the Wordpress bundle to /tmp     file { '/tmp/latest.tar.gz':         ensure => present,         source => "puppet:///modules/wordpress/latest.tar.gz"     }      # Extract the Wordpress bundle     exec { 'extract':         cwd => "/tmp",         command => "tar -xvzf latest.tar.gz",         require => File['/tmp/latest.tar.gz'],         path => ['/bin'],     }      # Copy to /var/www/     exec { 'copy':         command => "cp -r /tmp/wordpress/* /var/www/",         require => Exec['extract'],         path => ['/bin'],     }      # Generate the wp-config.php file using the template     file { '/var/www/wp-config.php':         ensure => present,         require => Exec['copy'],         content => template("wordpress/wp-config.php.erb")     } } 

Bước 10 - Tạo init.pp, một Tệp kê khai tích hợp các file kê khai khác

Mỗi module Puppet cần có một file có tên init.pp. Khi file kê khai bên ngoài bao gồm module của bạn, nội dung của file này sẽ được thực thi. Lệnh puppet module generate đã tạo một version chung của file này cho bạn.

Chỉnh sửa init.pp bằng nano :

nano ~/MyModules/do-wordpress/manifests/init.pp 

Để file có các nội dung sau.

Bạn có thể để lại các giải thích và ví dụ đã comment ở trên cùng. Nên có một khối trống cho lớp wordpress . Thêm nội dung hiển thị ở đây để khối wordpress giống như hình bên dưới. Đảm bảo rằng bạn nhận được các dấu ngoặc vuông được lồng vào nhau một cách chính xác.

Comment nội tuyến được bao gồm để giải thích cài đặt:

class wordpress {     # Load all variables     class { 'wordpress::conf': }      # Install Apache and PHP     class { 'wordpress::web': }      # Install MySQL     class { 'wordpress::db': }      # Run Wordpress installation only after Apache is installed     class { 'wordpress::wp':          require => Notify['Apache Installation Complete']     }      # Display this message after MySQL installation is complete     notify { 'MySQL Installation Complete':         require => Class['wordpress::db']     }      # Display this message after Apache installation is complete     notify { 'Apache Installation Complete':         require => Class['wordpress::web']     }      # Display this message after Wordpress installation is complete     notify { 'Wordpress Installation Complete':         require => Class['wordpress::wp']     } } 

Bước 11 - Xây dựng module WordPress

Mô-đun hiện đã sẵn sàng để được xây dựng. Di chuyển vào folder MyModules :

cd ~/MyModules 

Sử dụng lệnh puppet module build để xây dựng module :

sudo puppet module build do-wordpress 

Bạn sẽ thấy kết quả sau từ một bản dựng thành công:

Notice: Building /home/user/MyModules/do-wordpress for release Module built: /home/user/MyModules/do-wordpress/pkg/do-wordpress-0.1.0.tar.gz 

Mô-đun hiện đã sẵn sàng để sử dụng và chia sẻ. Bạn sẽ tìm thấy gói có thể cài đặt trong folder pkg của module .

Bước 12 - Cài đặt Mô-đun WordPress

Để sử dụng module , trước tiên nó phải được cài đặt. Sử dụng lệnh puppet module install .

sudo puppet module install ~/MyModules/do-wordpress/pkg/do-wordpress-0.1.0.tar.gz 

Sau khi cài đặt, khi bạn chạy sudo puppet module list , bạn sẽ thấy kết quả giống như sau :

/etc/puppet/modules ├── do-wordpress (v0.1.0) ├── puppetlabs-apache (v1.1.1) ├── puppetlabs-concat (v1.1.1) ├── puppetlabs-mysql (v2.3.1) └── puppetlabs-stdlib (v4.3.2) 

Bây giờ nó đã được cài đặt, bạn nên tham chiếu module này là do-wordpress cho bất kỳ lệnh Puppet nào.

Cập nhật hoặc Gỡ cài đặt Mô-đun

Nếu bạn nhận được lỗi cài đặt hoặc nếu bạn nhận thấy sự cố cấu hình với WordPress, bạn có thể cần thực hiện thay đổi trong một hoặc nhiều file kê khai và các file liên quan mà ta đã tạo trước đó trong hướng dẫn.

Hoặc, bạn có thể chỉ muốn gỡ cài đặt module vào một lúc nào đó.

Để cập nhật hoặc gỡ cài đặt module , hãy sử dụng lệnh sau:

sudo puppet module uninstall do-wordpress 

Nếu bạn chỉ muốn gỡ cài đặt, bạn đã hoàn tất.

Nếu không, hãy áp dụng các thay đổi bạn cần, sau đó xây dựng lại và cài đặt lại module theo các Bước 11-12.

Bước 13 - Sử dụng Mô-đun trong Tệp kê khai Độc lập để cài đặt WordPress

Để sử dụng module để cài đặt Wordpress, bạn phải tạo một file kê khai mới và áp dụng nó.

Sử dụng nano để tạo và chỉnh sửa file có tên install-wp.pp trong thư mục / tmp (hoặc bất kỳ thư mục nào khác mà bạn chọn).

nano /tmp/install-wp.pp 

Thêm các nội dung sau vào file chính xác như được hiển thị:

class { 'wordpress': } 

Áp dụng file kê khai bằng puppet apply . Đây là bước giúp WordPress cài đặt và chạy trên server của bạn:

sudo puppet apply /tmp/install-wp.pp 

Bạn có thể thấy một hoặc hai cảnh báo.

Quá trình này sẽ mất một lúc để chạy, nhưng khi hoàn tất, bạn sẽ có Wordpress và tất cả các phần phụ thuộc của nó được cài đặt và chạy.

Một vài dòng cài đặt thành công cuối cùng sẽ giống như sau:

Notice: /Stage[main]/Apache/File[/etc/apache2/mods-enabled/authn_core.load]/ensure: removed Notice: /Stage[main]/Apache/File[/etc/apache2/mods-enabled/status.load]/ensure: removed Notice: /Stage[main]/Apache/File[/etc/apache2/mods-enabled/mpm_prefork.load]/ensure: removed Notice: /Stage[main]/Apache/File[/etc/apache2/mods-enabled/status.conf]/ensure: removed Notice: /Stage[main]/Apache/File[/etc/apache2/mods-enabled/mpm_prefork.conf]/ensure: removed Notice: /Stage[main]/Apache::Service/Service[httpd]: Triggered 'refresh' from 55 events Notice: Finished catalog run in 55.91 seconds 

Bạn có thể mở trình duyệt và truy cập http: // server-IP /. Bạn sẽ thấy màn hình chào mừng của WordPress.

Chào mừng bạn đến với WordPress

Từ đây, bạn có thể cấu hình console WordPress của bạn một cách bình thường.

Triển khai cho nhiều server

Nếu bạn đang chạy Puppet trong cấu hình Agent-Master và muốn cài đặt WordPress trên một hoặc nhiều máy từ xa, tất cả những gì bạn phải làm là thêm class {'wordpress':} dòng class {'wordpress':} vào định nghĩa nút của các máy đó. Để tìm hiểu thêm về cấu hình Agent-Master và định nghĩa nút, bạn có thể tham khảo hướng dẫn này:

Cách cài đặt puppet để quản lý cơ sở hạ tầng server của bạn

Kết luận

Với hướng dẫn này, bạn đã học cách tạo module Puppet của riêng mình để cài đặt WordPress cho bạn. Bạn có thể xây dựng thêm dựa trên điều này để thêm hỗ trợ tự động cài đặt các chủ đề và plugin nhất định. Cuối cùng, khi bạn cảm thấy module của bạn cũng có thể hữu ích cho những người khác, bạn có thể xuất bản nó trên Puppet Forge.


Tags:

Các tin liên quan

Cách thiết lập Mirror Director với MirrorBrain trên Ubuntu 14.04
2014-10-06
Cách cấu hình một cụm Mesosphere sẵn sàng sản xuất trên Ubuntu 14.04
2014-09-25
Cách thiết lập DNSSEC trên server tên NSD trên Ubuntu 14.04
2014-09-25
Cách triển khai ứng dụng Meteor.js trên Ubuntu 14.04 với Nginx
2014-09-22
Cách cài đặt Drupal trên server Ubuntu 14.04 với Apache
2014-09-19
Cách sử dụng Reprepro cho Kho lưu trữ Gói Bảo mật trên Ubuntu 14.04
2014-09-10
Cách cài đặt Discourse trên Ubuntu 14.04
2014-09-10
Cách sử dụng Foreman để quản lý các node puppet trên Ubuntu 14.04
2014-09-08
Cách sử dụng phân phối giám sát mở với Check_MK trên Ubuntu 14.04
2014-09-08
Cách cài đặt và cấu hình một Daemon và Ứng dụng khách SNMP trên Ubuntu 14.04
2014-08-18