Ansible:
(1)介绍
运维工作:系统安装(物理机、虚拟机)--> 程序包安装、配置、服务启动 --> 批量操作 --> 程序发布 --> 监控
OS Provisioning(操作系统配置):
物理机(bare metal):PXE、Cobbler(二次封装pxe技术)
虚拟机(virtual machine):Image Templates
Configration:(使用工具)
puppet (ruby)
saltstack (python)
chef
cfengine
Command and Control(命令与控制):
fabric
func
预发布验正:
新版本的代码先发布到服务器(跟线上环境配置完全相同,只是未接入到调度器);
(2)程序发布
人工智能(手动发布)
脚本
发布程序(专门负责运维程序)
要求:
1、不能影响用户体验;
2、系统不能停机;
3、不能导致系统故障或造成系统完全不可用;
灰度发布:
主机
用户
发布路径:
/webapps/tuangou
/webapps/tuangou-1.1
/webapps/tuangou-1.2
在调度器上下线一批主机(标记为维护模式) --> 关闭服务 --> 部署新版本的应用程序 --> 启动服务 --> 在调度器上启用这一批服务器;
自动化灰度发布:脚本、发布平台;
(3)运维工具的分类:
agent: puppet, func
agentless: ansible, fabric
ssh
(4)ansible:轻量化
特性:
模块化,调用特定的模块,完成特定的任务;
基于Python语言实现,由Paramiko、PyYAML和Jinja2三个关键模块;
部署简单,agentless;
主从模式
支持自定义模块
支持Playbook
幂等性(一个任务执行一遍,和多遍是一样的):
安装:
epel、ansible
配置文件:
/etc/ansible/ansible.cfg
主机清单:
/etc/ansible/hosts
主程序:
ansible
ansible-
ansible-doc -l 所有可用模块
ansible的简单使用格式:
ansible HOST-PATTERN -m MOD_NAME -a MOD_APGS
(5)示例
Ansible1管理192.168.52.91,其余三台:92、93、94;
生成秘钥,授权访问
[root@Ansible1 ~]#ssh-keygen -t rsa -P ''
[root@Ansible1 ~]#ssh-copy-id -i .ssh/id_rsa.pub root@192.168.52.92
[root@Ansible1 ~]#ssh-copy-id -i .ssh/id_rsa.pub root@192.168.52.93
[root@Ansible1 ~]#ssh-copy-id -i .ssh/id_rsa.pub root@192.168.52.94
[root@Ansible1 ~]# ansible all -m ping
192.168.52.93 | SUCCESS => {
"changed": false,
"ping": "pong"
}
192.168.52.94 | SUCCESS => {
"changed": false,
"ping": "pong"
}
192.168.52.92 | SUCCESS => {
"changed": false,
"ping": "pong"
}