ansible全面介绍

官网:https://www.ansible.com

中文网:www.ansible.com.cn

 

ansible命令使用

ansible常用模块详解

yaml语法简介

ansible playbook基础

playbook变量,tags,handlers使用

playbook模板templates

playbook条件判断when

playbook字典with_items

ansible roles

 

运维自动化发展历程及技术应用

on-premises:本地部署

laas:基础设施即服务(硬件)

paas:平台即服务(系统)

saas:软件即服务(全系列提供)

 

云计算运维工程师核心职能

平台架构组建

日常运营保障

性能,效率优化

ansible入门

 

企业实际应用场景分析

  1. Dev开发环境

使用者:程序员

功能:程序员开发软件,测试BUG的环境

管理者:程序员

  1. 测试环境

使用者:QA测试工程师

功能:测试经过Dev环境测试通过的软件的功能

管理者:运维

说明:测试环境往往有多套,测试环境满足测试功能即可,不宜过多

  1. 测试人员希望测试环境有多套,公司的产品多产品线并发,即多个版本意味着多个版本同步测试
  2. 通常测试环境有多少套和产品线数量保持一样
  1. 发布环境:代码发布机,有些公司称为堡垒机(安全屏障)

使用者:运维

功能:发布代码至生产环境

管理者:运维(有经验)

发布机:往往需要有2台(主备)

  1. 生产环境

使用者:运维,少数情况开放权限给核心开发人员,极少数公司将权限完全开放给开发人员并且维护

功能:对用户提供公司产品的服务

管理者:只能是运维

生产环境服务器数量:一般比较多,且应用非常重要。往往需要自动工具协助部署配置应用。

  1. 灰度环境(生产环境的一部分)

使用者:运维

功能:在全量发布代码前将代码的功能面向少量精准用户发布的环境,可基于主机或用户执行灰度发布

案例:共100台生产服务器,先发布其中的10台服务器,这10台服务器就是灰度服务器

管理者:运维

灰度环境:往往该版本功能变更较大,为保险起见特意先让一部分用户优化体验该功能,待这部分用户使用没有重大问题的时候,再全面发布至所有服务器。

程序发布

预发布验证:

       新版本的代码先发布到服务器(跟线上环境配置完全相同,只是未接入到调度器)

程序发布:

       不能导致系统故障或造成系统完全不可用

       不能影响用户体验

灰度发布:

发布路径:

       /webapp/tuangou-1.1

       /webapp/tuangou

       /webapp/tuangou-1.2

发布过程:在调度器上下线一批主机(标记为maintanance状态)-->关闭服务—>部署新版本的应用程序-->启动服务-->在调度器上启用这一批服务器

自动化灰度发布:脚本、发布平台

#调度器:将用户的请求分别发送到后端真实应用服务器。

 

常用自动化运维工具:

ansible:   python,agentless,中小型应用环境
saltstack: python,一般需要部署agent,执行效率更高
puppet:   ruby,功能强大,配置复杂,重型,适合大型环境
fabric:python,agentless
chef:       ruby,国内应用少
cfengine:
func:
 

ansible工作架构和原理

ansible特性:

模块化:调用特定的模块,完成特定任务

有Paramiko,PyYAML,Jinja2(模块语言)三个关键模块

支持自定义模块

基于python语言实现

部署简单,基于python和ssh(默认已安装)

安全,基于openssh

支持playbook编排任务

幂等性:一个任务执行1遍和执行n遍效果一样,不因重复执行带来意外情况

无需代理不依赖PKI(无需ssl)

可使用任何编程语言写模块

YAML格式,编排任务,支持丰富的数据结构

较强大的多层解决方案

 

ansible工作原理:

ansible入门

ansible架构:

ansible入门

ansible主要组成部分

ansible playbooks:      任务剧本(任务集),编排定义ansible任务集的配置文件,有ansible顺序依次执行,通常是json格式的YML文件

inventoryansible管理主机的清单/etc/ansible/hosts

modules:       ansible执行命令的功能模块,多数为内置核心模块,也可自定义

plugins:模块功能的补充,如连接类型插件、循环插件、变量插件、过滤插件等,该功能不常用

API:供第三方程序调用的应用程序编程接口

ansible: 组合inventory、API、modules、plugins的绿框,可以理解为是ansible的命令工具,其为核心执行工具

 

ansible命令执行来源:

user:普通用户,即system administrator

cmdb(配置管理数据库)API调用

public/private cloud API调用

user->ansible playbook->ansible

利用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不能做主控端

安装

yum安装(centos7可直接安装)

yum -y install epel*
yum -y install ansible

#编译安装…

#Git安装…

#pip安装…

确认安装:ansible --version

相关文件

配置文件

/etc/ansible/ansible.cfg        主配置文件,配置ansible工作特性

/etc/ansible/hosts                主机清单

/etc/ansible/roles/               存放角色的目录

#reles(角色):多个palybook的集合

程序

/usr/bin/ansible                  主程序

/usr/bin/ansible-doc           查看配置文档,模块功能查看工具

/usr/bin/ansible-galaxy       下载/上传优秀代码或roles模块的官网平台

/usr/bin/ansible-playbook   定制自动化任务,编排剧本工具

/usr/bin/ansible-pull           远程执行命令的工具

/usr/bin/ansible-vault         文件加密工具

/usr/bin/ansible-console     基于console界面与用户交互的执行工具

 

主机清单inventory(库存)

inventory主机清单

ansible的主要功能在于批量主机操作,为了便捷地使用其中的部分主机,可以在inventory file中将其分组命名

默认的inventory file为/etc/ansible/hosts

inventory file可以有多个,且也可以通过Dynamic inventory来动态生成

ansible配置文件

ansible配置文件/etc/ansible/ansible.cfg(一般保持默认)

[defaults]
#inventory     = /etc/ansible/hosts     //主机列表配置文件
#library   = /usr/share/my_modules/  //库文件存放目录
#remote_rmp = $HOME/.ansible/tmp              //临时py命令文件存放在远程主机目录
#local_tmp     = $HOME/.ansible/tmp              //本机临时目录执行目录
#forks     = 5  //默认并发数(同时5台机器执行)
#sudo_user    = root     //默认sudo用户
#ask_sudo_pass    = True    //每次执行ansible命令是否询问ssh密码
#ask_pass     = True
#remote_port       = 22
host_key_checking     = False   //检查对应服务器的host_key,建议取消注释
log_path       = /var/log/ansible.log //日志文件

 

相关文章:

  • 2021-06-07
  • 2022-12-23
  • 2022-12-23
  • 2021-10-23
  • 2021-06-11
  • 2021-06-24
  • 2021-06-24
猜你喜欢
  • 2021-11-27
  • 2021-11-20
相关资源
相似解决方案