一、Ansible部署和常用模块

本文介绍了Ansible的基本概念、架构、部署过程及常用的自动化模块,包括清单文件、配置文件、剧本文件的使用,详细讲解了ping、hostname、file、copy、fetch等模块的用途和参数。
摘要由CSDN通过智能技术生成

Ansible

一、简介

Ansible的作用和特点

  • Ansible是一款开源自动化平台
    • 是一种简单的自动化语言,能够在Ansible Playbook中完美地描述IT应用基础架构
    • 也是一个自动化引擎,可运行Ansible Playbook
    • ansible是基于模块工作的,本身没有批量部署的能力,真正具有批量部署能力的是ansible运行的模块,ansible只是提供一个框架
  • 特点
    • yaml语言编写palybook,简单易懂,可以通过playbook(剧本)进行多个任务的编排
    • 可以配置管理、工作流自动化还能管理网络设备
    • 无需代理,Anisble通过OpenSSH或WinRM连接所管理的主机并运行任务。后续会详细介绍
    • 基于ssh工作
    • 可实现多级指挥
    • 具有幂等性,一种操作重复多次执行结果相同
      • 幂等性:任意次执行所产生的影响均与一次执行的影响相同
      • command,shell,script默认不带幂等性
  • ansible的优缺点(考试不考,面试可能会问)
    • 优点:跨平台支持、人类可读的自动化、完美描述应用、轻松管理版本控制、支持动态清单、编排可与其他系统轻松集成
    • 缺点:红帽的书怎么可能说ansible的缺点…哈哈哈哈

Ansible的架构

Ansible的基本架构

Ansible的基本概念
  • 核心组件

    • ansbile:核心程序

    • modules:包括ansible自带的核心模块以及自定义模块

    • plugins:完成模块功能的补充,包括连接插件,邮箱插件

    • palybooks:剧本,定义ansbile多任务配置文件,由ansible自动执行

    • inventory:定义ansbile管理的主机清单

    • connection plugins:负责和被监控端实现通信

  • Ansible分为控制端(控制节点)和被控制端(受管主机)

    • 控制端:必须是Linux 考试环境为workstation
    • 被控端:可以是linux、windows、路由器等 考试环境为server[a-d]

执行过程(面试高频)

  • 加载自己的配置文件,默认为/etc/ansible/ansible.cfg

  • 加载自己对应的模块文件

  • 通过ansible将模块或命令生成对应的临时py文件,并将该文件传输至远程服务器

  • 对应执行用户的家目录的.ansible/tmp/xx.py文件

  • 给文件+x执行权限

  • 执行并将返回结果,删除临时py文件,sleep 0 退出

  • 注:

    • 重点明确:Ansible围绕一种无代理架构构建,在控制节点上安装Anisble,且客户端不需要任何特殊的代理软件

二、Ansible部署

  • 考试环境默认已经配置好了yum源,直接yum install。
  • 自己虚拟机安装需要去配源
yum install -y ansible

Ansible的三大文件

1、清单文件

  • 定义Ansible将要管理的一批主机

  • 分类

    • 静态清单:人为的写入被管理端的IP或主机名称(INI样式,每行一个)

    • 动态清单:通过脚本文件解析出来的IP或主机名称

  • 默认主机清单配置文件为/etc/ansible/hosts,可在该文件中进行服务器分组/主机分组

    • all主机组含有清单中明确列出的每一个主机
    • ungrouped主机组含有清单中明确列出、但不属于任何其他组的每一个主机
  • 查看/配置当前主机清单的位置

    • ansible --version查看当前配置文件的位置,过滤/配置inventory字段,默认为/etc/ansible/hosts
    [student@workstation ~]$ ansible --version|grep .cfg
      config file = /etc/ansible/ansible.cfg
    [student@workstation ansible]$ grep 'inventory' /etc/ansible/ansible.cfg
    #inventory      = /etc/ansible/hosts
    ...
    
  • 定义嵌套组

    • Ansible主机清单可以包含由多个主机组构成的组
      • 可以通过创建后缀为:children的主机组名称来实现
    # vim /etc/ansible/hosts
    [dev]
    servera
    
    [test]
    serverb
    
    [webservers:children]
    dev
    test
    # 此时webservers组既包含了dev组内的主机,也包含了test组内的主机
    
  • 定义范围组

    • 语法:[START:END]范围匹配从START到END的所有值
    • 例:
    192.168.[1:4].[0:255] #此例包含192.169.1.0到192.168.7.255中所有的IP地址
    server[01:20] # 此例包含server01到server20,注意此例不匹配server1-server9
    [a:c].com # 此例包含a.com到c.com
    
  • 验证清单

    • ansible 主机名/组名 --list-host,-i指定清单文件
    • 因为student没有直接修改默认清单的权限,所以自己新建一个
    [student@workstation ~]$ mkdir ansible
    [student@workstation ~]$ cd ansible/
    [student@workstation ansible]$ vim  inventory
    
    [student@workstation ansible]$ ansible -i inventory webservers --list-host
      hosts (2):
        servera
        serverb
    
  • 补充

    • 其他静态清单的写法
    定义端口
    10.1.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值