原文:http://www.linuxidc.com/Linux/2013-11/92255.htm
最近纠结于在 Puppet、Chef、SaltStack、Ansible 等一干配置管理工具中如何选择。考虑到一旦开始没有选好,以后更改又是一堆麻烦事,所以就稍微有些慎重。
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 为 主 要 内 容 , 侧 重 于 实 战 , 由 浅 入 深 介绍Ansible移机周边 产 品 Ansible Galaxy 和 Ansible Tower 的 用 法 。
说到ansible,了解的人都会提到ansible通过ssh连接与远端机器进行通信,远端机器无需安装agent。事实是否如此?让我们一起来探讨一下.
特别适合入门的ansible文档,希望帮助你迅速掌握ansible实现自动化运维
运维工具ansible jenkins mesos三种工具讲解,部署、实验、测试、截图
Ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。
ansible配置
ansible有个特性叫“幂特性”。即ansible是以“结果为导向的”。我们指定了一个“目标状态”,ansible会自动判读,“当前状态”是否与“目标状态”一致。如果一致,则不进行任何操作。如果不一致,就将“当前状态”...
基于Flask的Ansible自动化配置与部署系统设计源码,该项目包含41个文件,主要文件类型有10...该项目是一个基于Flask的Ansible自动化配置与部署系统设计源码,可能涉及用户界面设计、应用逻辑实现、数据存储等多个方面。
ansible-playbooks, 这些简洁的Ansible剧本,配置服务器 ! Ansible剧本这些playbook中的大部分已经被创建为供应Mac开发机器。 我将把这些剧本分开到他们独立的git存储库,取决于我如何决定我要构建的managament增强...
目录网盘文件永久链接 Ansible自动化运维工具
Ansible 自动化运维工具笔记
Linux技术_Ansible配置与管理
Ansible-ansible-junos-ztp.zip,使用ansible自动设置和管理ztp服务器以向junos设备提供软件和启动配置的示例项目。,ansible是一个简单而强大的自动化引擎。它用于帮助配置管理、应用程序部署和任务自动化。
Ansible-k3s-ansible.zip,ansible playbook部署k3s-kubernetes集群通过ansibe使用k3s构建kubernetes集群。,ansible是一个简单而强大的自动化引擎。它用于帮助配置管理、应用程序部署和任务自动化。
使用自动化运维工具Ansible集中化管理服务器
Linux——Ansible 快速入门.doc
本文档在CentOS 7上安装最新版本Ansible AWX 20.1.1自动化运维管理系统,当前网络中均是老版本的安装配置资料,和最新版本基本没有什么参考价值,githup的介绍确实理解起来非常晦涩,在通过探索终于可以完成了一个...
ansible 和 saltstack 一样都是基于 Python 开发的,是比 puppet 和 saltstack 更轻量级的运维自动化工具。无服务器端,使用时直接运行命令即可,不需要在被管控主机上安装任何客户端,所以任何一台机器只要安装了 ...
Ansible基础配置和企业级项目实用案例。部署流程步骤讲解