zoukankan      html  css  js  c++  java
  • Ansible基本原理

    一、ansible介绍与安装使用

    1、ansible介绍与特点

    ansible是一款自动化运维工具,基于Python开发,可以实现批量系统设置、批量程序部署、批量执行命令等功能。特点如下:

    Ansible完全基于Python开发,要求python的版本为2.6以上。

    Ansible丰富的内置模块,近600个模块完全满足日常功能所需

    Ansible默认通过SSH协议管理机器,因此,客户端无需任何配置,管理端配置好后即可使用。

    Ansible目前属于Redhat公司,最新版本为Ansible2.5。

    2、ansible的应用环境

    应用代码自动化部署

    系统管理配置自动化

    支持持续交付自动化

    支持云计算,大数据平台环境

    批量任务执行可以写成脚本,不用分发到远程就可以执行

    支持非root用户管理操作,支持sudo

    使用python编写,维护更简单。

    3、ansible的安装

    这里的安装环境是centos7.4版本操作系统,首先需要安装第三方epel源:

    [root@ACA8D5EF ~]# yum install epel-release

    Ansible依赖python环境,同时已经是RHEL/Centos的一个组成部分,因此推荐通过yum安装ansible:

    [root@ACA8D5EF ~]# yum install ansible

    4、ansible的命令套件

    安装完ansible后,ansible一共提供了七个指令,分别是:ansible、ansible-doc、ansible-galaxy、ansible-lint、ansible-playbook、ansible-pull、ansible-vault 。

    (1)、ansible

    ansible是指令核心部分,其主要用于执行ad-hoc命令,即单条命令。默认后面需要跟主机和选项部分,默认不指定模块时,使用的是command模块。

    (2)、ansible-doc

    该指令用于查看模块信息,常用参数有两个-l 和-s ,具体如下:

    例如,列出所有已安装的模块

    # ansible-doc -l

    查看具体某模块的用法,这里如查看command模块

    # ansible-doc -s command

    (3)、ansible-galaxy

    ansible-galaxy 指令用于方便的从https://galaxy.ansible.com/ 站点下载第三方扩展模块,可以形象的理解其类似于centos下的yum、python下的pip或easy_install。

    (4)、ansible-lint

    ansible-lint是对playbook的语法进行检查的一个工具。用法是ansible-lint playbook.yml。

    (5)、ansible-playbook

    该指令是使用最多的指令,其通过读取playbook 文件后,执行相应的动作,这个后面会做为一个重点来讲。

    (6)、ansible-pull

    该指令使用需要谈到ansible的另一种模式:pull 模式,这和平常经常用的push模式刚好相反,其适用于以下场景:

    有数量巨大的机器需要配置,即使使用非常高的线程还是要花费很多时间

    要在一个没有网络连接的机器上运行Anisble,比如在启动之后安装。

    (7)、ansible-vault

    ansible-vault主要应用于配置文件中含有敏感信息,又不希望被人看到,vault可以帮你加密/解密这个配置文件,属高级用法。主要对于playbooks里比如涉及到配置密码或其他变量时,可以通过该指令加密,这样我们通过cat看到的是一个密码串类的文件,编辑的时候需要输入事先设定的密码才能打开。这种playbook文件在执行时,需要加上–ask-vault-pass参数,同样需要输入密码后才能正常执行。

    二、ansible架构与运行原理

    1、ansible基本架构

    核心:ansible

    核心模块(Core Modules):是ansible自带的模块,Ansible模块资源分发到远程节点使其执行特定任务或匹配一个特定的状态。

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

    插件(Plugins):完成较小型的任务。辅助模块来完成某个功能。

    剧本(Playbooks):ansible的任务配置文件,将多个任务定义在剧本中,由ansible自动执行。例如安装一个nginx服务,那么我们可以把这拆分为几个任务放到一个playbook中。例如:第一步需要下载nginx的安装包。第二步我可能考虑需要做的就是将我事先写好的nginx.conf的配置文件下发的目标服务器上。第三步,我们需要把服务启动起来。第四步,我们可能需要检查端口是否正常开启。那么这些步骤可以通过playbook来进行整合,然后通过inventory来下发到想要执行剧本的主机上。

    连接插件(ConnectiorPlugins):ansible基于连接插件连接到各个主机上,默认是基于SSH连接到目标机器上执行操作的,但是它还支持其他的连接方法,所以需要有连接插件,管理端支持local 、ssh、paramiko三种方式连接被管理端。

    主机清单(Host Inventory):定义ansible管理主机的策略,一般小型环境下只需要在host文件中写入主机的IP地址即可,但是到了中大型环境就需要使用静态inventory或者动态主机清单来生所需要执行的目标主机。

    2、ansible任务执行模式

    ansible执行自动化任务,分为两种执行模式:

    1、ad-hoc:单个模块,单条命令的批量执行,称之为ad-hoc

    2、playbook:这个可以理解成为面向对象的编程,就像上面举例那样可以把多个想要执行的任务放到一个playbook中,当然多个任务在事物逻辑上最好是有上下联系的。通过多个任务可以完成一个总体的目标,这就是playbook。

    3、ansible的任务执行流程

  • 相关阅读:
    svn diff color
    svn 教程
    第40章 CAN—通讯实验—零死角玩转STM32-F429系列
    第39章 ETH—Lwip以太网通信—零死角玩转STM32-F429系列
    第38章 I2S—音频播放与录音输入—零死角玩转STM32-F429系列
    第37章 基于SD卡的FatFs文件系统—零死角玩转STM32-F429系列
    第36章 SDIO—SD卡读写测试—零死角玩转STM32-F429系列
    第35章 WWDG—窗口看门狗—零死角玩转STM32-F429系列
    第33章 TIM—电容按键检测—零死角玩转STM32-F429系列
    第34章 IWDG—独立看门狗—零死角玩转STM32-F429系列
  • 原文地址:https://www.cnblogs.com/yxf-/p/11493963.html
Copyright © 2011-2022 走看看