ansible的原理与安装

  1. ansible是一个开源的自动化工具(GPLV3 开源)
  2. ansible tower 是一个企业级自动化平台,是统一的ansible主控管理平台(是目前市场上除了自研以外的唯一选择方案) ansible-tower 来自于 开源的 AWX  
  3. 为什么需要自动化???

  因为对于重复的操作 只会浪费工程师的时间和精力;可以将重复的事情进行自动化;可以将复杂的事情也进行自动化

Ansible 几乎可以对所有的IT资源进行自动化管理:

网络设备、公私云、防火墙、服务器、基础架构……

eg. 部署一个企业网站(自建机房开始),那么ansible可以完成那些部分

基础硬件(机房、宽带、空调、服务器硬件….)

安装操作系统 

调试系统的配置(配置防火墙、配置存储…)  Ansible

安装web软件(nginx、apache、tomcat)     Ansible

安装中间件 (redis 消息队列….)            Ansible

修改web的配置(nginx/apache ….)           Ansible

发布网站的源码                             Ansible

用户才能访问网站                           Ansible

ansible特点:

简单:

人工可读的自动化  ansible 使用yaml语言来作为其配置

无需特殊编码技能

任务是按照顺序执行

可用于任何团队    ansible 适用于运维团队、开发团队、测试团队

支持windows自动化(windows只能作为ansible的被控,不能成为主控)

强大:

  ansible支持通过powershell 来管理windows(通过winrm进行远程)

期望的状态配置 (幂等性: 一次执行和多次重复执行对结果的影响是一致的)

ansible报错了 可以重出错的重新开始,在错误发生的地方重新开始

管理域中的用户

企业应用进行编排(将多个任务按照一定的逻辑或者顺序组合在一起执行)

无代理:

ansible 使用应用原生的方式来管理应用本身

ansible 没有为被管理的对象开发代理的客户端程序

windows ——> winrm  windows原生支持的远程管理方式

Linux    ——> ssh     ssh是Linux服务器自带的远程管理方式

网络设备 ——> snmp  snmp 简单网络管理协议

公私云  ——> API     云平台的API接口  

…..

ansible 对于简单的任务使用ansible ad-hoc(临时命令)来完成,对于复杂的任务使用ansible 的playbook(剧本)来完成

ad-hoc: 比如  创建用户,安装软件包 …  通常是单个任务

playbook: 比如  构建企业网站,对业务系统升级 …通常是由多个任务组成的一个项目

playbook  是使用yaml语言作为其配置语言 

Ansible的架构

核心:ansible

核心模块(Core Modules):这些都是ansible自带的模块

扩展模块(Custom Modules):如果核心模块不足以完成某种功能,可以添加扩展模块

插件(Plugins):完成模块功能的补充

剧本(Playbooks):把需要完成的多个任务定义在剧本中

连接插件(Connectior Plugins):ansible基于连接插件连接到各个主机上,虽然ansible是使用ssh连接到各个主机的,但是它还支持其他的连接方法,所以需要有连接插件

主机清单(Host Inventory):ansible在管理多台主机时,可以选择只对其中的一部分执行某些操作

ansible 只能管理清单中的主机,如果被管理的主机不在清单中,ansible不执行任务

Ansible的原理

  1. 解析Inventory(主机清单)文件:在Ansible执行任何任务之前,需要先解析Inventory文件以确定被管理节点的位置和角色。Inventory文件是一个文本文件,它描述了被管理节点的名称、IP地址、主机组信息等。
  2. SSH连接到被管理节点:Ansible使用SSH协议或WinRM协议连接到被管理节点,这取决于节点操作系统的不同。在连接时,Ansible会验证SSH密钥并启动一个临时的SSH连接进程
  3. 执行任务:连接建立后,Ansible通过模块执行任务。模块是Ansible执行每个任务的工具,如文件操作、软件包安装、服务启动等。Ansible会将任务分发给所有被管理节点,并在这些节点上执行相应的操作。当任务执行完成后,Ansible会收集任务执行结果并返回给控制节点。
  4. 关闭连接:任务执行完成后删除模块,Ansible会关闭与被管理节点的连接,并停止SSH连接进程。

Ansible的安装

使用rpm包安装ansible 

ubuntu: deb的包  rhel系列: rpm包

ansible-core  核心模块的版本(ansible早期的版本 2.4之前)  

ansible-erxta 扩展的模块的版本

ansible ——> 核心模块+扩展模块

  1. rpm https://releases.ansible.com/ansible/rpm/release(结束到epel7)
  2. RHEL8、ubuntu 目前都是由厂商和社区在进行构建

rpm包安装:

得到软件源 RHEL7以下的版本,使用上面的epel源

   RHEL8 开始的版本,使用系统的镜像源(不是dvd的源)而是官方仓库

RHEL8的源配置示例:

[BaseOS]

name=BaseOS

baseurl=file:///dvd/BaseOS

enabled=1

gpgcheck=0

[AppStream]

name=AppStream

baseurl=file:///dvd/AppStream

enabled=1

gpgcheck=0

[ansible]

name=ansible

baseurl=file:///ansible/ansible

enabled=1

gpgcheck=0

yum  clean all  && yum makecache

yum install ansible –y

使用源码包安装ansible

https://releases.ansible.com/ansible 官方维护的稳定版,相对于开源版本较低

https://github.com/ansible/ansible  社区的开源版本,是最新的版本

  1. 下载指定版本的源码包

wget https://ghproxy.com/https://github.com/ansible/ansible/archive/refs/tags/v2.8.0.zip

  1. 安装依赖

dnf install -y gcc libffi-devel openssl-devel python3 python3-devel  python3-cryptography  -y

  1. 解压源码包并安装

unzip  v2.8.0.zip

cd ansible-2.8.0

python3.6 setup.py  build

python3.6 setup.py  install

  1. 生成配置文件

mkdir  /etc/ansible

cp examples/ansible.cfg  /etc/ansible

cp examples/hosts  /etc/ansible

  1. 验证

ansible --version

使用pip安装ansible
  1. 安装依赖

yum install rust cargo python3-cryptography  -y

  1. pip安装

pip3 install ansible==2.8.0  -i  https://pypi.tuna.tsinghua.edu.cn/simple

ansible==2.8.0 指定版本

https://pypi.tuna.tsinghua.edu.cn/simple  指定清华大学的pip源

  1. 生成ansible.cfg的配置文件

mkdir  /etc/ansible

touch /etc/ansible/ansible.cfg  /etc/ansible/hosts

  1. 验证

ansible  --version

想获取更多内容,请关注公众号:博睿谷

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值