zoukankan      html  css  js  c++  java
  • Ansible 自动化部署

    参考 BLOG:
    Ansible 系列模块
    Ansible 部署与使用
    Ansible Book

    Ansible

    Ansible 是一个自动化统一配置管理工具,自动化主要体现在 Ansible 集成了丰富模块以及功能组件,可以通过一个命令完成一系列的操作,进而能减少重复性的工作和维护成本,可以提高工作效率。

    Ansible 可跨平台和系统,譬如使用 Ansible 既可以同时管理 CentOS6 和 CentOS7,也可以同时管理 Linux 和 Windows 系统 。

    Ansible 构成

    Connection Plugins:连接插件,用于连接主机 用来连接被管理端
    Core Modules:核心模块,连接主机实现操作,它依赖于具体的模块来做具体的事情
    Custom Modules:自定义模块,根据自己的需求编写具体的模块
    Plugins:插件,完成模块功能的补充
    PlayBooks:剧本,Ansible 的配置文件,将多个任务定义在剧本中,由 Ansible 自动执行
    Host Inventory:主机清单,定义 Ansible 需要操作主机的范围
    HostN:受控端主机

    Ansible 执行流程

    ①.Ansible 读取 Playbook 剧本,剧本中会记录对哪些主机执行哪些任务;
    ②.首先 Ansible 通过 Inventory 找到要执行的主机,然后调用具体的模块;
    ③.其次 Ansible 会通过连接插件连接对应的主机并推送对应的任务列表;
    ④.最后被管理的主机会将 Ansible 发送过来的任务解析为 本地Shell命令 执行

    Ansible 任务执行模式

    Ansible 系统由主控节点,对被控节点的操作方式可分为两类,即 Ad-Hoc 和 PlayBook:

    ①.Ad-Hoc 模式(点对点模式):使用单个模块,支持批量执行单条命令。Ad-Hoc 命令是一种可以快速输入的命令,而且不需要保存起来的命令。就相当于 Bash 中的一句 shell命令。
    ②.Playbook 模式(剧本模式):Ansible 主要管理方式,Playbook 通过多个 Task集合 完成一类功能,如 应用服务器安装部署、数据库服务器的批量备份等等,可以把 Playbook 理解为通过组合多条 Ad-Hoc 操作的配置文件 。

    Ansible Ad-Hoc

    所谓Ad-Hoc,简而言之是"临时命令",英文中作为形容词有"特别的,临时"的含义,Ad-Hoc 只是官方对 Ansible 命令的一种称谓 。

    从功能上讲,Ad-Hoc 是相对于 Playbook 而言的,Ansible 提供两种完成任务方式:一种是 Ad-Hoc 命令集,即命令 ansible,另一种就是 Playbook 了,即命令 ansible-playbook。前者更注重于解决一些简单的或者平时工作中临时遇到的任务,相当于 Linux 系统命令行下的 Shell命令,后者更适合与解决复杂或需固化下来的任务,相当于 Linux 系统的 Shell Scripts 。

    Ansible Ad-Hoc 的使用:

    # Installaiton
    [root@m01 ~]# yum install -y ansible
    
    # Syntax:ansible <host-pattern> [options]
    --version   # Ansible 版本信息
    -v          # 显示详细信息
    -i          # 主机清单文件路径,默认是在 /etc/ansible/hosts
    -m          # 使用的模块名称,默认使用 command 模块
    -a          # 使用的模块参数,模块的具体动作
    -k          # 提示输入SSH密码,而不使用基于SSH的密钥认证
    -C          # 模拟执行测试,但不会真的执行
    -T          # 执行命令的超时
    
    # Version
    [root@m01 ~]# ansible --version
    ansible 2.9.9
      config file = /etc/ansible/ansible.cfg
      configured module search path = [u'/root/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
      ansible python module location = /usr/lib/python2.7/site-packages/ansible
      executable location = /usr/bin/ansible
      python version = 2.7.5 (default, Oct 30 2018, 23:45:53) [GCC 4.8.5 20150623 (Red Hat 4.8.5-36)]
    

    Ansible PlayBook

    PlayBook 与 Ad-Hoc 相比,是一种完全不同的运用方式,
    PlayBook 是由一个或多个 Play 组成的列表,Play 的主要功能在于将事先归并为一组的主机装扮成事先通过 Ansible 中的 Task 定义好的角色。从根本上来讲,所谓的 Task 无非是调用一个或者多个 Module 。将多个 Play 组织在一个 PlayBook 中,即可以让它们联合起来按事先编排的机制完成某一任务 。

    Ansible PlayBook 采用 YAML 语法,它简单地实现了 JSON 格式的事件描述;YAML 是 "YAML Ain't a Markup Language"(YAML不是一种标记语言)的递归缩写。在开发的这种语言时,YAML 的意思其实是:"Yet Another Markup Language"(仍是一种标记语言),但为了强调这种语言以数据做为中心,而不是以标记语言为重点,而用反向缩略语重命名 。

    YAML 配置文件中的核心元素:

    Hosts:执行的远程主机列表
    Tasks:任务,由模板定义的操作列表
    Varible:变量,内置变量或自定义变量在 playbook 中调用
    Templates:模板,即使用模板语法的文件
    Handlers:触发器 ,当某条件满足时,触发执行的操作,和 notity 结合使用
    Roles:角色
    Tags:标签,指定某条任务执行,用于选择运行 playbook 文件中的部分配置

    推荐Blog:
    Ansible 大全
    Ansible 执行流程
    Ansible

  • 相关阅读:
    MMT
    dappradar 分布式应用雷达
    dac去中心化自治公司
    如何立即手动执行BW周期性处理链
    BW之数据源 增量管理DELTA (比较详细的)
    abap问题:call transformation出来的xml字符串不能被proxy识别
    SHIFT 去掉前导0,SHIFT语法
    浅谈SAP实施过程中关键用户的作用
    什么是UAT测试?
    FI 基础财务知识
  • 原文地址:https://www.cnblogs.com/zzzwqh/p/13067775.html
Copyright © 2011-2022 走看看