运维自动化发展历程及技术应用
Ansible命令使用
Ansible常用模块详解
YAML语法简介
Ansible playbook基础
Playbook变量 tags handlers使用
Playbook模板templates
Playbook条件判断when
Playbook字典with_items
Ansible Roles
运维自动化发展历程及技术应用
On-Premises
本地部署(在家自己做)
IAAS
基础设施即服务(买成品回家做)卖硬件
PAAS
平台即服务(叫外卖)卖操作系统
SAAS
软件即服务(去店里吃)卖一条龙服务-发展趋势-云
云计算运维工程师核心职能
平台架构组建
日常运营保障
性能,效率优化
自动化运维场景
文件传输
命令执行
应用部署
配置管理
任务流编辑
灰度环境
灰度环境:保险起见,先让一部分用户更新功能,待使用没什么问题,再全量发布到所有服务器
常用自动化运维工具
Ansible:python 中小型应用环境
Saltstack:python 一般需要部署agent 执行效率更高
Puppet:ruby 功能强大 配置复杂 重型 适合大型环境
Ansible特性
模块化:调用特定的模块,完成特定任务
有Paramliko,PyYAML,jinja2(模块语言)三个关键模块
支持自定义模块
基于Python语言实现
部署简单,基于python和SSH,agentless
安全,基于OpenSSH
支持playbook编排任务
幂特性:一个任务执行一遍和执行n遍效果一样的,不因重复执行带来意外情况
无需代理不依赖PKI(无需ssl)
可使用任何编程语言写模块
YAML格式,编排任务,支持丰富的数据结构
较强大的多层解决方案
Ansible架构
主机清单
一个一个小模块
playbook 定时执行
Ansible主要组成部分
ansible playbooks 任务剧本
inventory 主机清单
modules 功能模块
plugins 模块功能的补充
api 供第三方程序调用的应用程序编程接口
ansible 组合上面的绿框 可以理解为ansible命令工具 其为核心执行工具
ansible命令执行来源
user 普通用户
cmdb (配置管理数据库)API调用
public/private cloud API调用
利用ansible实现管理的方式
Ad-Hoc 即ansible命令 主要用于临时命令使用场景
Ansible-playbook 主要用于长期规划好的 大型项目的场景 需要有前提的规划
ansible-playbook 执行过程
将已经编排好的任务集写入ansible-playbook
通过ansible-playbook命令分拆任务集至逐条ansible命令 按预定规则逐条执行
ansible主要操作对象
hosts主机
networking网络设备
注意事项
执行ansible的主机一般称为主控端 中控 master 或 堡垒机
主控端python版本需要2.6或者以上
被控端python版本小于2.4需要安装python-simplejson
被控端如开启selinux需要安装libselinux-python
Windows不能作为主控端
安装
rpm包安装:epel源
yum install http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm -y
yum clean all
yum -y install ansible
编译安装
yum -u install python-jinja2 PyYAML python-paramiko python-babel python-cypto
tar xf ansible-1.5.4.tar.gz
cd ansible-1.5.4
python setup.py build
python setup.py install
mkidr /etc/ansible
cp -r examples/* /etc/ansible
git安装
git clone git://github.com/ansible/ansible.git --recursive
cd ./ansible
source ./hacking/env-setup
pip安装
yum -y install python-pip python-devel
yum -y install gcc glibc-devel zibl-devel rpm-build openssl-devel
pip install --upgrade pip
pip install ansible --upgrade
确认安装 ansible --version
yum -y install ansible
pip3 install -i https://mirrors.aliyun.com/pypi/simple/ ansible
[root@node1 ansible]
[defaults]
hostfile=/etc/ansible/hosts
private_key_file = /root/.ssh/id_rsa
remote_user = root
remote_port = 22
host_key_checking = False
[root@node1 ansible]
192.168.0.211
192.168.0.213