自动化运维之ansible

大纲:

     一、ansible是什么

     二、ansible的特点

     三、ansible的任务执行模式和执行流程

     四、ansible的安装

     五、ansible常用命令

     六、ansible常用模块

     七、关于ansible playbook

     八、角色定制roles

环境介绍:接近年关,某公司计划做一次大型促销活动,要求各业务组队年底大促做准备,其中运维部要求所有业务容量进行三倍的扩容,并搭建出多套环境可以供开发和测试人员做测试,运维部门经理要求其工作人员尽快实现。那么,如何实现呢?此时,ansible能担此大任。

一、ansible是什么

一种新出现的自动化运维工具,基于python开发,集合了众多运维工具(puppet、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。
ansible是基于 paramiko 开发的,并且基于模块化工作,本身没有批量部署的能力。真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架。ansible不需要在远程主机上安装client/agents,因为它们是基于ssh来和远程主机通讯的。ansible目前已经已经被红帽官方收购,是自动化运维工具中大家认可度最高的,并且上手容易,学习简单。是每位运维工程师必须掌握的技能之一。
二、ansible的特点

1、部署简单,只需在主控端部署ansible环境,被控端无需做任何操作
2、默认使用SSh协议对设备进行管理
3、有大量常规运维操作模块,可实现日常绝大部分操作
4、配置简单、功能强大、扩展性强
5、支持API及自定义模块,可通过python轻松扩展
6、通过playbooks来定制强大的配置、状态管理
7、轻量级,无需在客户端安装agent,更新时,只需在操作机上进行一次更新即可
8、提供一个功能强大、操作性强的web管理界面和REST API接口------AWX平台

三、ansible的任务执行模式和执行流程

ansible系统由控制主机对被管节点的操作方式可分为两类,即ad-hoc和 playbook
       ad-hoc模式,使用单个模块,相当于bash中的一句话shell
       playbook模式是ansible主要管理方式,通过多个task集合完成一类功能,简单理解为通过组合多条ad-hoc操作的配置文件

ansible在运行时,首先读取ansible.cfg中的配置,根据规则获取lnventory中的管理主机列表,并行的在这些主机中执行配置的任务,最后等待返回的结果

四、ansible的安装

一般两种方式:yum安装和pip程序安装
1、使用yum安装
yum install epel-release -y
yum install ansible –y
2、 使用pip(python的包管理模块)安装
pip install ansible
如果没pip,需先安装pip.yum可直接安装:
yum install python-pip
pip install ansible

五、ansible常用命令

-a MODULE_ARGS, --args=MODULE_ARGS     模块的参数,如果执行默认COMMAND的模块,即是命令参数

-C, --check      只是测试一下会改变什么内容,不会真正去执行;相反,试图预测一些可能发生的变化

-f FORKS, --forks=FORKS    并行任务数,NUM被指定为一个整数,默认是5

-i INVENTORY, --inventory-file=INVENTORY    指定库存主机文件的路径,默认为/etc/ansible/hosts

-m MODULE_NAME, --module-name=MODULE_NAME    执行模块的名字,默认使用 command 模块,所以如果是只执行单一命令可以不用 -m参数

-R SU_USER, --su-user=SU_USER    指定SU的用户,默认是root用户

-T TIMEOUT, --timeout=TIMEOUT     指定SSH默认超时时间, 默认是10S

-v, --verbose verbose mode (-vvv for more, -vvvv to enable)    详细信息

六、ansible常用模块

1、主机连通性测试

2、command:在远程主机上执行命令

3、shell模块在远程主机上调用shell解释器运行命令,支持shell各种功能,例如管道

4、copy:复制文件到远程主机,也可以修改权限等等

5、file:设置文件属性

6、fetch:从远程主机获取文件到本地

7、cron:管理cron计划任务

8、yum:安装软件

9、service:服务程序管理

10、user:用户模块管理

11、group:用户组模块,添加或删除组

12、script:在指定节点上运行服务端的脚本

13、setup:用于收集被管理主机上的信息,例如CPU、内存等

七、关于ansible playbook

1、ansible playbook简介

playbook是ansible用于配置、部署和管理被控节点的剧本。通过playbook的详细描述,执行其中的一系列tasks,可以让远程主机达到预期的状态。

2、ansible playbook格式

YMAL格式是类似于JSON的文件格式

文件的第一行应该以“-”(三个连字符)开始。表明YMAL文件的开始

在同一行中,#之后的内容表示注释

YMAL中的列表元素以“-”开头后紧跟着一个空格,后面为元素内容

同一个列表中的元素应该保持相同的缩进

hosts、remote_user、tasks等对象的表示方法都是键值中间以“:”分隔表示,“:”后面还要增加一个空格

3、playbook的核心元素

hosts:主机

tasks:任务列表

variables:变量

templates:包含了模板语法的文本文件

handlers:由特定条件触发的任务

4、模板templates

文本文件:嵌套有脚本

使用模板操作远程主机的nginx服务,具体过程如下:

①使用setup模块查询出CPU的信息

②修改配置文件

[[email protected] tmp]# vim nginx.conf.j2                        (CP到tmp的配置文件,记得备份)
worker_processes {{ ansible_processor_vcpus }};    (调用上面setup查到的CPU信息)
listen {{ nginxport }};                                                   (指定端口,调用下面playbook里面指定的端口)
[[email protected] ansible]# vim nginx.yml                        (向/tmp下的配置文件里传参数)

③执行剧本

[[email protected] ansible]# ansible-playbook nginx.yml -t reloadnginx

④在IP为172.17.19.117和107被监控端查看一下,8888端口打开

在117和107端打开nginx.conf文件,可以看出传进来的参数就是playbook里面定义的,模板使用成功。
  3 worker_processes 1;
37 server {
38 listen 8888;

八、角色定制roles

应用环境:对于以上所有的方式有个弊端就是无法实现复用,比如说在同时部署web、mariabd、haproxy时或不同服务器组合不同的应用就需要些多个yml文件,难以实现灵活的调用。而roles用于层次性、结构化的组织playbook,能够根据层次型结构自动装载变量文件、tasks以及handlers等。

1、roles目录结构

files/:存储由copy或script等模块调用的文件;
tasks/:此目录中至少应该有一个名为main.yml的文件,用于定义各task;其它的文件需要由main.yml进行“包含”调用;
handlers/:此目录中至少应该有一个名为main.yml的文件,用于定义各handler;其它的文件需要由
main.yml进行“包含”调用;
vars/:此目录中至少应该有一个名为main.yml的文件,用于定义各variable;其它的文件需要由
main.yml进行“包含”调用;
templates/:存储由template模块调用的模板文本;
meta/:此目录中至少应该有一个名为main.yml的文件,定义当前角色的特殊设定及其依赖关系;其它的文件需要由main.yml进行“包含”调用;
default/:此目录中至少应该有一个名为main.yml的文件,用于设定默认变量;

2、具体角色定制过程如下:

① 在roles目录下生成对应的目录结构
mkdir -pv ./{nginx,mysql,httpd}/{files,templates,vars,tasks,handlers,meta,default}
② 定义/tasks/main.yml的配置文件如下

[[email protected] nginx]# cp /tmp/nginx.conf.j2 templates/    (对照上面的template模板路径)
[[email protected] nginx]# cd files/
[[email protected] files]# lftp 172.17.0.1
lftp 172.17.0.1:/pub/Sources/7.x86_64/nginx> get nginx-1.10.2-1.el7.ngx.x86_64.rpm   (copy的相对路径是基于file的路径,所以要把包下载到file目录下)

③ 修改边变量文件

[[email protected] nginx]# vim vars/main.yml

nginxport: 9999

④ 定义handlers文件

[[email protected] nginx]# vim handlers/main.yml

- name: new conf to reload
            service: name=nginx state=restarted

⑤ 定义/etc/ansible/roles.yml的playbook文件

[[email protected] ansible]# vim roles.yml

---
    - hosts: web
             remote_user: root
      roles:
    - nginx

⑥ 执行角色文件

⑦ 在被管理节点117和107查看nginx服务,9999端口打开

介绍结束,谢谢浏览~

时间: 2024-07-31 02:41:56

自动化运维之ansible的相关文章

自动化运维工具Ansible详细部署 (转载)

自动化运维工具Ansible详细部署 标签:ansible 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://sofar.blog.51cto.com/353572/1579894 ========================================================================================== 一.基础介绍 ===========================

自动化运维之Ansible安装与模块应用

自动化运维之Ansible Ansible概述 由于互联网快速展导致产品更新换代速度逐渐加快,运维人员每天都要进行大量维护操作,人就按照传统方式进行维护会使工作效率低下,只是,部署自动化运维就尽可能安全,高校的完成工作 一般会把自动化运维工具划分为两类 (一)需要使用代理工具的,也就是基于专用的Agent程序完成管理功能,如:Puppet.Func.Zabbix等(二)不需要配置代理工具,可以直接基于SSH服务来管理完成,如:Ansible,Fabric等 下面介绍几款空能和类似的自动化运维工具

自动化运维工具——ansible详解案例分享

自动化运维工具--ansible详解案例分享(一)目录ansible 简介ansible 是什么?ansible 特点ansible 架构图ansible 任务执行ansible 任务执行模式ansible 执行流程ansible 命令执行过程ansible 配置详解ansible 安装方式使用 pip(python的包管理模块)安装使用 yum 安装ansible 程序结构ansible配置文件查找顺序ansible配置文件ansuble主机清单ansible 常用命令ansible 命令集a

3.1 自动化运维工具ansible

自动化运维工具ansible 运维自动化发展历程及技术应用 Iaas 基础设施即服务Pass 平台服务SaaS 软件即服务 云计算工程师核心职能 Linux运维工程师职能划分 自动化动维应用场景 文件传输命令执行 应用部署配置管理任务流编排 企业实际应用场景分析 1 Dev开发环境 使用者:程序员功能:程序员开发软件,测试BUG的环境管理者:程序员123 2 测试环境 使用者:QA测试工程师功能:测试经过Dev环境测试通过的软件的功能管理者:运维说明:测试环境往往有多套,测试环境满足测试功能即可

自动化运维工具-Ansible基础

目录 自动化运维工具-Ansible基础 自动化运维的含义 Ansible 基础及安装 Ansible的架构 Ansible的执行流程 ansible配置文件 ansible Inventory(主机清单文件) Ansible ad-hoc ansible常用模块 实战 自动化运维工具-Ansible基础 自动化运维的含义 1.手动运维时代 2.自动化运维时代 3.自动化运维工具给运维带来的好处 Ansible 基础及安装 1.什么是Ansible Ansible是一个自动化统一配置管理工具 2

自动化运维工具Ansible详细部署

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://sofar.blog.51cto.com/353572/1579894 ========================================================================================== 一.基础介绍 =========================================================

自动化运维工具Ansible实战(一)安装部署

1,基本介绍 ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet.cfengine.chef.func.fabric)的优点,实现了批量系统配置.批量程序部署.批量运行命令等功能. ansible是基于模块工作的,本身没有批量部署的能力.真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架.主要包括: (1).连接插件connection plugins:负责和被监控端实现通信: (2).host inventory:指定操作

自动化运维之 Ansible——安装配置

Ansible相对于其他自动化运维工具(saltstack.puppet)的优势: Ansible是一款轻量级框架,基于各个模块实现各种功能,模块可根据需要自行开发 agentless 无需安装agent,可根据具体情况建立一台操作机 支持playbook剧本 python语言开发,做运维的都比较容易接受的语言 其他等等,一百度一大堆,自行百度吧~ 环境说明: 系统环境centos6.8 操作机 192.168.1.121 客户机 192.168.1.122 基本安装 安装gcc,用于编译pyt

自动化运维工具Ansible之Playbooks循环语句

在使用ansible做自动化运维的时候,免不了的要重复执行某些操作,如:添加几个用户,创建几个MySQL用户并为之赋予权限,操作某个目录下所有文件等等.好在playbooks支持循环语句,可以使得某些需求很容易而且很规范的实现. with_items是playbooks中最基本也是最常用的循环语句. - name: add several users   user: name={{ item }} state=present groups=wheel   with_items:      - t

自动化运维工具Ansible架构部署应用及playbooks简单应用

在日常服务器运维中,我们经常要配置相同的服务器配置,前期我们都是一台一台的去配置,这种方法操作主要应对于服务器数量不多且配置简单的情况还可以继续这样操作,如果我们后期维护几百服务器或者几万服务器呢? 我应该怎样去快速配置服务器呢?如果需要手动的每台服务器进行安装配置将会给运维人员带来许多繁琐而又重复的工作同时也增加服务器配置的异常,至此自动化运维工具解决我们的瓶颈---Ansible工具. Ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet.cfeng