Ansible自动化入门,只要这一篇就够

我们知道现在自动化工具中,最简单、易于上手,而且最流行的当属Ansible莫属了。和Chef、Puppet等Ruby工具甚至同时Python系的Saltstack等CS架构的自动化工具相比虽然执行性能上可能会稍一点,但是无需客户端,只需SSH就可以管理优势还是相当明显的。服务器上架后无需额外操作就可以直接进行操作,比如服务器的初始化标准配置等。本文虫虫给大家介绍就是Ansible入门教程,如果此前已有对应的基础可以忽略本文。

概述

Ansible是一个开源配置管理工具,可以使用它来自动化任务,部署应用程序实现IT基础架构。Ansible可以用来自动化日常任务,比如,服务器的初始化配置、安全基线配置、更新和打补丁系统,安装软件包等。Ansible架构相对比较简单,仅需通过SSH连接客户机执行任务即可:

Ansible使用过程中会用到一些概念术语,我们先介绍一下。

Ansible的与节点有关的重要术语包括控制节点,受管节点,清单和主机文件:

控制节点(Controlnode):指安装了Ansible的主机,也叫Ansible服务器端,管理机。Ansible控制节点主要用于发布运行任务,执行控制命令。Ansible的程序都安装在控制节点上,控制节点需要安装Python和Ansible所需的各种依赖库。注意:目前Ansible还不能安装在Windows下。

受控节点(Managednodes):也叫客户机,就是想用Ansible执行任务的客户服务器。

清单(Inventory):受控节点的列表,就是所有要管理的主机列表。

host文件:清单列表通常保存在一个名为host文件中。在host文件中,可以使用IP地址或者主机名来表示具体的管理主机和认证信息,并可以根据主机的用户进行分组。缺省文件:/etc/ansible/hosts,可以通过-i指定自定义的host文件。

模块(Modules):模块是Ansible执行特定任务的代码块。比如:添加用户,上传文件和对客户机执行ping操作等。Ansible现在默认自带多个模块,,AnsibleGalaxy公共存储库则包含大约个模块。

任务(Task):是Ansible客户机上执行的操作。可以使用ad-hoc单行命令执行一个任务。

剧本(Playbook):是利用YAML标记语言编写的可重复执行的任务的列表,playbook实现任务的更便捷的读写和贡献。比如,在Github上有大量的Ansibleplaybooks共享,你要你有一双善于发现的眼睛你就能找到大量的宝藏。

角色(roles):角色是Ansible1.2版本引入的新特性,用于层次性、结构化地组织playbook。roles能够根据层次型结构自动装载变量文件、tasks以及handlers等。

Ansible的优势

Ansible作为最受欢迎的自动化配置工具,主要得益于其设计上的优势。

无需客户端

与Chef、Puppet以及Saltstack(现在也支持Agentless方式salt-ssh)不同,Ansible是无客户端Agent的,所以无需在客户机上安装或配置任何程序,就可以运行Ansible任务。由于Ansible不会在客户机上安装任何软件或运行监听程序,因此消除了许多管理开销,我们可以在即可上手使用Ansible管理服务器,同时Ansible的更新也不会影响任何客户机。

使用SSH进行通讯

默认情况下,Ansible使用SSH协议在管理机和客户机之间进行通信。可以使用SFTP与客户机进行安全的文件传输。

并行执行

Ansible与客户机并行通信,可以更快地运行自动化任务。默认情况下,forks值为5,可以按需,在配置文件中增大该值。

安装Ansible

Ansible可以运行在任何机器上,但是对管理机有一定要求。管理机应安装Python2(2.7)或Python3(3.5或更高版本),另外,管理机不支持Windows控制节点。我们可以使用Linux发行版包管理器、源码安装或者Python包管理器(PIP)来安装Ansible。

redhat系

sudoyuminstallansible或者dnfinstallansible

ubuntu

sudoaptupdate

sudoaptinstallsoftware-properties-


转载请注明:http://www.aierlanlan.com/rzgz/2319.html