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的架构图

img

  • 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安装

使用的是清华大学的镜像源,

posted @ 2026-03-02 11:03  乔的港口  阅读(5)  评论(0)    收藏  举报