开源工具| Ansible提示

发布者:上海IT外包来源:http://www.lanmon.net点击数:923

使用Ansible自动化数据中心的关键点。
Ansible是一个开源自动化工具,允许您从中央控制节点集中配置服务器,安装软件或执行各种IT任务。它使用一对多,无客户端无代理机制,通过SSH将命令从控制节点发送到远程客户端(当然,除了SSH之外的其他协议)。
Ansible的主要用户组是系统管理员,他经常定期执行一些安装和配置任务。但是,某些非特权用户也可以使用Ansible。例如,数据库管理员可以使用Ansible创建数据库,添加数据库用户,定义访问权限等。
让我们看一个简单的使用场景,系统管理员每天配置100台服务器,并且必须在每台机器上执行一系列Bash命令并将它们交付给用户。
这是一个简单的例子,但它应该能够证明在yaml文件中编写命令然后在远程服务器上运行它们非常容易。如果操作环境不同,您可以添加判断条件以指示某些命令只能在特定服务器上运行(例如,仅在非Ubuntu或Debian的系统上运行yum命令)。
Ansible的一个重要特性是使用脚本手册来描述计算机系统的最终状态,因此脚本可以在服务器上重复执行而不会影响其最终状态(LCTT)。如果任务已经实现(例如,“用户sysman已经存在”),则Ansible将忽略它并继续执行后续任务。
定义
任务任务:是最小的工作单元,它可以是一个动作,例如“安装数据库服务”,“安装Web服务器”,“创建防火墙规则”或“将此配置文件复制到该服务器”。动作播放:由任务组成,例如,动作的内容是“为Web服务建立数据库”,其中包括以下任务:1)安装数据库包; 2)设置数据库管理员密码; 3)创建数据库实例; 4)为实例分配权限。
脚本剧本:( LCTT翻译:playbook最初是指美式橄榄球队的战术手册,也常称为“脚本”,其中约定使用“脚本”翻译)由动作组成,脚本可能如下所示: “设置我的网站,包括后端数据库,其中的操作包括:1)设置数据库服务器; 2)设置Web服务器。
角色角色:用于保存和组织脚本以共享和重用它们。另外举一个例子,如果您需要一个全新的Web服务器,您可以使用其他人已经编写和共享的角色进行设置。由于角色具有高度可配置性(如果您正确编写它们),您可以根据部署需求轻松地重用它们。
Ansible Galaxy Ansible Galaxy:是一个在线存储库,用于存储社区成员上传的角色,以便于共享。它与GitHub紧密集成,因此可以在Git存储库中组织这些角色,然后通过Ansible galaxy共享。
可以使用下图描述这些定义及它们之间的关系:
请注意,上面的示例只是组织任务的方法之一。当然,我们也可以拆分安装数据库的脚本并安装Web服务器并将它们放入不同的角色。 Ansible星系中最常见的角色是独立安装和配置每个应用程序服务。您可以参考这些安装mysql和httpd的示例。
编写脚本的提示
学习Ansible的最佳资源是其官方文档。此外,就像学习其他东西一样,搜索引擎也是你的好朋友。我建议您从一些简单的任务开始,例如安装应用程序或创建用户。以下是一些有用的指南:
在测试期间选择较少的服务器,以便更快地执行您的操作。如果它们在一台机器上成功执行,则其他机器上没有问题。
在实际运行之前始终执行测试干运行以确保所有命令都正确执行(运行测试,加上--check-mode参数)。
尽量做到尽可能多,不要担心弄乱。该任务描述了所需的状态,如果系统已达到预期状态,则该任务将被忽略。
确保可以正确解析/etc/ansible/hosts中定义的主机名。由于它使用SSH与远程主机通信,因此主节点必须能够接受密钥,因此您有以下选择:1)在正式使用之前与远程主机进行密钥交换; 2)开始时的管理当您在新的远程主机上时,准备输入“是”,因为您必须接受来自另一方的SSH密钥交换请求(LCTT:还有另一个不太安全的选项来修改ssh主节点的配置文件,StrictHostKeyChecking设置为“no”)。
虽然您可以在同一脚本中组合不同Linux发行版的任务,但为每个发行版编写单独的脚本更为明确。
结论
Ansible是在数据中心实施自动化的不错选择,因为它:
不需要客户端,因此比其他自动化工具更容易安装。
将指令保存在YAML文件中(虽然也支持JSON)比编写shell脚本更简单。
开源,所以你可以做出自己的贡献,让它更强大!
您如何使用Ansible使您的数据中心更加自动化?请在评论中分享您的经验。
IT外包
>
400-635-8089
立即
咨询
电话咨询
服务热线
400-635-8089
微信咨询
微信咨询
微信咨询
公众号
公众号
公众号
返回顶部