一.ansible搭建wordpress

基于lamp构建wordpress

master 192.168.200.100 控制节点
node1 192.168.200.101 web服务器
node2 192.168.200.102 mysql服务器

vi /etc/ansible/host

1
2
3
4
5
6
7
8
[master]
master
[web]
192.168.200.101
node1
[database]
192.168.200.102
node2

vi wordpress.yaml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
---
# hosts: 后面可写主机组名或主机名
- hosts: all
remote_user: root
# 定义变量
vars:
db_pkgs:
# 以下的-为变量“值”,也就是在引用db_pkgs变量时,可取变量中的值
- mariadb
- mariadb-server
web_pkgs:
- httpd
- php
- php-gd
- php-mysql
- gd
# tasks:ansible机器要执行操作的任务列表(依次执行)
tasks:
# 安装mariadb
- name: install mariadb
# 引用变量时使用{{}}
yum: name={{ db_pkgs }} state=latest
when: ansible_nodename == 'node2'
# 安装webserver相关服务(httpd、php)
- name: install webserver
yum: name={{ web_pkgs }} state=latest
when: ansible_nodename == 'node1'
# 启动mariadb
- name: start mariadb
service: name=mariadb state=started
# 触发(类似c语言的中断信号),触发后会去handlers执行相关操作
notify: create_db
# when判断,用来针对某主机执行的操作,比如这里是指定对database组里的机器进行操作
when: ansible_nodename == 'node2'
# 启动webserver相关服务
- name: start webserver
service: name=httpd state=started
when: ansible_nodename == 'node1'
# 将项目包发送到指定机器(及解包)
- name: to package
unarchive: src=/root/wordpress-4.9.18-zh_CN.tar.gz dest=/var/www/html
when: ansible_nodename == 'node1'
# 修改指定机器网站发布目录属组/主
- name: chown
file: owner=apache group=apache recurse=yes path=var/www/html
when: ansible_nodename == 'node1'
# 触发操作
handlers:
# 注意:这里的name名字必须和notify的触发名称保持一致
- name: create_db
# 调用shell解释器执行相关命令
shell: mysql -e "create database wordpress;grant all on *.* to 'zrs'@'%' identified by '015210';flush privileges;"
# 同样这里是针对database这个主机组里的机器
when: ansible_nodename == 'node2'