运维自动化之 ANSIBLE 详解(重点:Ansible安装方法、程序文件、模块和变量详解)

本文详细介绍了Ansible自动化运维工具,包括其特性、工作原理、安装方法、主要组件和相关文件。重点讲解了Ansible的安装,如epel源、编译、Git和pip方式,并探讨了Ansible的配置文件、主机清单和模块。此外,还阐述了Ansible的命令使用,如ansible-doc和ansible-playbook,以及各种模块的用途,如Command、Shell和Service。最后,讨论了Playbook的概念和YAML语法,展示了如何通过Playbook实现更高级的任务编排。
摘要由CSDN通过智能技术生成

运维自动化之 ANSIBLE 详解

相关概念介绍

1、常用自动化运维工具

  • Ansible — python,Agentless,中小型应用环境
  • Saltstack — python,一般需部署agent,执行效率更高
  • Puppet — ruby, 功能强大,配置复杂,重型,适合大型环境
  • Fabric — python,agentless
  • Chef — ruby,国内应用少
  • Cfengine
  • func

2、Ansible 特性

  • 模块化 — 调用特定的模块,完成特定任务
  • 关键模块 — 有Paramiko,PyYAML,Jinja2(模板语言)三个关键模块
  • 支持自定义模块
  • 基于Python语言实现
  • 部署简单,基于python和SSH(默认已安装),agentless(客户端无须部署额外程序)
  • 安全 — 基于OpenSSH
  • 支持playbook编排任务
  • 幂等性 — 一个任务执行1遍和执行n遍效果一样,不因重复执行带来意外情况
  • 无需代理不依赖PKI(无需ssl)
  • 可使用任何编程语言写模块
  • YAML格式 — 编排任务,支持丰富的数据结构
  • 较强大的多层解决方案

3、Ansible 架构

在这里插入图片描述

4、Ansible 工作原理

在这里插入图片描述

5、Ansible 主要组成部分

  • ANSIBLE PLAYBOOKS:任务剧本(任务集),编排定义Ansible任务集的配置文件,由Ansible顺序依次执行,通常是JSON格式的YML文件

  • INVENTORY:Ansible管理主机的清单/etc/anaible/hosts

  • MODULES:Ansible执行命令的功能模块,多数为内置核心模块,也可自定义

  • PLUGINS:模块功能的补充,如连接类型插件、循环插件、变量插件、过滤插件等,该功能不常用

  • API:供第三方程序调用的应用程序编程接口

  • ANSIBLE:组合INVENTORY、API、MODULES、PLUGINS的绿框,可以理解为是ansible命令工具,其为核心执行工具

  • Ansible命令执行来源:

    USER,普通用户,即SYSTEM ADMINISTRATOR
    CMDB(配置管理数据库) API 调用
    PUBLIC/PRIVATE CLOUD API 调用
    USER-> Ansible Playbook -> Ansibile
    
  • 利用ansible实现管理的方式:

    # 1、Ad-Hoc 即 ansible 命令,主要用于临时命令使用场景
    # 2、Ansible-playbook 主要用于长期规划好的,大型项目的场景,需要有前提的规划
    
  • Ansible-playbook(剧本)执行过程:

    # 1、将已有编排好的任务集写入 Ansible-Playbook
    # 2、通过 ansible-playbook 命令分拆任务集至逐条 ansible 命令,按预定规则逐条执行
    
  • Ansible主要操作对象:

    # 1HOSTS 主机
    # 2NETWORKING 网络设备
    
  • 注意事项:

    # 1、执行ansible的主机一般称为主控端,中控,master或堡垒机
    # 2、主控端Python版本需要2.6或以上
    # 3、被控端Python版本小于2.4需要安装python-simplejson
    # 4、被控端如开启SELinux需要安装libselinux-python
    # 5、windows不能做为主控端
    

ANSIBLE 安装和相关文件

1、Ansible 安装方式

1.1 epel 源安装 rpm 包

# yum install ansible

1.2 编译安装

# yum -y install python-jinja2 PyYAML python-paramiko python-babel python-crypto
# tar xf ansible-1.5.4.tar.gz
# cd ansible-1.5.4
# python setup.py build
# python setup.py install
# mkdir /etc/ansible
# cp -r examples/*  /etc/ansible

1.3 Git 方式

# git clone git://github.com/ansible/ansible.git --recursive
# cd ./ansible
# source ./hacking/env-setup

1.4 pip 安装

pip 是安装 Python 包的管理器,类似 yum

# yum install python-pip python-devel
# yum install gcc glibc-devel zibl-devel rpm-bulid openssl-devel
# pip install --upgrade pip
# pip install ansible --upgrade

1.5 确认是否安装 Ansible 的命令

[root@Tang ~]# ansible --version          
ansible 2.8.5
  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)]

2、Ansible 相关文件

2.1 配置文件

# /etc/ansible/ansible.cfg    # 主配置文件,配置 ansible 工作特性
# /etc/ansible/hosts          # 主机清单
# /etc/ansible/roles/         # 存放角色的目录

2.2 程序文件

# /usr/bin/ansible            # 主程序,临时命令执行工具
# /usr/bin/ansible-doc        # 查看配置文档,模块功能查看工具
# /usr/bin/ansible-galaxy     # 下载/上传优秀代码或Roles模块的官网平台
# /usr/bin/ansible-playbook   # 定制自动化任务,编排剧本工具/usr/bin/ansible-pull 远程执行命令的工具
# /usr/bin/ansible-vault      # 文件加密工具
# /usr/bin/ansible-console    # 基于Console界面与用户交互的执行工具

2.3 主机清单 inventory

  • ansible 的主要功用在于批量主机操作,为了便捷地使用其中的部分主机,可以在 inventory file 中将其分组命名
  • 默认的 inventory file 为 /etc/ansible/hosts
  • inventory file 可以有多个,且也可以通过 Dynamic Inventory 来动态生成

2.4 /etc/ansible/hosts 文件格式

  • inventory 文件遵循 INI 文件风格,中括号中的字符为组名。可以将同一个主机同时归并到多个不同的组中;此外,当如若目标主机使用了非默认的SSH端口,还可以在主机名称之后使用冒号加端口号来标明

    ntp.neotang.com
    
    [webservers]
    www1.neotang.com:2222
    www2.neotang.com
    
    [dbservers]
    db1.neotang.com
    db2.neotang.com
    db3.neotang.com
    
  • 如果主机名称遵循相似的命名模式,还可以使用列表的方式标识各主机,中括号内的数字或字母会自动展开

    [websrvs]
    www[01:100].example.com
    
    [dbsrvs]
    db-[a:f].example.com
    
  • 示例:

    [root@Tang ~]# cat /etc/ansible/hosts | grep testhosts -A 1
    [testhosts]
    www.neotang[1:5].com
    
    [root@Tang ~]# ansible testhosts --list-hosts
      hosts (5):
        www.neotang1.com
        www.neotang2.com
        www.neotang3.com
        www.neotang4.com
        www.neotang5.com
    

2.5 ansible 配置文件

  • Ansible 配置文件 /etc/ansible/ansible.cfg (一般保持默认)
  • Ansible 配置文件的默认配置项说明
[defaults]
#inventory = /etc/ansible/hosts     # 主机列表配置文件
#library = /usr/share/my_modules/   # 库文件存放目录
#remote_tmp = $HOME/.ansible/tmp    # 临时py命令文件存放在远程主机目录
#local_tmp = $HOME/.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值