Ansible简介与安装
概述
Ansible是一个开源配置管理工具,可以使用它来自动化任务,部署应用程序实现IT基础架构。
Ansible可以用来自动化日常任务,比如:
- 服务器的初始化配置
- 安全基线配置
- 更新系统和打补丁
- 安装软件包等
Ansible架构相对比较简单,仅需通过SSH连接客户机执行任务即可:
工作机制
:Ansible 在管理节点将 Ansible 模块通过 SSH 协议(或者 Kerberos、LDAP)推送到被管理端执行,执行完之后自动删除,可以使用版本控制系统(git/svn)来管理自定义模块及playbooks。
概念术语
Ansible使用过程中会用到一些概念术语,与节点有关的重要术语包括控制节点,受管节点,清单和主机文件
:
控制节点(Control node):指安装了Ansible的主机,也叫Ansible服务器端,管理机。 Ansible控制节点主要用于发布运行任务,执行控制命令。Ansible的程序都安装在控制节点上,控制节点需要安装Python和Ansible所需的各种依赖库。注意:目前Ansible还不能安装在Windows下。
受控节点(Managed nodes):也叫客户机,就是想用Ansible执行任务的客户服务器。
清单(Inventory
):Ansible 可同时操作属于一个组的多台主机,组和主机之间的关系通过 inventory 文件配置,默认的文件路径为 /etc/ansible/hosts
清单(Inventory)列表通常保存在一个名为hosts的主机文件中。在hosts文件中,可以使用IP地址或者主机名来表示具体的管理主机和认证信息,并可以根据主机的用户进行分组。缺省文件:/etc/ansible/hosts,可以通过-i指定自定义的hosts文件。
模块(Modules
):模块是Ansible执行特定任务的代码块。比如:添加用户,上传文件和对客户机执行ping操作等。Ansible现在默认自带450多个模块,,Ansible Galaxy公共存储库则包含大约1600个模块。
任务(Task
):是Ansible客户机上执行的操作。可以使用”ad-hoc”单行命令执行一个任务,例:$ansible all -a "/bin/echo hello"
。
剧本(Playbook
):是利用YAML标记语言编写的可重复执行的任务的列表,playbook实现任务的更便捷的读写和贡献。比如,在Github上有大量的Ansible playbooks共享,你要你有一双善于发现的眼睛你就能找到大量的宝藏。
角色(roles
):角色是Ansible 1.2版本引入的新特性,用于层次性、结构化地组织playbook。roles能够根据层次型结构自动装载变量文件、tasks以及handlers等。
连接插件(Connectior Plugins
):ansible基于连接插件连接到各个主机上,虽然ansible是使用ssh连接到各个主机的,但是它还支持其他的连接方法,所以需要有连接插件
Ansible的优势
无需客户端
与Chef、Puppet以及Saltstack(现在也支持Agentless方式salt-ssh)不同,Ansible是无客户端Agent的,所以无需在客户机上安装或配置任何程序,就可以运行Ansible任务。由于Ansible不会在客户机上安装任何软件或运行监听程序,因此消除了许多管理开销,我们可以在即可上手使用Ansible管理服务器,同时Ansible的更新也不会影响任何客户机。
使用SSH进行通讯
默认情况下,Ansible使用SSH协议在管理机和客户机之间进行通信。可以使用SFTP与客户机进行安全的文件传输。
并行执行
Ansible与客户机并行通信,可以更快地运行自动化任务。默认情况下,forks值为5,可以按需,在配置文件中增大该值。
安装(more)
YUM安装:
1 | yum install -y http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm |
pip3安装指定版本:
1 | #python3 -m pip install --upgrade pip |