在这种Ansible系列的前两篇文章中,我们介绍了如何安装和配置Ansible运行命令,并在多个远程服务器同时执行复杂的任务。
使用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的依赖(PHP和MariaDB的 -无需安装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角色
接下来确认新创建的角色。
# ls -R /etc/ansible/playbooks
Ansible:确认WordPress目录结构
在上图中我们可以看到,ansible星系创建两个目录具有相同的名称作为我们的角色,和其他子目录( 默认 , 文件 处理程序 , 元 , 任务 , 模板和增值经销商 )和README.md内的每个文件他们。
此外,YAML文件名为main.yml被里面的所有前面列出的目录中创建,使用文件和模板除外。
我们将开始编辑如下所示的配置文件:
1. /etc/ansible/playbooks/wp-dependencies/tasks/main.yml。 请注意,我们的httpd包括在如果你还没有使用这一系列的前面的教程跟着一起。
--- # 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
--- # 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:
--- # 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_USER和DB_PASSWORD都是一样/etc/ansible/playbooks/wp-dependencies/defaults/main.yml:
… /** 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数据库密码
6.接下来,相比以前的教程中,当我们的剧本(/etc/ansible/playbooks/playbook.yml)会显得更加有组织和简单的:
# cat playbook.yml
Ansible WordPress Playbooks
- hosts: webservers roles: - wp-dependencies - wp-install-config
最后,是时候通过调用我们的playbook来运行这些任务:
# ansible-playbook playbook.yml
现在,让我们检查,如果我们可以使用节点1 192.168.0.29与192.168.0.30 node2上的IP地址访问WordPress管理页面:
Ansible WordPress安装
您可以在以下屏幕录像中查看最后两个步骤:
正如你所看到的,你可以使用Ansible设置了多个小的WordPress安装全不费功夫。 然后你可以使用相应的管理员用户界面单独配置每个站点。
最后考虑
如果您使用的是另一种分布部署的WordPress,包名称可能不同,但归结到安装的Apache Web服务器,MariaDB的数据库服务器和Python的MySQL的模块。 如果是这种情况,请使用您的分发的软件管理系统搜索您需要安装的确切包名称。
概要
在这个系列中,我们已经介绍了如何使用Ansible来运行的命令并执行复杂的任务在几个Linux机器上同时进行。
其中一个这样的例子是建立WordPress的 ,因为我们在本指南中讨论。 无论您是系统管理员还是博客,我希望您已经发现本教程中的概念和示例非常有用。
最好的运气,如果你需要帮助或有任何意见或建议,请毫不犹豫地给我们一条线!