ansible基础
# 主要介绍这个ansible的原理,安装的方式
ansible基础
一、概述
1、ansible简介
-
ansible是一个自动化的工具,不需要服务启动,通过这个python开发,无代理结构
-
基于模块化工作的,本身没有批量部署的能力,具有批量部署的是ansible所运行的模块,不需要安装客户端,因为通过ssh远程管理的
2、ansible特点
-
agentless 不需要在被管理节点上面安装客户端,默认使用的就是sshd,在安装系统的时候就已经安装好了
-
serverless 服务端不需要启动任何服务,只需要执行命令就行,ansible是一个工具
-
modules in any language 基于模块工作
-
对于简单的命令使用 ad-hoc,复杂的任务使用ansible的playbook来实现,ansible的每一条的命令就是对于这个模块的调用
-
可以实现多级的控制,有一个主控节点,管理3个被控节点,然后这个被控节点又充当主控节点管理多个被控节点,这样的话,分担主控节点的压力
-
ansible也有一个web界面,AWX平台
3、ansible的功能和优势
-
自动化的执行环境
- 将ansible的软件包封装在容器镜像之中,通过拉取不同的容器镜像获得不同的ansible版本,而不同ansible的版本之间所能实现特性是不同的,(例如ansible2.8中可能不支持模块A,但是ansible2.6是支持模块A,因此可以拉取ansible2.6的容器镜像来执行模块A的指令),ansible的自动化执行环境实现ansible版本与模块的分离
-
实现自动化的标准和规范化
- 通过自动化控制中心(ansible-tower)拥有一整套完整的流程和权限管理机制,流程指的是可以根据定制执行流,同时可以通过外部的第三方代码库来管理和开发ansible的playbook也就是剧本(比如通过git来管理playbook)
-
自动化网络管理
- 通过网络管理的模块来实现网络的自动化
4、有代理架构和无代理架构
-
有代理架构就是一个C/S,被管理节点需要安装客户端,通过客户端执行服务端下发的指令
-
无代理架构,指的使用应用携带的能力来管理应用本身,不需要专门去安装一个客户端,ssh
二、ansible的架构
1、ansible的架构图

-
ansible: ansible的核心程序
-
host invntory: ansible的主机清单,也就是ansible能够管理的被控节点,需要在主机清单中定义才行,且ansible只能管理主机清单中的主机,其他的不能管理
-
playbook:ansible的剧本,在里面定义一系列的任务,通过执行剧本达到所有任务执行的目的
-
core modules:ansible核心的模块,大部分都是自带的,在安装的时候就有的
-
custom modules: 扩展模块,弥补核心模块不足的问题
-
connection plugins:连接插件,linux默认使用ssh,windows使用rm插件
2、ansible的工作原理
- 用户下发任务到ansible主程序,如果任务是一个playbook,则ansible根据剧本中定义的主机,在主机清单中选择该主机,然后使用连接插件连接到被控端,连接后根据剧本定义的任务选择响应的模块,并将其推送到被控端执行,执行后删除在被控端的模块,完成任务的执行
三、ansible安装方式
1、rpm包安装ansible
欧拉的仓库自带ansible的源,安装后,会有配置文件的
yum -y install ansible
# 模块有3387个,非常的多,如果是centos或者redhat的话,默认是安装的ansible-core,也就是只安装核心模块,只有十几个
[root@server ~]# ansible-doc -l | wc -l
3387
# 查看版本
[root@server ~]# ansible --version
ansible 2.9.27 # 版本是2.9的,这个最后一个企业稳定版
config file = /etc/ansible/ansible.cfg
configured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
ansible python module location = /usr/lib/python3.9/site-packages/ansible
executable location = /usr/bin/ansible
python version = 3.9.9 (main, Dec 28 2023, 13:48:32) [GCC 10.3.1]
2、源码包安装ansible
-
编译安装的话,是没有配置文件的,需要自己生成
-
https://github.com/ansible/ansible ansible源码包,里面有最新版本的
-
如果下载不下来的话,使用github代理
wget https://ghfast.top/https://github.com/ansible/ansible/archive/refs/tags/v2.9.27.zip
# unzip解压
unzip v2.9.27.zip
# 安装一些编译需要的依赖包(后面编译的时候出现了错误,就需要安装缺少的包)
yum -y install gcc libffi-devel openssl-devel python3 python3-devel python3-cryptography
cd ansible-2.9.27/
python3 setup.py build
python3 setup.py install
# 查看版本
[root@server ~]# ansible --version
ansible 2.9.27
config file = None
configured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
ansible python module location = /usr/local/lib/python3.9/site-packages/ansible-2.9.27-py3.9.egg/ansible
executable location = /usr/local/bin/ansible
python version = 3.9.9 (main, Dec 28 2025, 14:12:37) [GCC 10.3.1]
这个编译安装可以自定义的,python3 setup.py install --prefix=/opt/ansible
编译安装后,怎么删除了?
# 默认安装的话,首先删除ansible的一些命令
[root@server lib]# which ansible
/usr/local/bin/ansible
[root@server lib]# cd /usr/local/bin/
[root@server bin]# ls
ansible ansible-console ansible-inventory ansible-test
ansible-config ansible-doc ansible-playbook ansible-vault
ansible-connection ansible-galaxy ansible-pull
# 删除所有ansible命令
[root@server bin]# rm -rf ansible*
[root@server bin]# ls
# 删除ansible的一些模块
[root@server lib]# ls
python3.9
# 删除成功了
3、pip安装
使用的是清华大学的镜像源,

浙公网安备 33010602011771号