一、Ansible介绍
1.1 Ansible
Ansible目前是运维自动化工具中最简单、容易上手的一款优秀软件,能够用来管理各种资源。用户可以使用Ansible自动部署应用程序,以此实现IT基础架构的全面部署。 |
-
Ansible是一个可以同时管理多个远程主机的软件
-
远程主机:指任何可以通过SSH协议登录的主机
-
1.2 功能
批量执行远程命令,可以对远程的多台主机同时进行命令的执行 |
批量安装和配置软件服务,可以对远程的多台主机进行自动化的方式配置和管理各种服务 |
编排高级的企业级复杂的IT架构任务, Ansible的Playbook和role可以轻松实现大型的IT复杂架构 |
1.3 特点
ansible基于python语言开发 |
Ansible通过SSH协议实现管理节点与远程节点之间的通信。理论上来说,只要是能通过SSH登录到远程主机来完成的操作,都可以通过Ansible实现批量自动化操作 |
ansible的模块丰富,ansible中内置了三千多个模块 模块本质上就是脚本(shell脚本、python脚本 |
ansible playbook则提供类似于编程语言的复杂功能 |
ansible支持异构架构。也就是通过ansible,可以批量管理window、linux等不同系统的服务器 |
1.4 专用术语
英文 | 中文 | 含义 |
control node | 控制节点 | 安装了Ansible服务的主机,也称为Ansible控制端,主要是用来发布运行任务、调用功能模块,以及对其他主机进行批量控制 |
managed node | 受控节点 | 被Ansible服务所管理的主机,也被称为受控主机或客户端,是模块命令的被执行对象 |
inventory | 主机清单 | 受控节点的列表,可以是IP地址、主机名或者域名 |
module | 模块 | 用于实现特定功能的代码;Ansiblie默认带有上千款模块;可以在Ansible Galaxy中选择更多的模块 |
task | 任务 | 要在Ansible客户端上执行的操作 |
playbook | 剧本 | 通过YAML语言编写的可重复执行的任务列表;把重复性的操作写入到剧本文件中后,下次可直接调用剧本文件来执行这些操作 |
role | 角色 | 从Ansible 1.2版本开始引入的新特性,用于结构化地组织剧本;通过调用角色可实现一连串的功能 |
二、Ansible部署
如图要求,配置各主机的ip地址
控制端 | 192.168.2.60 |
被控制端1 | 192.168.2.61 |
被控制端2 | 192.168.2.62 |
被控制端3 | 192.168.2.63 |
被控制端4 | 192.168.2.64 |
被控制端5 | 192.168.2.65 |
2.1 在控制端原有软件仓库配置的下方,追加EPEL扩展软件包安装源的信息
国内EPEL源(可以选择一下任意一个网站的源) |
阿里阿里 |
中科大 |
清华 |
如果epel源无法下载,请把NAT模式切换为桥接模式
2.2 安装Ansible
2.3 修改每台主机的主机名
其他主机相同的步骤
2.4 设置主机清单(方法一)
通过在控制端设置免密登录的方式让控制端随时随地登录被控制端
同样的步骤把密钥传输到其他被控制端(也可以直接用Shell脚本把密钥直接传输到每一台主机)
我们可以清空/etc/ansible/hosts配置文件中的内容,也可以直接添加到末尾
可以为主机清单的主机分组
不分组的话会默认加入到一个组,如下图所示
以结构化的方式显示出受管主机的信息
2.4 设置主机清单(方法二)
通过在控制端设置 Ansible 主配置文件进行免密登录
我们可以清空/etc/ansible/hosts配置文件中的内容,也可以直接添加到末尾
实验:在ansible控制端上操作为所有被控端创建/root/abc目录