一、 Ansible 介绍
Ansible 是一种 IT 自动化工具。它可以配置管理,部署软件以及协调更高级的 IT 任务, 例如持续部署,滚动更新。 Ansible 适用于管理企业 IT 基础设施,从 几十台到上百台的服务器环境。Ansible 也是一种简单的自动化语言,可以完美 地描述 IT 应用程序基础结构。
官方文档:https://docs.ansible.com
二、特点
简单 – 减少学习成本
• 易读的描述语言
• 无需特殊编码技能
• 任务按顺序执行
强大 – 协调应用程序生命周期
• 应用部署
• 配置管理
• 工作流程编排
无代理 – 可预测,可靠和安全
• 无代理架构
• 使用 OpenSSH 通信
• 没有代理维护成本
架构:
核心组件:
• Inventory:Ansible 管理的主机信息,包括 IP 地址、 SSH 端口、账号、密码 等;
• Modules:任务均有模块完成,也可以自定义模块,例如经常用的脚本;
• Plugins:使用插件增加Ansible 核心功能,自身提供了很多插件, 也可以自定义插件。例如 connection 插件, 用于连接目标主机。 callback 插件可以将 结果输出到其他地方。vars 插件将定义的比变量注入到Ansible 中运行。
• Playbooks:“剧本”,模块化定义一系列任务,供外部统一调用。Ansible 核心功能。
三、 Ansible 安装与配置
1)ansible环境搭建
实验准备:三台机器,一台管理,两台被管理
master 192.168.115.3
hd1 192.168.115.4
hd2 192.168.115.5
配置/etc/hosts文件
master
hd1
hd2
2)master安装ansible
1、确认和配置yum源(需要epel源)
2、安装ansible
3、实现master对agent的免密登录,只在master上做。(如果这一步不做,则在后面操作agent时都要加-k参数传密码;或者在主机清单里传密码)
4、在master上定义主机组,并测试连接性
vim /etc/ansible/hosts
ansible -m ping group1
四、ansible模块
ansible是基于模块工作的,本身没有批量部署的能力。真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架。
查看所有支持的模块
ansible-doc -l
(一)hostname模块
hostname模块用于修改主机名(**注意**: 它不能修改/etc/hosts文件)
将其中一远程机器主机名修改为agent1.cluster.com
ansible 192.168.115.4 -m hostname -a 'name=agent1.cluster.com'
192.168.115.4查看
(二)file模块
file模块用于对文件相关的操作(创建, 删除, 软硬链接等)
创建一个目录
ansible group1 -m file -a 'path=/test state=directory'
192.168.115.4查看
192.168.115.5查看
创建一个文件
ansible group1 -m file -a 'path=/test/111 state=touch'
192.168.115.4查看
192.168.115.5查看
删除目录 absent 缺席的(连同目录里的所有文件)
ansible group1 -m file -a 'path=/test state=absent'
192.168.115.4查看
192.168.115.5查看
删除文件
ansible group1 -m file -a 'path=/test/111 state=absent'