ansible

Ansible是一种基于Python的自动化运维工具,利用SSH进行通信,无需目标主机安装代理。它提供模块化架构,支持Playbooks进行任务编排,具备幂等性和Ad-hoc命令功能,易于部署且高度可扩展。此外,Ansible的Roles功能有助于管理和组织复杂配置。
摘要由CSDN通过智能技术生成

简介

        Ansible是一种自动化运维工具,基于Python开发,用于自动化部署、配置管理和应用程序的编排。它提供了一种轻量级、可扩展的方式来管理和配置多个计算机系统。Ansible使用简单的声明性语法,并基于SSH协议进行通信,使得在大规模的基础设施中执行任务变得简单和高效。

以下是Ansible的一些主要特性:

  1. 模块化架构:Ansible提供了丰富的模块库,用于执行各种类型的任务,如文件操作、软件包管理、服务管理等。这些模块具有统一的接口和命令,可以方便地组合和调用,满足各种不同场景的需求。
  2. 有Parmiko,PyYAML,Jinjia2(模板语言)三个关键模块
  3. 支持自定义模块,用户根据自己的需求通过Python、Shell脚本等编程语言编写自定义模块,用于与特定的API集成,或者编写一个自定义模块用于在目标主机上执行一些特定的操作。
  4. 部署简单,基于Python和SSH(默认以安装)
  5. 安全,Ansible通过SSH协议与目标主机进行通信,无需在目标系统上安装任何额外的代理程序或客户端
  6. 支持playbook编排任务。通过Playbooks,可以定义一套操作步骤,以及要应用到哪些主机上。
  7. 幂等性:一个任务执行一遍和执行N遍效果一样,不会因为重复执行带来意外错误
  8. 可以使用任何的编程语言写模块
  9. YAML格式,编排任务,支持丰富的数据结构
  10. 较强大的多层解决方案(多层概念:多个playbook的集合)
  • Ad-hoc命令层:Ad-hoc命令是一种临时执行的命令,用于在目标主机或主机组上执行简单的任务。这些命令可以直接在命令行中使用ansible命令进行执行,无需编写剧本。Ad-hoc命令适用于一次性、快速的任务执行,如查看主机信息、执行单个命令等。

  • Playbooks层:Playbooks是一种声明性的配置文件,用于定义一系列任务和配置操作。通过Playbooks,可以按照特定的顺序来执行任务,并根据条件语句和循环结构来控制任务的执行流程。Playbooks支持变量、模块、剧本引用等功能,使得配置更加灵活和可复用。Playbooks适用于较为复杂的自动化配置和管理需求。

  • Roles层:Role是对Playbooks的更高级组织和抽象。一个Role可以包含多个Playbooks以及相关的任务、变量和文件等。通过将任务和配置逻辑按照角色进行组织,可以实现更好的代码复用和可维护性。Roles适用于大规模和复杂的自动化配置和管理场景。

工作原理

Ansible工作原理:一般从Host invertory中获取所需要处理的主机列表,然后前往目的主机上执行任务。采取Playbook剧本任务时,会根据剧本中一系列任务生成一个临时的脚本文件,然后发送到目的主机,脚本文件在远程主机上执行完成后返回结果,然后删除本地临时文件。

架构图

架构图说明:

1

2

3

4

5

6

7

8

9

10

public/private cloud:   公有云私有云

Users:                 管理用户(使用Ansible的人员)

Ansible:               Ansible软件

Host invertory:        被管理的主机清单

Playbooks:             Ansible编排工具

Core Modules:          Ansbile 核心模块

Custom Modules:         Ansible 自定义模块

Plugins:            其他插件(通过插件来记录日志)

Connection Plugins:    连接插件(使用此插件连接被控端)

Host1..HostN:          被控端主机

 插件和模块的区别:模块是用来实现任务的,增强ansible平台自己的功能就需要使用插件(loggin插件记录日志,email插件发送邮件),其中最常用的是:连接插件(Connectionr Plugins)ansible基于连接插件连接到各个主机上,虽然默认情况下ansible使用ssh连接到各个主机上,但它还支持其它的连接方法。

工作机制

 

  • CMDB:                  配置管理数据库(使用Ansible的一种方式)
  • USERS:                 管理用户(使用Ansible的人员)
  • ANSIBLE PLAYBOOK:      Ansible任务剧本(任务集)
  • INVERTORY:             被管理的主机清单
  • API:                   供第三方程序调用的应用程序编程接口
  • MODULES:                AnsIble使用的模块(内置模块,自定义模块)
  • PLUGINS:       Ansbile使用的插件(模块功能的补充方式,这里包括很多的插件)
  • HOSTS:                  被控端主机
  • NETWORKING:             被控端网络设备(交换机,路由器等)

配置文件

ansible.cfg内容

[default]
#被控端主机清单文件
inventory      = /etc/ansible/hosts  
#指定ansible搜索模块位置,如果需要自定ansible模块,需要放到 library 所指定的目录下                       
library        = /usr/share/my_modules/
#临时文件远程主机存放目录                    
remote_tmp     = ~/.ansible/tmp
#临时文件本地主机存放目录                            
local_tmp      = ~/.ansible/tmp 
#ansible在执行工作时进程数量                                   
forks          = 5 
#默认轮询间隔时间,单位秒                                         
poll_interval  = 15
#被控端默认执行sudo命令所切换的用户                                         
sudo_user      = root  
#每次执行sudo命令时是否询问sudo到目标用户的密码                                     
ask_sudo_pass = True                                                                             
#远程连接被控端的ssh端口                                     
remote_port    = 22 

ansible.cfg获取位置

在执行 Ansible Ad-hoc 命令时,Ansible会查找 $ANSIBLE_CONFIG 环境变量指定的 Ansible 配置文件。如果该环境变量未设置,则默认搜索以下位置的 ansible.cfg 文件:

  1. 当前工作目录:Ansible会首先在当前执行命令的工作目录中查找 ansible.cfg 文件。如果您在执行命令时位于具有 ansible.cfg 文件的目录中,Ansible将使用该文件。

  2. 用户家目录:如果当前工作目录中不存在 ansible.cfg 文件,Ansible会在用户的家目录中查找 .ansible.cfg 文件(注意文件名以点开始)。此文件位于用户的家目录下,如 ~/.ansible.cfg%USERPROFILE%/.ansible.cfg

  3. 系统路径:如果以上两个位置都没有找到 ansible.cfg 文件,Ansible会在系统默认的配置路径中搜索。这些路径通常是 /etc/ansible/ansible.cfg/usr/local/etc/ansible/ansible.cfg(路径可能因操作系统和Ansible安装方式而有所不同)。

请注意,当使用Ad-hoc命令时,您也可以使用 -c <配置文件路径> 参数显式地指定要使用的 ansible.cfg 文件。例如:

ansible all -m ping -c /path/to/ansible.cfg

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值