Ansible概述和模块解释(你刚走过了今天,而扑面而来的却是昨天)(一)

简介: Ansible概述和模块解释(你刚走过了今天,而扑面而来的却是昨天)(一)

前言


常用的自动化工具有:


ansible

saltstack

puppet


这三款都是自动化工具,可以用来提高运维管理效率,在这三款运维工具中目前主流的是ansible和saltstack。ansible和saltstack的区别在于ansible无需安装客户端,这也成为了ansible的一大优势;而saltstack则需要安装客户端,也可以不用安装,他们的适用场景也不一样,ansible适用于小型企业,管理较少的服务器时适用,saltstack则用于中大型企业,因为ansible无法并行执行saltstack则可以并行执行。但是这三款运维工具并不存在优劣,只是适用的场景的不同。


一、Ansible概述


1.1 Ansible介绍

Ansible是一个基于 Python开发的配置管理和应用部署工具,现在也在自动化管理领域大放异彩。它融合了众多老牌运维工具的优点,Pubbet和Saltstack能实现的功能,Ansible基本上都可以实现。


1.2 Ansible能做什么

Ansible能批量配置、部署、管理上千台主机。比如以前需要切换到每个主机上执行的一或多个操作,使用Ansible只需在固定的一台Ansible控制节点上去完成所有主机的操作。


Ansible是 基于模块工作 的,它只是提供了一种运行框架,它本身没有完成任务的能力,真正执行操作的是Ansible的模块 ,比如copy模块用于拷贝文件到远程主机上,service模块用于管理服务的启动、停止、重启等。


1.3 为什么选择Ansible

Ansible自2012年发布以来,没多久便在美国开始流行。快速被IT人员接受的原因较大方面得益于Michael DeHaan在美国IT圈的名气和影响力。随后它逐步在各国流行。而笔者选择Ansible的原因主要有如下几个方面:


Ansible完全基于Python开发,而DevOps在国内已然是一种趋势,Python被逐步普及,运维人员自己开发工具的门槛逐步降低,得益于此,方便对Ansible二次开发;

Ansible丰富的内置模块,甚至还有专门为商业平台开发的功能模块,近600个模块完全可以满足日常功能所需;

在Ansible去中心化概念下,一个简单的复制操作即可完成管理配置中心的迁移;

Agentless(无客户端),客户端无需任何配置,由管理端配置好后即可使用,这点非常诱人。在第10章会介绍如何部署配置Windows系统的主机端,用后会有深切的感受。

自Ansible发布后,也陆续被AWS、Google CloudPlatform、Microsoft Azure、Cisco、HP、VMware、Twitter等大公司接纳并投入使用。


1.4 两大特性

agentless:不需要额外安装客户端软件,只要在一台主机上安装anaible即可通过ash控制远程主机ansib1c是通过模块来执行操作的

幂等性;ansible很多模块在执行时会判断远程主机是否已执行过这个任务,如果已执行且操作没有发生任何改变,则不会再去执行改变结果


1.5 Ansible架构

Ansible 管理节点和远程主机节点间通过SSH协议进行通信。所以配置Ansible的时候,只需保证从Ansible 管理节点通过SSH协议能够连接到被管理的远程节点即可。注意,SSH必须配置为公钥认证登录方式,而非密码认证。


Ansible可以同时管理Red Hat系的Linux、Debian系的Linux以及Windows 主机。Ansible的工作原理如图所示。



二、部署Ansible


服务器类型

IP地址 需要安装的软件
Ansible管理服务器 192.168.109.138 Ansible
被管理客户端 192.168.109.131 ------
被管理客户端 192.168.109.132 ------

2.1 安装ansible服务

[root@localhost ~]#yum install -y epel-release
[root@localhost ~]#yum install -y ansible
[root@localhost ~]# cd /etc/ansible/
[root@localhost ansible]# ls
ansible.cfg  hosts  roles
----------------------------------------------------------------
ansible.cfg  # ansible的配置文件,一般无需修改
hosts   # ansible的主机清单,用于存储需要管理的远程主机的相关信息
roles   # 公共角色目录


2.2 配置主机清单

vim /etc/ansible/hosts    
[webservers]  #配置组名
192.168.109.131  #组里包含的被管理主机IP地址或主机名(主机名需要先修改/etc/hosts文件)
[dbservers]
192.168.109.132


2.3 配置密钥对验证

#生成密钥对(一路回车)
ssh-keygen -t rsa  
#导入对方主机
ssh-copy-id root@192.168.109.131
ssh-copy-id root@192.168.109.132


2.4 设置免交互免密登录

vim /etc/ssh/ssh_config
35    StrictHostKeyChecking no
systemctl restart sshd



目录
相关文章
|
7月前
|
运维 Shell Linux
Ansible自动化运维工具之常用模块使用实战(5)
Ansible自动化运维工具之常用模块使用实战(5)
|
9月前
|
网络协议 网络安全
Ansible模块介绍——防火墙模块
Ansible模块介绍——防火墙模块
153 0
|
5天前
|
算法 安全 Linux
Ansible 中的copy 复制模块应用详解
Ansible 中的copy 复制模块应用详解
|
7月前
|
运维 Linux
Ansible自动化运维工具之常用模块使用实战(6)
Ansible自动化运维工具之常用模块使用实战(6)
|
6月前
|
网络安全 数据安全/隐私保护
ansible的get_url模块
ansible的get_url模块
|
6月前
|
存储 Linux Python
ansible手动添加模块
ansible手动添加模块
50 0
|
9月前
Ansible模块管理——磁盘管理模块、mount模块
Ansible模块管理——磁盘管理模块、mount模块
263 0
|
9月前
|
网络协议 网络安全 数据安全/隐私保护
Ansible模块介绍——配置网络模块、上传下载文件模块
Ansible模块介绍——配置网络模块、上传下载文件模块
276 0
|
9月前
|
应用服务中间件 nginx
Ansible模块——软件包管理模块
Ansible模块——软件包管理模块
|
9月前
|
数据安全/隐私保护 Python
Ansible模块介绍——用户管理模块
Ansible模块介绍——用户管理模块