使用 Ansible 节省时间,无需编写任何代码

正在学习 Ansible?不要急于下载 playbook。它的 ad hoc 模式可能就是你所需要的。
548 位读者喜欢这篇文章。
The Opensource.com preview: April

Opensource.com

当大多数人开始学习 Ansible 时,他们首先从 Ansible Galaxy 下载一个预先构建的 playbook。诚然,这是一个以最小的努力完成复杂任务的绝佳资源。而且,虽然我通常很喜欢通过剖析他人的工作来学习,但在 Ansible 的情况下,从角色和 playbook 入手可能是一个很大的错误。Ansible 的 ad hoc 模式非常强大,它可能是某些人所需要的一切。

例如,假设您需要在实验室的一组 Linux 工作站上安装 Firefox。您可以通过几种方式来完成这项任务。您可以逐个 SSH 到每个工作站并键入

sudo apt-get update

sudo apt-get install firefox (type "y" when asked about dependencies)

exit

您可以通过添加几个分号将其做成一行命令

sudo apt-get update; sudo apt-get -y install firefox; exit

但这仍然需要登录到每台计算机。因此,假设您设置了 SSH 密钥,并且 sudo 不需要密码,您可以编写一个快速 Bash 脚本来在整个实验室中执行此操作。注意:这就是我工作了 20 年的方式。Bash 脚本就像系统管理员世界的瑞士军刀。

#!/bin/bash

for i in {1..50};

do

ssh user@192.168.1.$1 "sudo apt-get update; sudo apt-get -y install firefox"

done

这种方法有很多缺点:没有错误检查。没有成功和失败的日志。只有当计算机具有增量 IP 地址时,此示例才能工作。将这种“黑客”式的解决方案与使用 Ansible 完成相同任务进行比较

ansible cadlab -b -m apt -a "update_cache=yes name=firefox state=latest"

唯一需要做的初步工作是根据主机名或 IP 地址简单地定义“cadlab”组包含哪些内容。而该组定义只是一个包含这些 IP 地址列表的文本文件!

别误会,Ansible playbook 非常强大,它们可以完成令人惊叹的事情。如果您需要创建配置文件、基于条件语句执行命令或构建多步骤安装过程,那么 playbook 是完美的工具。但对于多个服务器上的日常操作,我发现自己经常使用 Ansible。ad hoc 模式通常被 playbook 和角色所掩盖,但它是一个强大的工具,可以在几分钟内完全实现。因此,如果您对 Ansible 感兴趣,请不要跳过它提供的 ad hoc 功能。大多数时候,它们是我使用的全部!

标签
User profile image.
自 2009 年以来,Shawn Powers 一直是 CBT Nuggets (www.cbtnuggets.com) 的 IT 培训师,专门研究 Linux、Chef 以及为更大的网络集成多个平台。他最近在 2016 年 12 月发布了一个高级在线 Linux 认证培训课程 (LPIC-2)。

1 条评论

很棒的文章。我曾经是一名系统管理员,这对我来说是一个很大的帮助。

© . All rights reserved.