`
aigo
  • 浏览: 2635814 次
  • 性别: Icon_minigender_1
  • 来自: 宜昌
社区版块
存档分类
最新评论

Ansible 快速上手[配置管理工具]

 
阅读更多

原文:http://www.linuxidc.com/Linux/2013-11/92255.htm

 

最近纠结于在 PuppetChefSaltStackAnsible 等一干配置管理工具中如何选择。考虑到一旦开始没有选好,以后更改又是一堆麻烦事,所以就稍微有些慎重。

Puppet 和 SaltStack 我曾用过,但不是十分符合预期,所以先行排除。至于 Chef,虽然老早就听说过,但却一直没有找到机会尝试。翻了翻文档,Chef 跟 Puppet 及 SaltStack 也是一样采用服务端/客户端模式,对于在现有一定数量的机器上部署仍然有些麻烦。最后落单到 Ansible 上。经过对 Ansible 的把玩,我感觉 Ansible 于我比较相投。我喜欢 Ansible 的方面包括:

  • 充分利用现有设施。使用 Ansible 无需安装服务端和客户端,只要 SSH 即可。这意味着,任何一台装有 Ansible 的机器都可以成为强大的管理端。我觉得,这种去中心化的思路显得更为灵活。可能有人会担心 SSH 的效率,Ansible 的并行执行及加速模式或许可以打消你的顾虑。
  • 使用简单,快速上手相当容易。我在用 Puppet 之前,就没少花时间钻研它。想想吧,我们使用这类自动化管理工具不就是想把自己从重复的、复杂的事情中解放出来么?为了简化一件事,而沉入另一件复杂的事,是不是有些不划算?从我的体验来看,Ansible 上手十分快,用 Ad-Hoc 可以应付简单的管理任务,麻烦点的也可以定义 Playbook 文件来搞定。
  • 采用人类易读的格式。Ansible 的主机定义文件使用 INI 格式,支持分组,能够指定模式;此外也能动态生成,这对管理云主机应当很有用。而 Playbook 则是 YAML 格式,我觉得它比 Puppet 的 DSL 要易读易写多了。
  • 能够使用你熟悉的语言来编写模块。虽然 Ansible 是使用 Python 开发的,但它不会将你限制到某种具体的编程语言,Bash、Python、Perl、Ruby 等等都可以,你擅长什么就用什么。

一言以蔽之,Ansible 背后的简单化哲学深得我心。这也比较符合我选择软件的一贯原则。

可能还有人会比较关心目前 Ansible 都有谁在用。毕竟,榜样的力量是无穷。Puppet 不正是因为 Google 在用而吸引了不少眼球么?据我所知,当前使用 Ansible 较为知名的用户包括 Fedora、Rackspace、Evernote 等等。

安装 Ansible

Ansible 能够安装到 Linux、BSD、Mac OS X 等平台,Python 版本最低要求为 2.6。常用 Linux 发行一般可以通过其自带的包管理器安装 Ansible

yum install ansible     # RHEL/CentOS/Fedora,需要配置 EPEL
apt-get install ansible # Debian/Ubuntu
emerge -avt ansible     # Gentoo/Funtoo

如果你在所用 Linux 发行版的包仓库中找不到 Ansible,那么也可以通过 pip 来安装 Ansible,同时也会安装 paramiko、PyYAML、jinja2 等 Python 依赖库。

pip install ansible

准备 Inventory

Inventory 文件用来定义你要管理的主机。其默认位置在 /etc/ansible/hosts ,如果不保存在默认位置,也可通过 -i 选项指定。

被管理的机器可以通过其 IP 或域名指定。未分组的机器需保留在 hosts 的顶部,分组可以使用 [] 指定,如:

[web]
linuxtoy.org

同时,分组也能嵌套:

[vps:children]
web
db

此外,也可以通过数字和字母模式来指定一系列连续主机,如:

[1:3].linuxtoy.org # 等价于 1.linuxtoy.org、2.linuxtoy.org、3.linuxtoy.org
[a:c].linuxtoy.org # 等价于 a.linuxtoy.org、b.linuxtoy.org、c.linuxtoy.org

小试牛刀

现在,我们执行以下命令来看看 Ansible 是否能正常工作:

ansible -i hosts all -m ping -u www

该命令选项的作用分别为:

  • -i:指定 inventory 文件,使用当前目录下的 hosts
  • all:针对 hosts 定义的所有主机执行,这里也可以指定组名或模式
  • -m:指定所用的模块,我们使用 Ansible 内置的 ping 模块来检查能否正常管理远端机器
  • -u:指定远端机器的用户

如果返回如下结果:

linuxtoy.org | success >> {
    "changed": false,
    "ping": "pong"
}

则说明一切正常。

下面我们再看看远端机器的 uptime:

ansible vps -a 'uptime'

这将输出:

linuxtoy.org | success | rc=0 >>
11:23:16 up 177 days, 21:19,  0 users,  load average: 0.55, 0.45, 0.39

此处我们省略了 -m,Ansible 默认使用 command 模块;-a 指定模块的参数,即执行 uptime 命令。

分享到:
评论

相关推荐

    Ansible运维管理平台部署、维护与调优.pdf

    本章将详细介绍如何安装和配置Ansible,以便读者能够快速上手并在自己的环境中部署Ansible。此外,还将介绍如何进行客户端间的互信配置,以及确保Ansible服务端与客户端之间的连通性测试。 ##### 2.2 Ansible软件...

    Ansible-ansible-etcd.zip

    Ansible 是一个开源自动化工具,广泛应用于IT领域的配置管理、应用程序部署和任务自动化。它的设计哲学是简单易用,使得管理员能够快速上手并实现高效运维。在“Ansible-ansible-etcd.zip”这个压缩包中,我们关注的...

    Ansible Tower 快速设置指南 v3.8.1-26

    Ansible Tower 快速设置指南 v3.8.1-26 在本文档中,我们将详细讲解 Ansible ...Ansible Tower 是一个功能强大且灵活的自动化部署环境管理工具,可以帮助用户快速上手自动化部署环境的管理,并提高团队的协作和沟通。

    Ansible-ansible-pycharm.zip

    Ansible 是一个开源自动化工具,广泛应用于IT领域的配置管理、应用程序部署和任务自动化。它的设计哲学是简单易用,使得管理员能够快速上手并实现高效自动化。在与PyCharm结合使用时,Ansible可以进一步提升开发环境...

    ansible教程

    整体来看,Ansible教程通过丰富的模块介绍、详细的YAML语法讲解、以及实际应用场景的示例,帮助读者快速上手并能够实际应用Ansible进行自动化任务的管理和执行。通过本教程的学习,读者将能够熟悉Ansible的基本操作...

    Ansible-Ansible-VIM-IDE.zip

    Ansible 是一个开源自动化工具,广泛应用于IT领域的配置管理、应用程序部署和任务自动化。它的设计哲学是简单易用,使得管理员能够快速上手并高效地完成工作。在本压缩包 "Ansible-Ansible-VIM-IDE.zip" 中,包含了...

    Ansible-grafana.zip

    Ansible 是一个开源自动化工具,广泛应用于IT领域的配置管理、应用程序部署和任务自动化。它的设计哲学是简单易用,使得管理员能够快速上手并高效地管理复杂环境。在这个"Ansible-grafana.zip"压缩包中,我们关注的...

    Ansible-environment.zip

    Ansible是一款开源自动化工具,广泛应用于IT环境的配置管理、应用程序部署和任务自动化。它的设计哲学是简单易用,使得管理员能够快速上手并实现高效运维。在"Ansible-environment.zip"这个压缩包中,我们可以看到一...

    Ansible-OpsManage.zip

    Ansible 是一个开源自动化工具,广泛应用于IT领域的配置管理、应用程序部署和任务自动化。它的设计哲学是简单易用,使得管理员能够快速上手并高效地管理复杂的企业级基础设施。在这个"Ansible-OpsManage.zip"压缩包...

    奔跑吧Ansible

    Ansible是一款强大的开源自动化工具,广泛应用于配置管理、应用部署、任务执行等领域,因其简洁的语法和无代理的特性,受到了众多IT专业人士的喜爱。 Ansible的核心理念是“简单”,它通过YAML语言定义的Playbooks...

    Chef vs Puppet vs Ansible vs SaltStack

    **Ansible** 是一种无代理的配置管理工具,依赖SSH进行通信,这使得部署简单且快速。Ansible使用YAML语法编写Playbooks,易于理解和编写,适合运维人员和开发人员。Ansible的模块化设计和强大的社区支持使得其功能...

    Ansible-ansible-modules.zip

    Ansible 是一个开源自动化工具,特别适用于系统配置管理和应用程序部署。它的设计哲学是“简单易用”,这使得管理员和开发者能够快速上手并实现自动化。`Ansible-modules.zip` 文件包含的是 Ansible 的模块集合,...

    Ansible Up and Running 2017

    这本书面向初学者和有一定经验的系统管理员,旨在帮助他们快速上手并熟练运用Ansible。 在2017年的版本中,书中的内容可能涵盖了以下几个核心知识点: 1. **Ansible基础知识**:包括Ansible的工作原理、架构,如...

    Ansible自动化运维参考实验手册-附带自动化部署zabbix和prometheus

    * 易于使用:Ansible的使用非常简单,即使没有太多的技术背景也可以快速上手。 * 灵活:Ansible支持多种Inventory方式和多种模块,非常灵活。 * 可扩展:Ansible支持多种插件和模块,非常方便扩展。 * 支持多种操作...

    ANSIBLE:UP_AND_RUNNING

    《ANSIBLE: UP_AND_RUNNING》是一本专注于自动化运维工具Ansible的指南,旨在帮助读者快速上手并精通Ansible的使用。这本书详细介绍了Ansible的基本概念、核心功能以及实际操作中的应用技巧,对于想要提升IT基础设施...

    centos6中搭建ansible

    Ansible 作为一种轻量级且易于上手的自动化运维工具,非常适合在 CentOS 6 系统中部署,以实现对多台 Linux 服务器的批量管理和部署。 #### Ansible 的基本介绍 Ansible 是一种开源的自动化运维管理工具,由 Red ...

    Ansible-Ansible-dev.zip

    Ansible 是一个开源自动化工具,广泛应用于IT领域的配置管理、应用程序部署和任务自动化。它的设计哲学是简单易用,使得管理员能够快速上手并实现高效自动化。在“Ansible-Ansible-dev.zip”这个压缩包中,我们很...

    ansible所需要软件包

    Ansible 是一个自动化运维工具,被广泛用于配置管理、应用程序部署、任务执行和持续集成等领域。它的设计理念是简洁易用,使得即使是对自动化经验较少的用户也能快速上手。Ansible 基于模块化的设计,通过 SSH ...

    OpenStack Administration with Ansible 2, 2nd Edition 2016.pdf

    - **实战导向**:本书通过实际案例和示例来教授如何使用Ansible管理OpenStack,让读者能够快速上手。 - **全面覆盖**:不仅介绍了OpenStack的核心服务,还深入探讨了Ansible的高级用法,使读者能够全面掌握这两种...

    Mastering Ansible

    Ansible使用YAML语言编写配置文件,这种语言简洁易读,使得非程序员也能快速上手。此外,Ansible具有易于扩展、模块化设计的特点,拥有丰富的模块库,可以处理各种操作系统和应用程序的自动化任务。 二、Ansible...

Global site tag (gtag.js) - Google Analytics