简介
ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。
ansible是基于模块工作的,本身没有批量部署的能力。真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架。主要包括:
(1)、连接插件connection plugins:负责和被监控端实现通信;
(2)、host inventory:指定操作的主机,是一个配置文件里面定义监控的主机;
(3)、各种模块核心模块、command模块、自定义模块;
(4)、借助于插件完成记录日志邮件等功能;
(5)、playbook:剧本执行多个任务时,非必需可以让节点一次性运行多个任务
Ansible的特点有:
1、不需要在部署机器上安装客户端
2、没有服务端,使用时直接执行命令即可
3、基于模块工作,可以使用任意语言对模块进行开发
4、使用yaml语言来定制编排剧本
5、可实现多级指挥
6、支持sudo
7、支持邮件、日志等多种功能
既然都说了是自动化部署,我们只需要先行写好 “剧本” 然后动动手指就可以实现一键化自动部署
先关闭防火墙和selinux ,完成服务器时间同步
准备三台机器即可 ansible控制端和被控制端
主机名 | IP |
---|---|
ansible | 192.168.3.51 |
lamp | 192.168.3.151 |
lamp2 | 192.168.3.52 |
EPEL源
yum install epel-release
#可以用如下命令自动替换
sed -e 's!^metalink=!#metalink=!g' \
-e 's!^#baseurl=!baseurl=!g' \
-e 's!//download\.fedoraproject\.org/pub!//mirrors.tuna.tsinghua.edu.cn!g' \
-e 's!//download\.example/pub!//mirrors.tuna.tsinghua.edu.cn!g' \
-e 's!http://mirrors!https://mirrors!g' \
-i /etc/yum.repos.d/epel*.repo
yum 源
# centos7
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-6.10.repo
# centos8
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo
第一处:
<Directory />
AllowOverride none
Require all granted #denied修改为granted 修改目的是允许所有的请求访问,如果不设置该行,访问的时候则会报403错误。
</Directory>
第二处:
<IfModule dir_module>
DirectoryIndex index.html index.php #在后面添加index.php 目的是增加一个网站
</IfModule>
第三处:
AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz
#为了支持PHP,需要增加以下两行跟PHP有关的配置
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
phpinfo();
?>
---
- name: httpd-install
hosts: server
tasks:
- name: install httpd service
yum:
name: httpd*
state: present
- name: copy httpd.conf
copy:
src: /root/lamp/httpd.conf
dest: /etc/httpd/conf/httpd.conf
- name: start httpd
service:
name: httpd
state: started
enabled: yes
- name: php-install
hosts: server
tasks:
- name: install php-fpm service
yum:
name: php*
name: php-fpm*
state: present
- name: start php-fpm service
service:
name: php-fpm
state: started
enabled: yes
- name: index
hosts: server
tasks:
- name: index.php
copy:
src: /root/lamp/index.php
dest: /var/www/html/index.php
- name: install mysql- service
hosts: server
tasks:
- name: install mysql-server
yum:
name: mysql-server
state: present
- name: start mysqld
service:
name: mysqld
state: started
enabled: yes
先检查是否有语法错误
ansible-playbook -C /ansible/lamp.yaml #如果不在当前文件夹下,记得添加剧本的绝对路径
语法检查没问题开始执行
ansible-playbook /ansible/lamp.yaml