ansible命令:用于单一模块、任务执行
ansible-playbook:用于执行剧本,执行多个模块、任务(task)
– name: 描述信息
modile: 参数
一个playbokk是由多个play组成的列表
Play主要功能在于将事先归为一组的主机,装扮成事先通过ansible中task定义的角色。
/etc/ansible/role目录中
/{httpd,mysql,php} 三个角色{tasks|template|var|meta|files等— play}
Files:存放需要同步到异地服务器的源码文件及配置文件
Handlers:当服务的配置文件发生变化时需要进行的操作,比如:重启服务,重新加载配置文件;
(notify模块与handers连用)
Notify:start httpd
Handlers:
– name:start httpd
Meta:角色定义,可留空;
Tasks:需要进行执行的任务;(调用具体模块)
Templates:用于执行安装的模板文件,一般为脚本
Vars:本次安装定义的变量
实例:使用playbook实现LAMP环境搭建
1.1 准备工作
停止httpd服务、卸载httpd服务
[root@ansible ~]# ansible all -m service -a “name=httpd state=stopped”
[root@ansible ~]# ansible all -m yum -a “name=httpd state=removed”
1.2 工作思路
安装apache
安装mysql
安装php
连接
提供测试页
1.3 创建文件夹
[root@ansible ~]# mkdir -p /etc/ansible/roles/{httpd,mysql,php}/{tasks,files,templates,vars,meta,default,handlers}
1.4 本地安装apache
[root@ansible etc]# yum install -y httpd
1.5 本地优化apache
[root@ansible etc]# vim /etc/httpd/conf/httpd.conf
将ServerName值改为本地值
启动apache的时候会自动做一次dns解析,需花费时间,将地址配置为本机就会节约很多时间。
1.6 将apache配置文件放入httpd角色中的files中
[root@ansible etc]# cp /etc/httpd/conf/httpd.conf /etc/ansible/roles/httpd/files/
1.7 将mysql配置文件复制到mysql角色下的files目录中
[root@ansible etc]# cp /etc/my.cnf /etc/ansible/roles/mysql/files/
1.8 前期准备工作
创建pre_main.yaml
[root@ansible ~]# cd /etc/ansible/roles/
[root@ansible roles]# vim pre_mani.yml
– name: clean the yum
shell: yum clean all /清除yum源缓存
– name: clean the iptables
shell: iptables –F /关闭iptables
– name: clean the firewalld
shell: systemctl stop firewalld /关闭防火墙
1.9 准备php测试页
切换目录至/etc/ansible/roles/httpd/files
[root@ansible ~]#cd /etc/ansible/roles/httpd/files
创建测试页
[root@ansible files]# vim index.php
1.10 为apache角色创建分镜头剧本
[root@ansible ~]# vim /etc/ansible/roles/httpd/tasks/main.yaml
– name: web server install
yum: name=httpd state=installed /安装apache
– name: provide test page
copy: src=index.php dest=/var/www/html /复制主页到远程主机
– name: delete apache config file
shell: rm -rf /etc/httpd/conf/httpd.conf /删除远程主机原始配置文件
– name: provide config file
copy: src=httpd.conf dest=/etc/httpd/conf/ /复制服务器配置文件到远程主机
– name: start httpd
service: name=httpd state=started /启动服务
src 默认从files目录找
安装apache之后系统会默认创建/var/www/html目录
1.11 为 mysql角色创建分镜头剧本
[root@ansible ~]# vim /etc/ansible/roles/mysql/tasks/main.yaml
– name: install mysql
yum: name=mariadb-server state=installed
– name: delete the config
shell: rm -rf /etc/my.cnf
– name: copy the config
copy: src=my.cnf dest=/etc/
– name: start mysql
service: name=mariadb state=started
1.12 为php角色创建分镜头剧本
[root@ansible ~]# vim /etc/ansible/roles/php/tasks/main.yaml
– name: install php
yum: name=php state=installed
– name: install php-mysql
yum: name=php-mysql state=installed
1.13 创建主镜头剧本
[root@ansible ~]# cd /etc/ansible/roles/
[root@ansible roles]# vim main.yaml
– name: LAMP build
remote_user: root
hosts: all
roles:
– httpd
– mysql
– php
1.14 执行剧本
[root@ansible roles]# ansible-playbook main.yaml