Ansible之路——第一章:概念

摘要:
Ansible是通过Python语言开发的。默认情况下,Ansible通过SSH协议管理机器,因此Ansible不需要在服务器上安装客户端程序。Ansible可以实现以下目标:自动化部署、应用程序自动化、管理、配置自动化、持续交付、自动化云服务管理。。。真正有批量部署的是Ansible运行的模块。Ansible只提供了一个框架。

1.1 简介

Ansible 是一个配置管理和应用部署工具,功能类似于目前业界的配置管理工具 Chef、Puppet、Saltstack。Ansible 是通过 Python 语言开发。

Ansible 默认通过 SSH 协议管理机器,所以 Ansible 不需要安装客户端程序在服务器上。

Ansible 可以实现以下目标:

  • 自动化部署应用
  • 自动化管理配置
  • 自动化的持续交付
  • 自动化的(AWS)云服务管理

1.2 Ansible特性:

  • no agents:不需要在被管控主机上安装任何客户端;
  • no server:无服务器端,使用时直接运行命令即可;
  • modules in any languages:基于模块工作,可使用任意语言开发模块;
  • yaml,not code:使用yaml语言定制剧本playbook;
  • ssh by default:基于SSH工作;
  • strong multi-tier solution:可实现多级指挥。

1.3 Ansible总体架构:

Ansible之路——第一章:概念第1张

上图为ansible的基本架构,从上图可以了解到其由以下部分组成:

  • 核心:ansible
  • 核心模块(Core Modules):这些都是ansible自带的模块 
  • 扩展模块(Custom Modules):如果核心模块不足以完成某种功能,可以添加扩展模块
  • 插件(Plugins):完成模块功能的补充
  • 剧本(Playbooks):ansible的任务配置文件,将多个任务定义在剧本中,由ansible自动执行
  • 连接插件(Connectior Plugins):ansible基于连接插件连接到各个主机上,虽然ansible是使用ssh连接到各个主机的,但是它还支持其他的连接方法,所以需要有连接插件
  • 主机群(Host Inventory):定义ansible管理的主机

1.4 基于模块的设计

Ansible是基于模块工作的,本身没有批量部署的能力。真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架。主要包括:

  • 连接插件connection plugins:负责和被监控端实现通信;
  • host inventory:指定操作的主机,是一个配置文件里面定义监控的主机;
  • 各种模块核心模块、command模块、自定义模块;
  • 借助于插件完成记录日志邮件等功能;
  • playbook:剧本执行多个任务时,非必需可以让节点一次性运行多个任务。

1.5 工作原理

Ansible之路——第一章:概念第2张

以上是ansible工作原理图,两张图基本都是在架构图的基本上进行的拓展。从上面的图上可以了解到:

  1. 管理端支持local 、ssh、zeromq 三种方式连接被管理端,默认使用基于ssh的连接---这部分对应基本架构图中的连接模块;
  2. 可以按应用类型等方式进行Host Inventory(主机群)分类,管理节点通过各类模块实现相应的操作---单个模块,单条命令的批量执行,我们可以称之为ad-hoc;
  3. 管理节点可以通过playbooks 实现多个task的集合实现一类功能,如web服务的安装部署、数据库服务器的批量备份等。playbooks我们可以简单的理解为,系统通过组合多条ad-hoc操作的配置文件 。

1.6 ansible 执行流程

Ansible之路——第一章:概念第3张

Ansible在运行时, 首先读取 ansible.cfg中的配置, 根据规则获取Inventory中的管理主机列表, 并行的在这些主机中执行配置的任务, 最后等待执行返回的结果。

1.7 ansible 命令执行过程

Ansible之路——第一章:概念第4张

a) 加载自己的配置文件,默认/etc/ansible/ansible.cfg;

b) 查找对应的主机配置文件,找到要执行的主机或者组;

c) 加载自己对应的模块文件,如 command;

d) 通过ansible将模块或命令生成对应的临时py文件(python脚本), 并将该文件传输至远程服务器;

e) 对应执行用户的家目录的.ansible/tmp/XXX/XXX.PY文件;

f) 给文件 +x 执行权限;

g) 执行并返回结果;

h) 删除临时py文件,sleep 0退出;

免责声明:文章转载自《Ansible之路——第一章:概念》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇WPF动画速率效果Oracle冷备下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

ubuntu中安装VNC供多用户访问(实验室运维踩坑)

1. 安装VNC服务端 首先在服务器上安装tigerVNC,命令如下。(这里没有选择realVNC是因为其在多用户访问时出现问题) sudo apt install tigervnc-standalone-server tigervnc-xorg-extension 2. 拨号上网 安装pppoeconf sudo apt install pppoecon...

ssh连接失败,排错经验

一、场景描述 ssh连接服务器,发现连接失败,但是对应服务器的ip能够ping通。 场景: [root@yl-web ~]# ssh root@10.1.101.35 ssh_exchange_identification: read: Connection reset by peer [root@yl-web ~]# ping 10.1.101.35...

CentOS7 Ceph分布式集群部署

CentOS 7 下安装Ceph-nautilus 本问主要记录在CentOS 7下如何安装Ceph-nautilus,安装过程中遇到的一些问题及解决方法。 1、Ceph实验准备 以下是本次实验所用到的机器(采用的是虚拟机)的配置: node1 192.168.1.115(三块硬盘) Mon、mgr、rgs、osd node2 192.168.1....

访问局域网中的虚拟机(详细教程!)

访问局域网中的虚拟机(详细教程!) 如何利用局域网中的一台PC访问另一台PC中的虚拟机(例如VMware创建的Linux虚拟机)? 解决方案如下:(图中序号代表操作顺序) 1. 首先我们将虚拟机中的sshd的端口映射到主机的端口中 步骤如下: step1: 设置VMware中虚拟机的虚拟网络编辑器 1 step2: 经过以上操作,我们就完...

ssh访问流程

SSH是英文Secure Shell的简写形式。通过使用SSH,你可以把所有传输的数据进行加密,这样"中间人"这种攻击方式就不可能实现了,而且也能够防止DNS欺骗和IP欺骗。使用SSH,还有一个额外的好处就是传输的数据是经过压缩的,所以可以加快传输的速度。SSH有很多功能,它既可以代替Telnet,又可以为FTP、Pop、甚至为PPP提供一个安全的"通道"...

CentOS搭建Git服务器及权限管理

https://www.cnblogs.com/fly_dragon/p/8718614.html 声明:本教程,仅作为配置的记录,细节不展开,需要您有一点linux的命令基础,仅作为配置参考。 1. 系统环境 系统: Linux:CentOS 7.2 64位 由于CentOS已经内置了OpenSSH,如果您的系统没有,请自行安装。 查看ssh版本 $s...