• 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

  • 相关阅读:
    Unity The Method Signature Matching Rule
    Unity The Property Matching Rule
    Unity The Type Matching Rule
    Unity The Custom Attribute Matching Rule
    Unity The Member Name Matching Rule
    Unity No Policies
    Unity The Return Type Matching Rule
    Unity The Parameter Type Matching Rule
    Unity The Namespace Matching Rule
    关于TSQL递归查询的(转)
  • 原文地址:https://www.cnblogs.com/zzzwqh/p/13067775.html
Copyright © 2020-2023  润新知