如何自动化多个Linux服务器中的同步WordPress部署使用Ansible - 第3部分

在本教程中,我们将介绍如何使用Ansible设置多个WordPress安装并使用相应的管理用户配置每个Wordpress站点。

在这种Ansible系列的前两篇文章中,我们介绍了如何安装和配置Ansible运行命令,并在多个远程服务器同时执行复杂的任务。

使用Ansible自动化多个WordPress安装

使用Ansible自动化多个WordPress安装 - 第3部分

在当前的教程中,我们将介绍如何设置WordPress的在同一个远程服务器:

node1: 192.168.0.29
node2: 192.168.0.30

在那里我们安装,启用和启动Apache(现在你可能知道为什么我们选择使用Web服务器作为最后一个教程中的初始示例)。

我强烈鼓励你,为了进一步继续,以确保您熟悉与Ansible相关的概念之前阅读第1部分和第2部分

如何安装和配置'Ansible'自动化工具的IT管理 - 第1部分

如何使用偶尔的剧本自动化多个远程服务器上的复杂任务 - 第2部分

第1步:介绍Ansible角色

当你开始添加越来越多的任务剧本,你的剧本可能变得越来越难以处理。 因此,在这些情况下(实际上,在所有情况下)的推荐方法是使用包含不同文件中的每组任务的指令的目录结构。

这种方法允许我们在不同的项目中重新使用这些配置文件。 每个文件的定义什么是在Ansible生态系统称为一个角色。

在我们的例子中,我们将创建两个角色。 其中一人(称为WP-依赖 )将被用于安装WordPress的依赖(PHPMariaDB的 -无需安装Apache,因为它已经安装)。

其他角色(命名为WP-安装,配置 ),将包括所有与WordPress的安装和配置相关的必要任务。

第2步:创建Ansible角色

Ansible附带了一个名为ansible星系的实用工具,将帮助我们为我们的角色的目录结构。 我们将做到这一点在/ etc / ansible /剧本 (我们在第2部分中创建),但在理论上你可以在其他目录设置它,如果你想。

# cd /etc/ansible/playbooks
# ansible-galaxy init wp-dependencies
# ansible-galaxy init wp-install-config
Ansible:创建WordPress角色

Ansible:创建WordPress角色

接下来确认新创建的角色。

# ls -R /etc/ansible/playbooks
Ansible:确认WordPress目录结构

Ansible:确认WordPress目录结构

在上图中我们可以看到,ansible星系创建两个目录具有相同的名称作为我们的角色,和其他子目录( 默认文件 处理程序任务模板增值经销商 )和README.md内的每个文件他们。

此外,YAML文件名为main.yml被里面的所有前面列出的目录中创建,使用文件和模板除外。

我们将开始编辑如下所示的配置文件:

1. /etc/ansible/playbooks/wp-dependencies/tasks/main.yml。 请注意,我们的httpd包括在如果你还没有使用这一系列的前面的教程跟着一起。

main.yml
---
# tasks file for wp-dependencies
- name: Update packages (this is equivalent to yum update -y)
yum: name=* state=latest
- name: Install dependencies for WordPress
yum: name={{ item }} state=present
with_items:
- httpd
- mariadb-server 
- mariadb
- php 
- php-mysql
- MySQL-python
- name: Ensure MariaDB is running (and enable it at boot)
service: name=mariadb state=started enabled=yes
- name: Copy ~/.my.cnf to nodes
copy: src=/root/.my.cnf dest=/root/.my.cnf
- name: Create MariaDB database
mysql_db: name={{ wp_mysql_db }} state=present
- name: Create MariaDB username and password
mysql_user:
login_user=root
login_password=YourMariaDBRootPasswordHere
name={{ wp_mysql_user }}
password={{ wp_mysql_password }}
priv=*.*:ALL

2. /etc/ansible/playbooks/wp-dependencies/defaults/main.yml

main.yml
---
# defaults file for wp-dependencies
wp_mysql_db: MyWP
wp_mysql_user: wpUser
wp_mysql_password: wpP4ss

3. /etc/ansible/playbooks/wp-install-config/tasks/main.yml:

main.yml
---
# tasks file for wp-install-config
- name: Create directory to download WordPress
command: mkdir -p /opt/source/wordpress
- name: Download WordPress
get_url: url=https://www.wordpress.org/latest.tar.gz dest=/opt/source/wordpress/wordpress.tar.gz validate_certs=no
- name: Extract WordPress
command: "tar xzf /opt/source/wordpress/wordpress.tar.gz -C /var/www/html --strip-components 1"
- name: Send config file
copy: src=/root/wp-config-sample.php dest=/var/www/html/wp-config.php mode=0644

4. WP-CONFIG-sample.php(在此提供引擎收录 ),如下所示并将其保存到您的Ansible控制器的机器(你可以在最后一个副本指令上面看到的,我把它下载到超级用户的主目录(/根/wp-config-sample.php)。

重要提示 :请注意,变量DB_NAME,DB_USERDB_PASSWORD都是一样/etc/ansible/playbooks/wp-dependencies/defaults/main.yml:

wp-config-sample.php
…
/** The name of the database for WordPress */
define('DB_NAME', 'MyWP');
/** MySQL database username */
define('DB_USER', 'wpUser');
/** MySQL database password */
define('DB_PASSWORD', 'wpP4ss');
…

5.对于新的数据库服务器安装所在的root密码为空,如在这种情况下,遗憾的是我们通过mysql_secure_installation需要设置root用户密码分别在每一个机器。

据我所知,没有可用的解决办法,将允许您通过Ansible设置root的密码在您创建的WordPress的管理数据库帐户相同的步骤。

确保你的所有主机使用相同的密码,然后复制/root/.my.cnf凭据(实际位置可能在你的情况有所不同,但在所有情况下,它需要为任务相匹配的src参数的值复制〜/ .my.cnf到节点/etc/ansible/playbooks/wp-dependencies/tasks/main.yml)。

在该文件中(见上文),我们假定根密码是YourMariaDBRootPassword。

Ansible数据库密码

Ansible数据库密码

6.接下来,相比以前的教程中,当我们的剧本(/etc/ansible/playbooks/playbook.yml)会显得更加有组织和简单的:

# cat playbook.yml
Ansible WordPress Playbooks

Ansible WordPress Playbooks

- hosts: webservers
roles:
- wp-dependencies
- wp-install-config

最后,是时候通过调用我们的playbook来运行这些任务:

# ansible-playbook playbook.yml

现在,让我们检查,如果我们可以使用节点1 192.168.0.29192.168.0.30 node2上的IP地址访问WordPress管理页面:

Ansible WordPress安装

Ansible WordPress安装

您可以在以下屏幕录像中查看最后两个步骤:

正如你所看到的,你可以使用Ansible设置了多个小的WordPress安装全不费功夫。 然后你可以使用相应的管理员用户界面单独配置每个站点。

最后考虑

如果您使用的是另一种分布部署的WordPress,包名称可能不同,但归结到安装的Apache Web服务器,MariaDB的数据库服务器和Python的MySQL的模块。 如果是这种情况,请使用您的分发的软件管理系统搜索您需要安装的确切包名称。

概要

在这个系列中,我们已经介绍了如何使用Ansible运行的命令并执行复杂的任务在几个Linux机器上同时进行。

其中一个这样的例子是建立WordPress的 ,因为我们在本指南中讨论。 无论您是系统管理员还是博客,我希望您已经发现本教程中的概念和示例非常有用。

最好的运气,如果你需要帮助或有任何意见或建议,请毫不犹豫地给我们一条线!