ansible入门
Ansible是一种开源自动化工具,用于从一个中央位置配置服务器,安装软件以及执行各种IT任务。 这是一种一对多的无代理机制,其中所有指令均从通过SSH与远程客户端进行通信的控制机上运行,尽管也支持其他协议。
对于具有特权访问权限的系统管理员,他们通常执行诸如安装和配置应用程序之类的任务,而Ansible也可以由非特权用户使用。 例如,使用mysql
登录ID的数据库管理员可以使用Ansible创建数据库,添加用户并定义访问级别控件。
让我们看一个非常简单的示例,其中系统管理员每天配置100台服务器,并且必须在每个服务器上运行一系列Bash命令,然后再将其交付给用户。
这是一个简单的示例,但应说明在yaml文件中指定命令并在远程服务器上执行命令的容易程度。 在异构环境中,可以添加条件语句,以便仅在某些服务器中执行某些命令(例如,“仅在非Ubuntu或Debian的系统中执行yum
命令”)。
Ansible中的一个重要功能是,剧本描述了计算机系统中所需的状态,因此,剧本可以在不影响服务器状态的情况下针对服务器多次运行。 如果已经执行了某个任务(例如,“用户sysman
已经存在”),则Ansible会简单地忽略它并继续前进。
定义
- 任务:
- 播放:
- 剧本:
- 角色:
- Ansible星系:
这些定义及其关系如下所示:
请注意,这只是组织需要执行的任务的一种方法。 我们本来可以将数据库和Web服务器的安装分成单独的剧本和不同的角色。 Ansible Galaxy中的大多数角色都安装和配置单个应用程序。 您可以看到有关安装mysql和安装httpd的示例。
编写剧本的技巧
学习Ansible的最佳来源是官方文档站点。 而且,和往常一样,在线搜索是您的朋友。 我建议从简单的任务开始,例如安装应用程序或创建用户。 准备就绪后,请遵循以下准则:
- 在测试时,请使用一小部分服务器,以加快播放速度。 如果它们在一台服务器上成功,那么它们将在其他服务器上成功。
- 务必进行
--check-mode
运行以确保所有命令均正常运行(使用--check-mode
标志运行)。 - 根据需要进行多次测试,而不必担心会损坏东西。 任务描述了期望的状态,因此,如果已经实现了期望的状态,则将其简单地忽略。
- 确保
/etc/ansible/hosts
中定义的所有主机名都是可解析的。 - 由于与远程主机的通信是使用SSH完成的,因此密钥必须由控制计算机接受,因此:1)在启动之前与远程主机交换密钥; 或2)准备输入“是”以接受要管理的每个远程主机的SSH密钥交换请求。
- 尽管您可以在一个剧本中组合用于不同Linux发行版的任务,但是为每个发行版编写一个单独的剧本更为干净。
归根结底
Ansible是在数据中心实施自动化的绝佳选择:
- 它是无代理的,因此比其他自动化工具更易于安装。
- 指令在YAML中(尽管也支持JSON),因此比编写Shell脚本更容易。
- 它是开源软件,因此请回馈它并使其变得更好!
您如何使用Ansible自动化数据中心? 在评论中分享您的经验。
翻译自: https://opensource.com/article/18/2/tips-success-when-getting-started-ansible
ansible入门