ansible以及playbook的介绍使用
- Ansible 特点:
- 部署简单,只需在主控端部署 Ansible 环境,被控端无需做任何操作。
- 默认使用 SSH(Secure Shell)协议对设备进行管理。
- 主从集中化管理。
- 配置简单、功能强大、扩展性强。
- 支持 API 及自定义模块,可通过 Python 轻松扩展。
- 通过 Playbooks 来定制强大的配置、状态管理。
- 对云计算平台、大数据都有很好的支持。
- 提供一个功能强大、操作性强的 Web 管理界面和 REST API 接口 — AWX 平台。
2. Ansible 与 SaltStack:
- 最大的区别是 Ansible 无需在被监控主机部署任何客户端代理,默认通过 SSH 通道进行远程命令执行或下发配置。
- 相同点是都具备功能强大、灵活的系统管理、状态配置,都使用 YAML 格式来描述配置,两者都提供丰富的模板及 API,对云计算平台、大数据都有很好的支持。
3. 参考技术博客 https://blog.csdn.net/zhao12795969/article/details/80888492
4. 关于ansible常用模块的介绍此处略,可以参考上面的链接查看
5. 以下是关于playbook的介绍
- playbook的核心元素:
hosts:主机
tasks:任务列表
variables: 变量
templates:包含了模板语法的文本文件
handlers:由特定条件触发的任务
- playbooks配置文件的基础组件:
hosts:运行指定任务的目标主机
remote_user:在远程主机上执行任务的用户
sudo_user:
tasks:任务列表
模块,模块参数;
6. 批量安装nginx———playbook
- 虚拟机克隆三台主机
1)一台作为控制机 #IP:192.168.141.129
2)另外两台作为被控制机
3)并做好ssh免密码登陆(将控制机的公钥分发给两台被控制机)--步骤:略
- 配置被控制主机组
vim /etc/ansible/hosts
...
[web]
## alpha.example.org
## beta.example.org
192.168.141.130 #被控制机组的IP地址
192.168.141.131 #被控制机组的IP地址
....
- 在/etc/ansible/roles下生成对应的目录结构:
mkdir -pv ./nginx/{files,templates,vars,tasks,handlers,meta,default}
- 进入roles/nginx目录下
- 定义tasks/main.yml 配置文件
vim tasks/main.yml
- name: cp
copy: src=nginx-1.10.2-1.el7.ngx.x86_64.rpm dest=/app/nginx-1.10.2-1.el7.ngx.x86_64.rpm
#copy模块将nginx安装包推给主机节点
- name: install
yum: name=/app/nginx-1.10.2-1.el7.ngx.x86_64.rpm state=latest
#yum模块在主机节点上安装nginx服务
- name: conf
template: src=nginx.conf.j2 dest=/etc/nginx/nginx.conf
tags: nginxconf
notify: new conf to reload
#将nginx.conf.j2配置文件推给主机组
- name: start service
service: name=nginx state=started enabled=true
tags: startnginx
#service模块启动主机组上的nginx服务
- 定义nginx.conf.j2文件
yum -y install epel-release
yum -y install nginx
cp /etc/nginx/nginx.conf ./nginx.conf.j2
vim nginx.conf.j2 #这里我们只自定义了监听端口一个变量
...
server {
listen {{ nginxport }};
...
- 修改变量文件
vim vars/main.yml
nginxport: 9999
#该变量在服务器端的nginx.conf文件中有将端口定义为{{ nginxport }} ,因此这里需要给变量赋值。
- 定义handlers文件
vim handlers/main.yml
- name: new conf to reload
service: name=nginx state=restarted
- 定义/etc/ansible/nginx.yml的playbook文件
vim /etc/ansible/nginx.yml
- hosts: web
remote_user: root
roles:
- nginx
- 执行
ansible-playbook /etc/ansible/nginx.yml
- 检验是否成功
ansible web -m shell-a "curl localhost:9999 -I | grep nginx"
输出如下内容表示成功:
192.168.141.130 | SUCCESS | rc=0 >>
Server: nginx/1.12.2 % Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 3700 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
192.168.141.131 | SUCCESS | rc=0 >>
Server: nginx/1.12.2 % Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 3700 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0