Ansible--02 ansible playbook的应用

Ansible playbook的应用

什么是playbook

playbook(剧本)是由两部分组成

play:主机或者主机组(角色:可以有一个或者多个)

task:指定工作(动作,台词:一个或者多个)


在Ansible中"剧本文件"是以yml结尾的文件。

在SaltStack中"剧本文件"是以sls结尾的文件。

但是语法,使用的都是yaml语法

playbook的组成

playbook和Ad-Hoc对比

特点 PlayBook ad-hoc
完整性
持久性
执行效率
变量 支持 不支持
耦合度

1.PlayBook功能比ad-hoc更全,是对ad-hoc的一种编排.

2.PlayBook能很好的控制先后执行顺序, 以及依赖关系.

3.PlayBook语法展现更加的直观.

4.playbook可以持久使用,ad-hoc无法持久使用.

YAML语法

缩进:

中国:
上海: 浦东新区
北京:
- 朝阳区
- 海淀区
- 昌平区
- 大兴区 美国:
德克萨斯州: 电信一区
冒号:只要不是以冒号结尾的冒号,冒号后面都要加空格
短横线-:代表一个层级,在Python中专业叫法,代表是一个列表

也可以查看官方文档

Ansible--02  ansible  playbook的应用

playbook编写

host : 对哪些主机进行操作

remote_user : 使用什么用户执行

tasks : 具体执行什么任务

注意: 可查看官方文档, ansible-playbook +模块名

** copy模块: ** ansible-playbook copy

示例:

[root@m01 ~]# cat foo.yml
---
- hosts: all
remote_user: root
vars:
file_name: zls.txt
tasks:
- name: Create New File
file: name=/tmp/{{ file_name }} state=touch

检查语法

#检查mysql_zh.yml语法
[root@m01 mariadb]# ansible-playbook --syntax-check mysql_zh.yml
playbook: mysql_zh.yml
#测试安装
[root@m01 mariadb]# ansible-playbook -C mysql_zh.yml
#执行playbook,安装
[root@m01 mariadb]# ansible-playbook mysql_zh.yml

安装httpd练习

1.安装httpd

[root@m01 httpd]# vim httpd.yml
#角色
- hosts: web_group #动作
tasks:
- name: install httpd server
yum:
name: httpd
state: present #检查语法
[root@m01 httpd]# ansible-playbook --syntax-check httpd.yml playbook: httpd.yml #执行
[root@m01 httpd]# ansible-playbook httpd.yml
PLAY [web_group] ******************************************************************************************************************** TASK [Gathering Facts] **************************************************************************************************************
ok: [zls_web02]
ok: [zls_web01] TASK [install httpd server] *********************************************************************************************************
changed: [zls_web01]
changed: [zls_web02] PLAY RECAP **************************************************************************************************************************
zls_web01 : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
zls_web02 : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0

2.启动httpd

#角色
- hosts: web_group #动作
tasks:
- name: install httpd server
yum:
name: httpd
state: present - name: start httpd server
systemd:
name: httpd
state: started
enabled: yes

3.关闭防火墙

- hosts: web_group

#动作
tasks:
#关闭防火墙
- name: Stop Firewalld
systemd:
name: firewalld
state: stopped
enabled: no #安装httpd
- name: install httpd server
yum:
name: httpd
state: present #开启httpd
- name: start httpd server
systemd:
name: httpd
state: started
enabled: yes

4.给默认站点页面

#角色
- hosts: web_group #动作
tasks:
#关闭防火墙
- name: Stop Firewalld
systemd:
name: firewalld
state: stopped
enabled: no #安装httpd
- name: install httpd server
yum:
name: httpd
state: present #开启httpd
- name: start httpd server
systemd:
name: httpd
state: started
enabled: yes #配置默认页面
- name: Config index.html
copy:
content: "zls_web_page"
dest: /var/www/html/index.html
group: root
owner: root
mode: 0644

5.给不同的web配置不同的页面(多个play)

#角色
- hosts: web_group #动作
tasks:
#关闭防火墙
- name: Stop Firewalld
systemd:
name: firewalld
state: stopped
enabled: no #安装httpd
- name: install httpd server
yum:
name: httpd
state: present #开启httpd
- name: start httpd server
systemd:
name: httpd
state: started
enabled: yes - hosts: zls_web01
tasks: - name: Config index.html
copy:
content: "zls_web01_page"
dest: /var/www/html/index.html
group: root
owner: root
mode: 0644 - hosts: zls_web02
tasks: - name: Config index.html
copy:
content: "zls_web02_page"
dest: /var/www/html/index.html
group: root
owner: root
mode: 0644

rsyncd实战

1.环境准备

主机名 wanIP lanIP 服务 角色
m01 10.0.0.61 172.16.1.61 Ansible 控制端(导演)
backup 10.0.0.41 172.16.1.41 rsync服务端 被控端(男一)
web01 10.0.0.7 172.16.1.7 rsync客户端 被控端(女二)
web02 10.0.0.8 172.16.1.8 rsync客户端 被控端(女二)

2.战前准备

#准备项目目录
[root@m01 project]# mkdir rsyncd #配置文件
uid = www
gid = www
port = 873
fake super = yes
use chroot = no
max connections = 200
timeout = 600
ignore errors
read only = false
list = false
auth users = rsync_backup
secrets file = /etc/rsync.passwd
log file = /var/log/rsyncd.log
#####################################
[backup]
comment = welcome to oldboyedu backup!
path = /backup #准备主机清单
[web_group]
zls_web01 ansible_ssh_host=172.16.1.7
zls_web02 ansible_ssh_host=172.16.1.8 [backup_group]
backup ansible_ssh_host=172.16.1.41 [rsync_server:children]
web_group
backup_group

3.写剧本

1)安装rsync服务端和客户端

2)配置rsync服务端

3)创建目录授权

4)创建密码文件授权

5)创建系统用户

6)启动rsync并加入开机自启

[root@m01 rsyncd]# vim rsyncd.yml
[root@m01 rsyncd]# cat rsyncd.yml
- hosts: rsync_server
tasks: #关闭防火墙
- name: Stop firewalld
systemd:
name: firewalld
state: stopped
enabled: no - name: SCP YUM REPO
copy:
src: /etc/yum.repos.d/CentOS-Base.repo
dest: /etc/yum.repos.d/ #创建系统用户组
- name: Create www Group
group:
name: www
gid: 666
state: present
#创建系统用户
- name: Create www User
user:
name: www
uid: 666
group: www
create_home: false
shell: /sbin/nologin
#安装rsync服务端和客户端
- name: Install rsyncd Server
yum:
name: rsync
state: present - hosts: backup_group
tasks:
#配置rsync服务端
- name: Config rsyncd Conf
copy:
src: ./rsyncd.j2
dest: /etc/rsyncd.conf
owner: root
group: root
mode: 0644 #创建目录授权
- name: Create dir
file:
path: /backup
state: directory
owner: www
group: www
mode: 0755
recurse: yes #创建密码文件授权
- name: Create passwd file
copy:
content: "rsync_backup:123"
dest: /etc/rsync.passwd
owner: root
group: root
mode: 0600 #启动rsync并加入开机自启
- name: Start rsyncd
systemd:
name: rsyncd
state: started
enabled: yes #配置客户端
- hosts: web_group
tasks:
- name: Config client passwd file
copy:
content: "123"
dest: /etc/rsync.pass
owner: root
group: root
mode: 0600

实战1:

使用Ansible-playbook部署以下内容:

  • web01 web02 提交作业代码 httpd php

  • rsync 备份脚本,加入crontab,定时发送邮件

  • nfs 挂载站点目录,实现共享存储

  • sersync 实时同步

    ansible-playbook --syntax-check cron.yml


解决:

  1. 准备基本纯净环境
  2. 编辑主机清单
  3. 传密钥
ssh-copy-id -i ~/.ssh/id_rsa.pub root@172.16.1.7
···
  1. 编写ansible-playbook
[root@m01 project]# cat anible.yml
- hosts: all
tasks:
#关闭防火墙
- name: stop firewalld
systemd:
name: firewalld
state: stopped
enabled: no
#创建用户及组
- name: create www group
group:
name: www
gid: 666
state: present
- name: create www user
user:
name: www
uid: 666
group: www
create_home: false
shell: /sbin/nologin
#远程安装httpd
- hosts: web_group
tasks:
- name: Install httpd server
yum:
name: httpd
state: present
#远程安装php
- name: Install php server
yum:
name: php
state: present
#上传作业代码到站点目录并给权限
- name: copy zuoye
copy:
src: /root/project/httpd/zuoye/
dest: /var/www/html/
group: www
owner: www
mode: 0755
#copy配置文件
- name: copy httpd.conf
copy:
src: /etc/httpd/conf/httpd.conf
dest: /etc/httpd/conf/
#创建目录
- name: create dir
file:
path: /var/www/html/uploads
state: directory
owner: www
group: www
mode: 0755
recurse: yes
#启动httpd
- name: start httpd server
systemd:
name: httpd
state: restarted
daemon_reload: yes
enabled: yes #部署nfs服务
- hosts: nfs_server
tasks:
#安装nfs
- name: Install nfs-utils server
yum:
name: nfs-utils
state: present
#部署nfs服务端
- hosts: nfs_group
tasks:
#创建配置文件
- name: copy config file
copy:
src: /root/project/nfs/exports
dest: /etc/exports
#创建共享目录
- name: create dir
file:
path: /data
state: directory
owner: www
group: www
mode: 0755
recurse: yes
#启动nfs服务
- name: start nfs-server
systemd:
name: nfs-server
state: restarted
daemon_reload: yes
enabled: yes
#nfs客户端挂载共享目录
- hosts: web_group
tasks:
- name: Mount /data
mount:
path: /var/www/html/uploads
src: 172.16.1.31:/data
fstype: nfs
state: mounted #部署rsync服务
- hosts: rsync_server
tasks:
#安装rsync服务
- name: install rsyncd server
yum:
name: rsync
state: present
#部署rsync服务端
- hosts: backup_group
tasks:
#copy配置文件
- name: config rsyncd conf
copy:
src: /root/project/rsyncd/rsyncd.j2
dest: /etc/rsyncd.conf
owner: root
group: root
mode: 0644
#根据配置文件创建对应的目录
- name: create dir
file:
path: /backup
state: directory
owner: www
group: www
mode: 0755
recurse: yes
- name: create dir
file:
path: /data
state: directory
owner: www
group: www
mode: 0755
recurse: yes
#根据配置文件创建对应的密码文件
- name: create passwd file
copy:
content: "rsync_backup:123"
dest: /etc/rsync.passwd
owner: root
group: root
mode: 0600
#启动rsync
- name: start rsyncd
systemd:
name: rsyncd
state: started
enabled: yes
#备份脚本
- hosts: web_group
tasks:
- name: create file
copy:
src: /root/project/cron/web.sh
dest: /root/rsync.sh
#加入cron定时任务
- name: Creates an cron
cron:
name: "每天凌晨执行脚本"
minute: "0"
hour: "0"
job: "/bin/bash /root/rsync.sh > /dev/null" #安装邮件功能
- hosts: backup_group
tasks:
- name: install mailx
yum:
name: mailx
state: present
#copy邮件配置文件
- name: copy mailx file
copy:
src: /root/project/cron/mailx.rc
dest: /etc/mail.rc
#校验发邮件脚本
- name: create file
copy:
src: /root/project/cron/backup_md5.sh
dest: /root/backup_md5.sh
#定时执行脚本
- name: Creates an cron
cron:
name: "每天凌晨执行脚本"
minute: "0"
hour: "0"
job: "/bin/bash /root/backup_md5.sh > /dev/null"
#部署实时同步服务端
- hosts: nfs_group
tasks:
- name: install rsyncd server
yum:
name: rsync
state: present
- name: install inotify-tools server
yum:
name: inotify-tools
state: present
#创建配置文件对应的密码文件
- name: create passwd file
copy:
content: "123"
dest: /etc/rsync.pass
owner: root
group: root
mode: 0600
#copy实时同步解压目录到站点目录
- name: copy sersync file
copy:
src: /usr/local/sersync/
dest: /usr/local/sersync/
mode: 0755
#启动任务
- name: shell
shell: "/usr/local/sersync/sersync2 -rdo /usr/local/sersync/confxml.xml"
  1. 对应的配置文件
#nfs配置文件
[root@m01 nfs]# cat exports
/data 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666) #rsync配置文件
[root@m01 rsyncd]# cat rsyncd.j2
uid = www
gid = www
port = 873
fake super = yes
use chroot = no
max connections = 200
timeout = 600
ignore errors
read only = false
list = false
auth users = rsync_backup
secrets file = /etc/rsync.passwd
log file = /var/log/rsyncd.log
#####################################
[backup]
comment = welcome to oldboyedu backup!
path = /backup
[nfs]
comment = welcome to oldboyedu nfs!
path = /data #定时任务对应的脚本
[root@m01 cron]# pwd
/root/project/cron
#校验脚本
[root@m01 cron]# cat backup_md5.sh
#!/bin/bash
PATH='/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin'
H=`hostname`
I=`ifconfig eth1|awk 'NR==2{print $2}'`
D=`date +%F`
S=${H}_${I}_${D}
BD=/backup md5sum -c /backup/*.txt|mail -s "${D}:校验结果" 861962063@qq.com
find ${BD} -type d -mtime +180|xargs rm -fr #mailx配置文件
[root@m01 cron]# cat mailx.rc
...
set bsdcompat
et from=861962063@qq.com
set smtp=smtps://smtp.qq.com:465
set smtp-auth-user=861962063@qq.com
set smtp-auth-passwordwzooyakiejsrbbjc
set smtp-auth=login
set ssl-verify=ignore
set nss-config-dir=/etc/pki/nssdb/
[root@m01 cron]# [root@m01 cron]# cat web.sh
#!/bin/bash PATH='/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin'
H=`hostname`
I=`ifconfig eth1|awk 'NR==2{print $2}'`
D=`date +%F`
S=${H}_${I}_${D}
BD=/backup
export RSYNC_PASSWORD=123 mkdir -p ${BD}/${S} tar zcf /backup/${S}/conf.tar.gz /etc/passwd &>/dev/null md5sum /backup/${S}/conf.tar.gz > /backup/${H}.txt
rsync -az /backup/ rsync_backup@172.16.1.41::backup
find ${BD} -type d -mtime +7|xargs rm -fr #实时同步配置文件
[root@m01 sersync]# cat confxml.xml
...
<inotify>
<delete start="true"/>
<createFolder start="true"/>
<createFile start="true"/>
<closeWrite start="true"/>
<moveFrom start="true"/>
<moveTo start="true"/>
<attrib start="true"/>
<modify start="true"/>
</inotify> <sersync>
<localpath watch="/data">
<remote ip="172.16.1.41" name="nfs"/>
<!--<remote ip="192.168.8.39" name="tongbu"/>-->
<!--<remote ip="192.168.8.40" name="tongbu"/>-->
</localpath>
<rsync>
<commonParams params="-az"/>
<auth start="true" users="rsync_backup" passwordfile="/etc/rsync.pass"/>
<userDefinedPort start="false" port="874"/><!-- port=874 -->
<timeout start="true" time="100"/><!-- timeout=100 -->
<ssh start="false"/>
  1. 执行playbook
#检查playbook语法
[root@m01 project]# ansible-playbook --syntax-check anible.yml playbook: anible.yml
#测试
[root@m01 project]# ansible-playbook -C anible.yml
#执行
[root@m01 project]# ansible-playbook anible.yml
  1. 浏览器测试

上传照片到web01,同时检查共享目录,实时同步的目录

Ansible--02  ansible  playbook的应用

上传照片到web02,同时检查共享目录,实时同步的目录

Ansible--02  ansible  playbook的应用

实战2:

源码安装nginx,拆分数据库,一键部署知乎搭建好的页面

准备工作

  1. 准备基本纯净环境
  2. 编辑主机清单
  3. 传密钥
  4. 编写部署php,源码安装nginx, 上传wordpress和zh代码的playbook
  5. 执行playbook,域名解析后浏览器访问,仅能访问到wordpress和zh的首页面,编辑不了。
  6. 编写playbook 部署数据库Db01--10.0.0.51, 并创建wordpress和zh的库,给权限,允许 远程连接访问
  7. 执行完playbook,访问wordpress和知乎,登录并发表文章
  8. 在web上,把 wordpress 和 zh 的 目录打包压缩,发送给主机端。并修改playbook 对应的路径
  9. 把db01,上对应的wordpress和zh库,导出发送给主机端,并修改playbook对应的路径

执行

  1. 初始化环境 web, db01

  2. 一键执行完playbook ,域名访问浏览器,即可访问到写好文章的wordpress,和zh.

#需要的playbook

[root@m01 nginx]# cat lnmp.yml
- hosts: web_group
tasks:
#关闭防火墙
- name: stop firewalld
systemd:
name: firewalld
state: stopped
enabled: no
#copy源
- name: copy yum repo
copy:
src: /etc/yum.repos.d/CentOS-Base.repo
dest: /etc/yum.repos.d/
owner: root
group: root
mode: 0644
#关闭selinux
- name: Disable SElinux
selinux:
state: disabled
- name: install unzip
yum:
name: unzip
state: present
#创建用户及组
- name: create www group
group:
name: www
gid: 666
state: present
- name: create www user
user:
name: www
uid: 666
group: www
create_home: false
shell: /sbin/nologin
#解压php压缩包到对端 对应目录下
- name: tar php
unarchive:
src: /root/project/nginx/php.tar.gz
dest: /usr/local/src
copy: yes
#安装php
- name: install php
shell: "cd /usr/local/src/php && rpm -Uvh *rpm"
#安装nginx依赖
- name: install nginx require package
yum:
name: openssl-devel
state: present
#解压nginx压缩包到对端
- name: tar nginx
unarchive:
src: /root/project/nginx/nginx-1.16.0.tar.gz
dest: /root
copy: yes
#源码指定模块编译安装
- name: configure nginx
shell: "cd /root/nginx-1.16.0 && ./configure --prefix=/usr/local/nginx --user=www --group=www --with-http_ssl_module --with-http_stub_status_module && make && make install"
#copy nginx启动文件
- name: scp nginx shell
copy:
src: /root/project/nginx/nginx.service
dest: /usr/lib/systemd/system
#copy nginx主配置文件
- name: scp nginx default conf
copy:
src: /root/project/nginx/nginx.conf
dest: /usr/local/nginx/conf/
#创建主配置文件对应的目录
- name: creat nginx conf.d
file:
path: /usr/local/nginx/conf/conf.d
state: directory
#copy 博客配置文件
- name: scp nginx conf
copy:
src: /root/project/nginx/wordpress.conf
dest: /usr/local/nginx/conf/conf.d/
#copy知乎配置文件
- name: scp zh conf
copy:
src: /root/project/nginx/zh.conf
dest: /usr/local/nginx/conf/conf.d/
#启动nginx
- name: start nginx
systemd:
name: nginx
state: restarted
enabled: yes
#修改对端php配置文件qidong#修改对端php配置文件启动用户
- name: config php conf
shell: "sed -i '/^user/c user = www' /etc/php-fpm.d/www.conf && sed -i '/^group/c group = www' /etc/php-fpm.d/www.conf"
#启动php
- name: start php
systemd:
name: php-fpm
state: restarted
enabled: yes
#创建博客知乎对应目录
- name: creat code dir
file:
path: /code
state: directory
owner: www
group: www
mode: 0755
recurse: yes
#解压写好文章的博客到对端
- name: unarchive wordpress code
unarchive:
src: /root/project/nginx/wordpress.tgz
dest: /code
owner: www
group: www
mode: 0755
#创建知乎对应目录
- name: creat zh dir
file:
path: /code/zh
state: directory
owner: www
group: www
mode: 0755
recurse: yes
#解压写好文章的知乎压缩包到对端
- name: unarchive zh code
unarchive:
src: /root/project/nginx/zh.zip
dest: /code/zh
owner: www
group: www
mode: 0755
  1. 对应需要的配置文件
#nginx 主配置文件
[root@m01 nginx]# cat nginx.conf user www;
worker_processes 1; ... http {
include mime.types;
default_type application/octet-stream;
include /usr/local/nginx/conf/conf.d/*.conf;
... #nginx启动文件
[root@m01 nginx]# cat nginx.service
[Unit]
Description=nginx server daemon
DOCUMENTATION=man:nginx
After=network.target [Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s quit
PrivateTmp=true [Install]
WantedBy=multi-user.target
#systemctl daemon-reload
#systemctl start nginx.service
#systemctl enable nginx.service
#systemctl status nginx.service #wordpress配置文件
[root@m01 nginx]# cat wordpress.conf
server {
listen 80;
server_name www.gjy.com; location / {
root /code/wordpress;
index index.php index.html;
} location ~\.php$ {
root /code/wordpress;
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
#知乎对应配置文件
[root@m01 nginx]# cat zh.conf
server {
listen 80;
server_name www.zh.com; location / {
root /code/zh;
index index.php index.html;
} location ~\.php$ {
root /code/zh;
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
} }

域名解析到web0 --10.0.0.7,在浏览器访问,www.gjy.com,并写篇文章

Ansible--02  ansible  playbook的应用

Ansible--02  ansible  playbook的应用

实战mysql迁移

1.到web02,把写好文章的wordpress,打包成名称修改为 wordpress.tgz,并远程推送到 m01--10.0.0.61 对应目录下

 #需要的安装包
[root@m01 nginx]# ll
total 51736
-rw-r--r-- 1 root root 788 Sep 27 09:51 lnmp.yml.gz
-rw-r--r-- 1 root root 3103 Sep 27 13:15 lnmp_zh.yml
-rw-r--r-- 1 root root 1032345 Sep 18 14:55 nginx-1.16.0.tar.gz
-rw-r--r-- 1 1001 1001 2701 Sep 27 06:10 nginx.conf
-rw-r--r-- 1 root root 418 Sep 27 05:47 nginx.service
-rw-r--r-- 1 root root 20663838 Sep 18 17:34 php.tar.gz
-rw-r--r-- 1 root root 297 Sep 27 08:05 wordpress.conf
-rw-r--r-- 1 root root 11190716 Sep 27 09:40 wordpress.tgz
-rw-r--r-- 1 root root 2478168 Sep 27 12:25 z_blog.zip
-rw-r--r-- 1 root root 282 Sep 27 11:34 zh.conf
-rw-r--r-- 1 root root 17572114 Sep 27 13:01 zh.zip

还原web02,修改playbook,再重新推送

[root@m01 nginx]# cat lnmp.yml
- hosts: gjy_web02
tasks:
- name: stop firewalld
systemd:
name: firewalld
state: stopped
enabled: no
... #解压写好文章的博客到对端
- name: unarchive wordpress code
unarchive:
src: /root/project/nginx/wordpress.tgz
dest: /code
owner: www
group: www
mode: 0755 ...
#解压写好文章的知乎压缩包到对端
- name: unarchive zh code
unarchive:
src: /root/project/nginx/zh.zip
dest: /code/zh
owner: www
group: www
mode: 0755

浏览器能访问到界面,但是是db01数据库的

Ansible--02  ansible  playbook的应用

关闭db01的数据库,或者修改web02的连接数据库的主机名,再次访问,都会出现500 的错误

Ansible--02  ansible  playbook的应用

一键执行playbook,完成数据迁移,访问到wordpres写好文章的页面

[root@m01 mariadb]# cat mysql.yml
- hosts: gjy_db02
tasks:
- name: install python mysql
yum:
name: MySQL-python
state: present
#安装mariadb
- name: install mariadb server
yum:
name: mariadb-server
state: present
#启动mariadb
- name: start mariadb server
systemd:
name: mariadb
state: restarted
enabled: yes
#创建wordpress库
- name: create database wordpress
mysql_db:
name: wordpress
state: present
#授权wordpress库
- name: create wordpress user
mysql_user:
name: "wordpress"
password: "123"
host: '172.16.1.%'
priv: '*.*:ALL'
state: present
#copy写好文章的wordpress库到对端
- name: scp mysql wordpress
copy:
src: /root/project/mariadb/full.sql
dest: /tmp/full.sql
#导入写好文章的wordpress库
- name: import full.sql
mysql_db:
state: import
name: wordpress
target: /tmp/full.sql
#copy写好文章的zh库到对端
- name: scp mysql zh
copy:
src: /root/project/mariadb/zh.sql
dest: /tmp/zh.sql
#导入写好文章的zh库
- name: import zh.sql
mysql_db:
state: import
name: zh
target: /tmp/zh.sql

执行playbook, 可以先查看db02的数据库

[root@db02 ~]# mysql
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 3
Server version: 5.5.64-MariaDB MariaDB Server Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]> select user,host from mysql.user;
+-----------+------------+
| user | host |
+-----------+------------+
| root | 127.0.0.1 |
| wordpress | 172.16.1.% |
| root | ::1 |
| | db01 |
| root | db01 |
| | localhost |
| root | localhost |
+-----------+------------+
7 rows in set (0.00 sec) #查看wordpress库
MariaDB [(none)]> show tables from wordpress;
+-----------------------+
| Tables_in_wordpress |
+-----------------------+
| wp_commentmeta |
| wp_comments |
..... #查看zh库
MariaDB [(none)]> show tables from zh;
+--------------------------------+
| Tables_in_zh |
+--------------------------------+
| aws_active_data |
| aws_answer |
| aws_answer_comments |
| aws_answer_thanks |
| aws_answer_uninterested |
......

迁移之后,10.0.0.51db01的数据库关闭,

域名访问www.gjy.com,都可以访问到wordpress写好文章的界面

Ansible--02  ansible  playbook的应用

域名访问www.zh.com,能访问到知乎的界面

Ansible--02  ansible  playbook的应用

上一篇:CSS继承总结


下一篇:[宽度优先搜索] HDU 1372 Knight Moves