linux-ansible-06 ansible-playbook部署LNMP
实验准备
实验涉及到了unarchive模块,这个模块之前没有学到,这里加以补充。
ansible unarchive模块
unarchive模块:http://docs.ansible.com/ansible/unarchive_module.html
功能:解压缩
用法:
1、将ansible主机上的压缩包在本地解压缩后传到远程主机上,这种情况下,copy=yes. 本地解压缩,解压缩位置不是默认的目录,没找到或传完删了 后传到远程主机
2、将远程主机上的某个压缩包解压缩到指定路径下。这种情况下,需要设置copy=no 远程主机上面的操作,不涉及ansible服务端
参数:
copy:默认为yes,当copy=yes,那么拷贝的文件是从ansible主机复制到远程主机上的,如果设置为copy=no,那么会在远程主机上寻找src源文件
src:源路径,可以是ansible主机上的路径,也可以是远程主机上的路径,如果是远程主机上的路径,则需要设置copy=no
dest:远程主机上的目标路径
mode:设置解压缩后的文件权限
实验环境
准备两台干净的虚拟机
node1(ansible管理机):192.168.141.53
node2(客户端):192.168.141.69
配置准备
node1安装ansible
1 | [root@node1 ~]# yum install epel-release -y |
服务端修改主机清单配置文件host
1 | [root@node1 ~]# vim /etc/ansible/hosts |
服务端修改host文件
1 | [root@node1 ~]# vim /etc/hosts |
实现管理机对所有客户端的免密钥登录—ssh-key
在node1生成密钥
#提示生成的密钥放在/root/.ssh/id_dsa
#提示是否给生成的密钥再加密一次,回车即可
#让你再确认一次,回车即可。
1 | [root@node1 ~]# ssh-keygen -t rsa |
把公钥发送到客户端机器上,第一次连接要输入yes,记录主机名跟IP,然后输出对方的密码即可
1 | [root@node1 ~]# ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.141.69 |
#公钥发送过去之后,登录对方的机器不用密码了。
1 | [root@node1 ~]# ssh 192.168.141.69 |
ansible测试
第一次执行ansible的命令需要加yes回车,但是之后就可以直接执行了。
1 | [root@node1 ~]# ansible node2 -m command -a "echo hello" |
实验步骤
node1上roles文件夹里定义文件结构tree
1 | [root@node1 ~]# yum install tree -y |
可以看到roles文件夹下主要有三个文件夹:web、php、mysql。
web
在files文件夹准备好wordpress的安装包,准备好web.conf作为配置文件
1 | [root@node1 roles]# cd web/ |
在tasks、handlers文件夹下创建编辑main.yml
1 | [root@node1 files]# cd .. |
php
在tasks文件夹下创建编辑main.yml
1 | [root@node1 roles]# cd php/tasks/ |
mysql
在tasks文件夹下创建编辑main.yml,在files文件夹下创建编辑my.cnf。
1 | [root@node1 roles]# cd mysql |
roles
在roles文件夹创建编辑调用role的文件lnmp.yml。
1 | [root@node1 roles]# vim lnmp.yml |
部署
1 | [root@node1 roles]# ansible-playbook lnmp.yml |
执行结果中,警告不用管,没有报错,执行完毕。
接下来我们到node2上验证一下防火墙和selinux状态
1 | [root@node2 ~]# firewall-cmd --list-ports |
接下来验证lnmp架构的可用性
浏览器打开http://192.168.141.69/wordpress ,即可看到wordpress的安装界面了,其中192.168.141.69是node2的ip地址。
至于后面在这个网页端安装wordpress就省略了,本次验证已经完毕,结果是我们通过ansible的playbook成功部署出了一个采用LNMP架构的网站。