金鱼哥戏说RHCE认证:第一章 介绍Ansible

简介: 第一章 介绍Ansible
🎹 个人简介:大家好,我是 金鱼哥,CSDN运维领域新星创作者,华为云·云享专家,阿里云社区·专家博主
📚个人资质: CCNA、HCNP、CSNA(网络分析师),软考初级、中级网络工程师、RHCSA、RHCE、RHCA、RHCI、ITIL、PMP😜
💬格言:努力不一定成功,但要想成功就必须努力🔥

🎈支持我:可点赞👍、可收藏⭐️、可留言📝


第一章 介绍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(贡献者)
Ansible 1387 17716 5356 1428
Saltstack 530 6678 3002 1520
Puppet 463 4044 1678 425
Chef 383 4333 1806 464
Fabric 379 7334 1235 116

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

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

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


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

---
## 💡总结

RHCE认证作为基础认证的升级,需要大家在RHCSA的基础上再进行学习,因此,涉及的基础内容需要大家好好进行学习并巩固。有良好的基础才能更上一层楼。
好好加油,可以噶🤪。

以上就是【金鱼哥】对 第一章 介绍Ansible 的简述和讲解。希望能对看到此文章的小伙伴有所帮助。

💾 红帽认证专栏系列:
RHCSA专栏: 戏说 RHCSA 认证
RHCE专栏: 戏说 RHCE 认证
此文章收录在RHCA专栏: RHCA 回忆录

如果这篇【文章】有帮助到你,希望可以给【金鱼哥】点个赞👍,创作不易,相比官方的陈述,我更喜欢用【通俗易懂】的文笔去讲解每一个知识点。

如果有对【运维技术】感兴趣,也欢迎关注❤️❤️❤️ 【金鱼哥】❤️❤️❤️,我将会给你带来巨大的【收获与惊喜】💕💕!

目录
相关文章
|
运维 自然语言处理 Shell
金鱼哥戏说RHCE认证:部署Ansible---运行临时命令
第二章 部署Ansible---运行临时命令
235 0
金鱼哥戏说RHCE认证:部署Ansible---运行临时命令
|
运维 Linux 项目管理
金鱼哥戏说RHCE认证:部署Ansible--管理ansible配置文件
第二章 部署Ansible--管理ansible配置文件
242 0
金鱼哥戏说RHCE认证:部署Ansible--管理ansible配置文件
|
运维 项目管理
金鱼哥戏说RHCE认证:部署ansible--构建ansible主机清单
第二章 部署ansible--构建ansible主机清单
157 0
金鱼哥戏说RHCE认证:部署ansible--构建ansible主机清单
|
存储 运维 Linux
金鱼哥RHCA回忆录:DO447使用Ansible Tower创建简单的CI/CD流水线
第十三章 使用Ansible Tower创建简单的CI/CD流水线
334 0
金鱼哥RHCA回忆录:DO447使用Ansible Tower创建简单的CI/CD流水线
|
存储 XML JSON
金鱼哥RHCA回忆录:DO447使用Ansible与API通信--使用Ansible剧本与Api交互
第十一章 使用Ansible与API通信--使用Ansible剧本与Api交互
212 0
金鱼哥RHCA回忆录:DO447使用Ansible与API通信--使用Ansible剧本与Api交互
|
存储 Web App开发 JSON
金鱼哥RHCA回忆录:DO447使用Ansible与API通信--使用Ansible Tower API启动作业
第十一章 使用Ansible与API通信--使用Ansible Tower API启动作业
382 0
金鱼哥RHCA回忆录:DO447使用Ansible与API通信--使用Ansible Tower API启动作业
|
存储 运维 Linux
金鱼哥RHCA回忆录:DO447管理项目和开展作业--为ansible剧本创建一个项目
第九章 管理项目和开展作业--为ansible剧本创建一个项目
146 0
金鱼哥RHCA回忆录:DO447管理项目和开展作业--为ansible剧本创建一个项目
|
1月前
|
运维 应用服务中间件 Linux
自动化运维的利器:Ansible在配置管理中的应用
【10月更文挑战第39天】本文旨在通过深入浅出的方式,向读者展示如何利用Ansible这一强大的自动化工具来优化日常的运维工作。我们将从基础概念讲起,逐步深入到实战操作,不仅涵盖Ansible的核心功能,还会分享一些高级技巧和最佳实践。无论你是初学者还是有经验的运维人员,这篇文章都会为你提供有价值的信息,帮助你提升工作效率。
|
20天前
|
运维 Ubuntu 应用服务中间件
自动化运维之路:使用Ansible进行服务器管理
在现代IT基础设施中,自动化运维已成为提高效率和可靠性的关键。本文将引导您通过使用Ansible这一强大的自动化工具来简化日常的服务器管理任务。我们将一起探索如何配置Ansible、编写Playbook以及执行自动化任务,旨在为读者提供一条清晰的路径,从而步入自动化运维的世界。
|
18天前
|
运维 网络安全 Python
自动化运维:使用Ansible实现批量服务器配置
在快速迭代的IT环境中,高效、可靠的服务器管理变得至关重要。本文将介绍如何使用Ansible这一强大的自动化工具,来简化和加速批量服务器配置过程。我们将从基础开始,逐步深入到更复杂的应用场景,确保即使是新手也能跟上节奏。文章将不包含代码示例,而是通过清晰的步骤和逻辑结构,引导读者理解自动化运维的核心概念及其在实际操作中的应用。