IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> 金鱼哥说Ansible:第一章 介绍Ansible -> 正文阅读

[系统运维]金鱼哥说Ansible:第一章 介绍Ansible

第一章 介绍Ansible

1.1 一切皆自动化

“运维的未来是,让研发人员能够借助工具、自动化和流程,并且让他们能够在运维干预极少的情况下部署和运营服务,从而实现自助服务。每个角色都应该努力使工作实现自动化。”——《运维的未来》

1.2 前言

公司的服务器越来越多, 维护一些简单的事情都会变得很繁琐。用shell脚本来管理少量服务器效率还行, 服务器多了之后, shell脚本无法实现高效率运维。这种情况下,我们需要引入自动化运维工具, 对多台服务器实现高效运维。

场景:

假设我要去1000台服务上做一个操作(如nginx服务器修改配置文件里的某一个参数), 下面两种方法缺点明显:

  1. 传统的方法, 手工去装:ssh到每台服务器上去手动操作。

    缺点:

    • 效率太低。
    • 容器出错。
  2. 写个shell脚本来做。

    缺点:

    • 管理的机器平台不一致,脚本可能不具备通用性。

    • 传密码麻烦(在非免密登录的环境下, 需要expect来传密码)

    • 效率较低,循环1000次也需要一个一个的完成,如果用&符放到后台执行,则会产生1000个进程。

如果出了错误,需要自己手工去收集信息然后解决,脚本更新了以后又要重新下载一遍去执行,不方便而且效率低。

有没有一种工具,能把任务批量给主机去执行,然后还能收集执行过程中的具体信息?

1.3 常见的开源自动化运维工具比较

  1. ansible

    基于python语言,Agentless,中小型应用环境。简单快捷,被管理端不需要启服务。直接走ssh协议,需要验证所以机器多的话速度会较慢。

  2. puppet

    基于ruby语言,功能强大,成熟稳定,配置复杂、重型,适合于大型架构。

  3. saltstack

    基于python语言,一般需部署agent,执行效率更高;相对简单,大并发能力比ansible要好, 需要维护被管理端的服务。如果服务断开,连接就会出问题。

  4. Fabric:python,agentless。

  5. Chef:ruby,国内应用少。

同类自动化工具GitHub关注程度(2016-07-10)

自动化运维工具Watch(关注)Star(点赞)Fork(复制)Contributors(贡献者)
Ansible13871771653561428
Saltstack530667830021520
Puppet46340441678425
Chef38343331806464
Fabric37973341235116

ansible集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。

1.4 自动化运维应用场景

  • 文件传输

  • 应用部署

  • 配置管理

  • 任务流编排

自动化运维: 将日常IT运维中大量的重复性工作,小到简单的日常检查、配置变更和软件安装,大到整个变更流程的组织调度,由过去的手工执行转为自动化操作,从而减少乃至消除运维中的延迟,实现“零延时”的IT运维。

1.5 Ansible发展史

作者:Michael DeHaan,也是Cobbler 与 Func 的开发者。

ansible 的名称来自科幻小说《安德的游戏》中跨越时空的即时通信工具,使用它可以在相距数光年的

距离,远程实时控制前线的舰队战斗。

2012-03-09,发布0.0.1版,2015-10-17,Red Hat 宣布1.5亿美元收购。

官网: https://www.ansible.com/

官方文档: https://docs.ansible.com/

1.6 Ansible 是什么

Ansible 简单的说是一个配置管理系统(configuration management system)。你只需要可以使用 ssh 访问你的服务器或设备就行。它也不同于其他工具,因为它使用推送的方式,而不是像 puppet 等 那样使用拉取安装agent的方式。你可以将代码部署到任意数量的服务器上!

1.7 Ansible特性

  • 模块化:调用特定的模块,完成特定任务

  • 有Paramiko,PyYAML,Jinja2(模板语言)三个关键模块

  • 支持自定义模块

  • 基于Python语言实现

  • 部署简单,基于python和SSH(默认已安装),agentless

  • 安全,基于OpenSSH

  • 支持playbook编排任务

  • 幂等性:一个任务执行1遍和执行n遍效果一样,不因重复执行带来意外情况

  • 无需代理不依赖PKI(无需ssl)

  • 可使用任何编程语言写模块

  • YAML格式,编排任务,支持丰富的数据结构

  • 较强大的多层解决方案

1.8 Ansible架构

image-20211101231526902

1Ansibleansible核心
2Modules包括 Ansible 自带的核心模块及自定义模块
3Plugins完成模块功能的补充,包括连接插件、邮件插件等
4Playbooks剧本,定义Ansible多任务配置文件,由Ansible 自动执行
5Inventory定义Ansible 管理主机的清单清单
6hosts被管理节点

Ansible主要组成部分功能说明

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

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

MODULES: Ansible执行命令的功能模块,多数为内置的核心模块,也可自定义,ansible-doc –l 可查看模块

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

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

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

1.9 安装Ansible

现时最新的版本为 4,但若是红帽系列使用者,建议使用 2.9的版本。

image-20211102133443557

实验过程

此操作在 RHEL 或 CentOS上执行。

yum安装ansible需要配置好 epel源 或 可用的 Ansible Engine仓库

# yum install epel-release
可配置国内EPEL源

安装ansible

# yum -y install ansible

确保安装成功并查看版本

# ansible --version
ansible 2.9.23
  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, Aug  7 2019, 00:51:29) [GCC 4.8.5 20150623 (Red Hat 4.8.5-39)]

注意事项

  • 执行ansible的主机一般称为主控端,中控,master

  • ansible2.9主控端Python版本需要2.7或3.5以上

  • ansible2.9被控端Python版本需要2.6或3.5以上

  • 被控端Python版本小于2.4需要安装python-simplejson

  • 被控端如开启SELinux需要安装libselinux-python

  • windows不能做为主控端

官网地址:

https://docs.ansible.com/ansible/2.9/installation_guide/intro_installation.html#installing-ansible-on-rhel-centos-or-fedora

可查看不同版本的情况和python版本的最低要求,也可查看各平台上的安装方法

image-20211102133039189

身为一名技术人员,要学会如何在官网查看资料以帮助自己了解这门服务的部署与使用。

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-12-02 17:10:50  更:2021-12-02 17:12:32 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 2:35:57-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码