ansible的工作架构原理及多种ansible安装方式

版权声明:转载请声明! https://blog.csdn.net/qq_34672033/article/details/89677540

ansible工作架构原理及多种安装方式

ansible的特性

  • 模块化:调用特定的模块,完成特定的任务–>(1000个模块)
  • 有paramiko(Python开发出来基于SSH服务的远程通讯模块), pyYAML(playbook基于此模块实现的), jinja2(模板语言)三个关键模块
  • 支持自定义模块
  • 基于Python语言实现
  • 部署简单,基于Python和SSH默认Linux系统已安装),agentless(无代理/无客户端)
  • 安全,基于openssh
  • 支持playbook编排任务(类似于编写脚本)
  • 幂等性:一个任务执行一遍和执行N遍效果是一样的,不重复执行带来意外情况
  • 无需代理不依赖PKI(无需SSL)
  • 可使用任何编程语言写模块
  • YAML格式,编排任务,支持丰富的数据结构
  • 较强大的多层解决方案(“角色”)

ansible基本架构

  • 用户要通过ansible(主控端)来控制其他机器(被控端)

可以大致分为三层结构:

  1. 用户
  2. 主控端
  3. 被控端
    Alt text
  • 解释说明:
  1. host inventory(主机清单)-配置文件
    在控制多台主机环境的时候,ansible如何知道控制那几台机器的?就用到了host inventory(主机清单)-文件 ,把需要控制的机器IP写入到主机清单中
  2. playbook(剧本)
    (1)如果做的一些是例行性的工作,大量重复可以使用playbook(剧本),playbook是通过各种命令和模块进行组合,然后进行任务操作
    (2)如果是单一性的操作可以直接使用单一命令进行操作也是可以的!

ansible工作原理

Alt text

  • 用户
  1. 单一用户通过写playbook来达到目的是最快捷省事的
  • 公有云/私有云:API调用

  • 如果想通过这样的方式去管理被控端,就需要有开发的协助,可能开发一个web页面在上面点点点就可以实现控制被控端的任务!

  • CMDB
    配置管理数据库使用API调用

  • 被控端/操作对象

  1. host主机:linux/windows
  2. networking网络设备:服务器/路由器/交换机 : 使用的不多
  • 注意事项
  1. 执行ansible的主机一般称为主控端/中控/master或堡垒机
  2. 主控端Python版本需要2.6或以上
  3. 被控端Python版本小于2.4需要安装Python-smplejson
  4. 被控端如何开启SELinux需要安装libselinux-python
  5. windows不能作为主控端

ansible主要组成部分

  1. ansible playbook : 任务剧本(任务集),编排定义ansible任务集的配置文件,由ansible顺序依次执行,通常是json格式的YML文件

  2. inventory : ansible管理主机的清单/etc/ansible/hosts

  3. modules : ansible执行命令的功能模块,多数为内置核心模块,也可以自定义

  4. plugins : 模块功能的补充,如连接类型插件,循环插件,变量插件,锅炉插件等,该功能不常使用

  5. API : 供第三方程序调用的应用程序编程接口

  6. ansible : 组合inventor/API/modules/plugins,可以理解为是ansible命令工具,其为核心执行工具

ansible的安装方式

rpm包安装

#先安装阿里云的EPEL源
#RHEL7
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo 

#RHEL6
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo 

#yum安装ansible
yum install -y ansible

编译安装

# 安装依赖
yum -y install python-jinja2 PyYAML python-paramiko python-babel python-crypto

# 解压ansible压缩包
tar xf ansible-1.5.4.tar.gz

# 进入目录
cd ansible-1.5.4

# 执行编译安装命令
python setup.py build
python setup.py install

# 创建目录
mkdir -p /etc/ansible

# 拷贝目录文件到新创建的目录
cp -r examples/* /etc/ansible

Git方式

直接从git上ansible软件直接下载下来,直接使用脚本安装即可

git clone git://github.com/ansible/ansible.git --recursive
cd ./ansible
source ./hacking/env-setup

pip安装

pips是安装Python包管理器,类似yum

yum install python-pip python-devel

yum install gcc glibc-deve zibl-devel rpm-bulid openssl-devel

pip insyall --upgrade pip

pip install ansible --upgrade

确认ansible安装成功

# 查看ansible版本
ansible --version

# 程序二进制命令路径
ls -l /usr/bin/ansible
lrwxrwxrwx 1 root root 20 Apr 21 19:58 /usr/bin/ansible -> /usr/bin/ansible-2.7
#这里用到了软连接的方式,指向真正的版本目录,这就是之前提到的灰度发布的手法,如果新版本不行可以直接指向旧版本!

Alt text

ansible相关文件

  • 配置文件

/etc/ansible/ansible.cfg  主配置文件,配置ansible工作特性
/etc/ansible/hosts 主机清单
/etc/ansible/roles 存放角色的目录

什么是(roles)角色?

角色就是很多playbook的集合,相当于一个项目,想要编写成一个完整的大型项目,单一的playbook是难以完成的,所以把很多的playbook集合到一起,就叫角色

  • 程序

/usr/bin/ansible 主程序,临时命令执行工具
/usr/bin/ansible-doc 查看配置文档,模块功能查看工具
/usr/bin/ansible-galaxy 下载/上传优秀代码或roles模块的官网平台
/usr/bin/ansible-playbook 定制自动化任务,编排剧本工具/usr/bin/ansible-pull 远程执行命令的工具
/usr/bin/ansible-vault 文件加密工具,在剧本中如果含有隐私信息可以考虑使用此工具加密
/usr/bin/ansible-console 基于console界面与用户交互的执行工具

猜你喜欢

转载自blog.csdn.net/qq_34672033/article/details/89677540