ansible实战应用系列教程2:ansible介绍

ansible 介绍

​ Ansible是一款运维自动化工具,其主要功能是帮助运维实现IT工作的自动化、降低人为操作失误、提高业务自动化率、提升运维工作效率,常用于软件部署自动化、配置自动化、管理自动化、系统化系统任务、持续集成、零宕机平滑升级等。它提供丰富的内置模块(如 acl、command、shell、cron、yum、copy、file、user 等)和开放的API接口,同时任何遵循GPL协议的企业或个人都可以随意修改和发布自己的版本。
Ansible,a simple automation language,能够通过Ansible Playbooks描述IT应用基础架构。它也是automation engine,执行Ansible Playbooks。
Ansible可以管理强大的自动化任务,适用于不同的workflow和Environment。同时,Ansible新用户也可以很快的上手,并运用到生产环境。在OpenStack、Openshift、Ceph、Kubernetes都可使用yaml编写playbooks。

ansible特点

Simple:Ansible Playbooks提供了人类可读的自动化。这意味着playbook是自动化工具,人们也很容易阅读、理解和更改。编写它们不需要特殊的编码技能。playbook按顺序执行任务。playbook设计的简单性使得每个团队都可以使用它。这使得新人能够快速地提高工作效率。
Powerful:您可以使用Ansible部署应用程序,配置管理,工作流自动化和网络自动化。Ansible可用于编排整个应用程序生命周期。
Agentless: Ansible是围绕无代理架构构建的。通常,Ansible使用OpenSSH或WinRM连接到它管理的主机,并运行任务,通常(但不总是)通过将称为Ansible模块的小程序推出到这些主机。这些程序用于将系统置于特定的期望状态。当Ansible完成它的任务时,任何被推入的模块都会被删除。
几乎可以立即开始使用Ansible,因为不需要批准特殊代理的使用,然后部署到托管主机。由于不需要代理,也不需要额外的自定义安全基础设施,所以Ansible比其他替代方案更高效、更安全。

Ansible的优势:

cross platform support: Ansible提供了对Linux、Windows、UNIX和网络设备在物理、虚拟、云和容器环境中的无代理支持。
Human-readable automation:Ansible playbook以YAML文本文件的形式编写,易于阅读,并有助于确保每个人都理解他们要做的事情。
Perfect description of applications:Ansible playbook可以做出每一个更改,您的应用程序环境的每个方面都可以描述和记录
Easy to manage in version control: playbook和project是纯文本。它们可以被视为源代码,并放置在现有的SVN版本控制系统中。
Support for dynamic inventories: Ansible管理的机器列表可以从外部源动态更新,以便捕获所有托管服务器的正确当前列表,无论基础设施或位置如何。
Orchestration that integrates easily with other systems: HP SA, Puppet, Jenkins, CentOS您的环境中存在的其他系统可以利用并集成到您的可执行工作流中。

ansible架构

​ 在Ansible架构中有两种类型的机器:控制节点control node和托管主机managed node。Ansible是在控制节点上安装并运行的,这台机器也有Ansible项目文件的副本。控制节点可以是管理员的笔记本电脑,由多个管理员共享的系统,或者运行一个可运行ansible tower的服务器。
托管主机managed node需要罗列在inventory 中,inventory还将这些主机组织成组,以便进行集体管理。inventory可以在静态文本文件中定义,也可以由从外部源获取信息的脚本动态确定。
创建playbook可替代复杂的脚本,以确保一台主机或一组主机处于特定状态。一个playbook可以在一个或多个主机上执行一系列任务,顺序由playbook指定。playbook以YAML格式表示。playbook中包含一个或多个play。
Task作为带有特定参数的模块、一小段代码(用Python、PowerShell或其他语言编写)。每个模块本质上都是工具包中的一个工具。Ansible ships有数百个有用的模块,可以执行各种各样的自动化任务。它们可以操作系统文件、安装软件或进行API调用。
在task中使用时,模块通常确保机器的某些特定内容处于特定状态。例如,使用一个模块的任务可能会确保文件存在并具有特定的权限和内容,而使用不同模块的任务可能会确保挂载特定的文件系统。如果系统不在该状态,则任务应将其置于该状态。如果系统已经处于这种状态,它应该什么也不做。如果一个任务失败了,Ansible的默认行为是中止脚本的其余的主机有一个失败。task、play和playbook是幂等的。这意味着您应该能够在相同的主机上多次安全地运行剧本,当您的系统处于正确的状态时,playbook在运行时不应该做任何更改。
Ansible也可使用插件。可以添加到Ansible中扩展和调整,以适应新的用途和平台。例如jinjia2插件。可操作的架构是无主体的。通常,当管理员运行一个ansible playbook或ad hoc时,控制节点使用SSH(默认情况下)或WinRM连接到托管主机。这意味着客户端不需要在托管主机上安装一个特定于ansibble agent,也不需要允许一些非标准端口的特殊网络流量。
AnsibleTower由Red Hat是一个企业框架,帮助您控制,安全,并管理您的可自动化的规模。您可以使用它来控制谁有权在哪个主机上运行剧本,共享SSH凭据的使用,而不允许用户传输或查看其内容,记录所有可执行的作业,以及管理库存,等等。它提供了基于web的用户界面和RESTful API。它不是Ansible的核心部分,但一个独立的产品,帮助您更有效地使用Ansible与团队或在大范围。

在这里插入图片描述

ansible的思想:

Complexity Kills Productivity

简单的,就是更好的。Ansible设计:简单使用和自动化部署。

Optimize For Readability

Ansible自动化语言是围绕简单的、声明性的、基于文本的文件构建的,这些文件对于人类来说是很容易阅读的。书写正确,可操作的剧本可以清楚地记录工作流程自动化。

Think Declaratively

Ansible是一个预期状态引擎。它按照您期望系统所处的状态来描述IT部署,从而解决如何自动化IT部署的问题。Ansible的目标是把你的系统放在期望的状态,只做必要的改变。试图像脚本语言一样对待Ansible,不是正确的方法。

ansible使用场景:

Configuration Management:

对Ansible来说,集中配置文件管理和部署是一个常见的用例,也是许多高级用户首次引入Ansible自动化平台的原因。

Application Deployment:

当您使用Ansible定义应用程序,并使用Ansible Tower管理部署时,teams可以有效地管理从开发到生产的整个应用程序生命周期

Provisioning:

必须在系统上部署或安装应用程序。Ansible和AnsibleTower可以帮助简化系统配置的过程,无论你是启动PXE裸金属服务器或虚拟机,还是从模板创建虚拟机或云实例。

Continuous Delivery:

创建Cl/CD管道需要许多团队的协调和购买。Ansible playbook可以在应用程序的整个生命周期中正确地部署(和管理)应用程序。

Security and Compliance:

在ansible中定义安全策略,可以将安全策略的扫描和补救集成到其他自动化流程中。它是部署的所有东西的组成部分。

Orchestration:

配置本身不能定义您的环境。您需要定义多个配置如何交互,并确保不同的部分可以作为一个整体进行管理。

ansible安装

控制节点Control Nodes:

Ansible易于安装。Ansible软件只需要安装在Ansible运行的控制节点(或多个节点)上。由Ansible管理的主机不需要安装Ansible。此安装涉及的步骤相对较少,需求也很少。

控制节点应该是Linux或UNIX系统。不支持将Microsoft Windows作为控制节点,尽管Windows系统可以被管理为主机

需要在控制节点上安装Python 39。

[root@taijitao-server ~]# yum install -y ansible

关于如何获取安装,并获得更新的Ansible,以及其他操作系统和Linux发行版的官方说明,可在Ansible网站https://www.ansible.com/get-started。

本课程中taijitao-server为控制节点。

管理节点Managed Hosts

Ansible的好处之一是托管主机不需要安装特殊的代理。可操作控制节点使用标准网络协议连接到托管主机,以确保系统处于指定状态。

托管主机可能有一些需求,这取决于控制节点如何连接到托管主机,以及它将在托管主机上运行哪些模块。

Linux和UNIX托管主机需要安装Python 3才能使大多数模块工作。对于Centos-stream-8,安装python39包。

如果在托管主机上启用了SELinux,那么在使用与任何拷贝、文件或模板函数相关的模块之前,还需要安装libselinux-python包。(注意,如果安装了其他Python组件,可以使用yum或package之类的可执行模块来确保也安装了这个包。)

有些模块可能有它们自己的额外需求。例如,dnf模块可以用于在当前Fedora系统上安装包,它需要python-dnf包。

本课程中taijitao-node1、taijitao-node2为管理节点。

实战:

1、安装ansible

[root@taijitao-server ~]# yum install -y ansible

2、查看ansible版本

[root@taijitao-server ~]# ansible --version
ansible [core 2.13.5]

3、创建一个新的路径并切换到新路径

[root@taijitao-server ~]# mkdir /ansibledemo
[root@taijitao-server ~]# cd /ansibledemo/

4、在当前路径下创建一个inventory文件,包含以下内容:

[root@taijitao-server ansibledemo]# vim inventory
[dev]
taijitao-node1.example.com
taijitao-node2.example.com

5、在当前路径下执行ansible命令:

[root@taijitao-server ansibledemo]# ansible dev -i inventory --list-hosts
  hosts (2):
    taijitao-node1.example.com
    taijitao-node2.example.com

此时会在终端里输出在inventory文件中输入的主机名称。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

太极淘

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值