18批量管理服务
ansible批量管理服务概述
基于python语言开发的自动化管理软件,基于SSH远程管理服务实现远程主机批量管理
ansible批量管理服务意义
提高工作效率,提高工作准确度,减少维护成本,减少重复性工作
ansible批量管理服务功能
实现批量系统操作配置,实现批量软件服务部署,实现批量文件数据分发,实现批量系统信息收集
ansible批量管理服务部署
管理端服务器
安装部署软件
yum install -y ansible 需要依赖epel的yum源
/etc/ansible/ansible.cfg ansible服务配置文件
/etc/ansible/hosts 主机清单文件,定义可以管理的主机信息
/etc/ansible/roles 角色目录
需要编写主机清单文件
vim /etc/ansible/hosts
测试是否可以管理多个主机
ansible all -a "hostname"
ansible服务架构信息
主机清单信息
软件模块信息
基于秘钥连接主机
主机需要关闭selinux
软件剧本功能
ansible服务特点
管理端不需要启动服务程序
管理端不需要编写配置文件
受控端不需要安装软件程序
受控端不需要启动服务程序
服务程序管理操作模块众多
利用剧本编写来实现自动化
ansible软件模块应用
官方网站
模块的应用语法格式
ansible 主机名称/主机组名称/主机地址信息/all -m(指定应用的模块信息) 模块名称 -a(指定动作信息) 执行什么动作
command模块(默认模块)
shell 模块(万能模块)
script模块(脚本模块)
copy模块 将数据信息进行批量分发
anisble软件输出颜色说明
绿色信息:查看主机信息/对主机未做改动
黄色信息:对主机数据信息做了修改
红色信息:命令执行出错了
粉色信息:忠告信息
蓝色信息:显示ansible命令执行的过程
file模块 设置文件属性信息
fetch模块 拉取模块
yum模块
service模块 管理服务器的运行状态
cron模块 批量设置多个主机的定时任务信息
mount模块 批量进行挂载操作
user模块 实现批量创建用户
ping模块 远程管理测试模块
剧本的编写方法
剧本的作用 自动化部署rsync服务
服务端操作
1,安装软件
ansible 172.16.1.41 -m yum -a "name=rsync state=installed"
2,编写文件
ansible 172.16.1.41 -m copy -a "src=/xxx/rsync.conf dest=/etc/"
3,创建用户
ansible 172.16.1.41 -m user -a "name=rsync create_home=no shell=/sbin/nologin"
4,创建目录
ansible 172.16.1.41 -m file -a "dest=/backup state=directory owner=rsync group=rsync"
5,创建密码文件
ansible 172.16.1.41 -m copy -a "content='rsync_backup:oldboy123' dest=/etc/rsync.password mode=600"
6,启动服务
ansible 172.16.1.41 -m service -a "name=rsync state=started enabled=yes"
客户端操作
1,创建密码文件
ansible 172.16.1.41 -m copy -a "content='rsync_backup:oldboy123' dest=/etc/rsync.password mode=600"
剧本的组成部分
hosts
tasks
剧本的编写规范 pyyaml
合理的信息缩进,在ansible中一定不能用tab进行缩进
冒号的使用方法,使用冒号时后面要有空格信息,以冒号结尾,冒号信息出现在注释说明中,后面不需要加上空格
hosts: 172.16.1.41
tasks:
短横线应用 列表功能,使用短横线构成列表信息,短横线后面需要有空格
剧本文件扩展名尽量写为yaml
方便识别文件是一个剧本文件
文件编写时会有颜色提示
如何执行剧本
检查剧本的语法格式
ansible-playbook --syntax-check rsync_server.yaml
模拟执行剧本
ansible-playbook -C rsync_server.yaml
直接执行剧本
ansible-playbook rsync_server.yaml
ansible学习帮助手册如何查看
ansible-doc -l 列出模块使用简介
ansible-doc -s fetch 指定一个模块详细说明
ansible-doc fetch 查询模块在剧本中应用方法
利用剧本完成服务一键化部署
rsync服务部署
熟悉软件部署流程
熟悉ansible软件模块使用
熟悉ansible剧本编写规范
nfs服务部署
sersync服务部署
ansible
ad-hoc 临时实现批量管理功能(模块) 命令
playbook 永久实现批量管理功能(剧本) 脚本
剧本编写常见错误
剧本语法规范是否符合
剧本中模块使用是否正确
剧本中一个name标识下面只能写一个模块任务信息
剧本中尽量不要大量使用shell模块
如何配置主机清单
方法1:分组配置主机信息
方法2:支持主机名符号匹配配置
方法3:跟上非标准远程端口
方法4:主机使用特殊的变量
方法5:主机组名嵌入配置s
编写剧本的重要功能
在剧本中设置变量信息
方法1:直接在剧本文件中编写
方法2:在命令行中进行指定
方法3:在主机清单文件编写
3种变量配置优先级
最优先:命令行变量设置
次优先:剧本中变量设置
最后:主机清单变量设置
全局设置变量方法 roles,剧本整合
在剧本中设置注册信息
在剧本中设置判断信息
setup模块中显示被管理主机系统的详细信息
在剧本中设置循环信息
在剧本中设置错误忽略
在剧本中设置标签信息
在剧本中设置触发信息
在剧本中进行剧本整合
剧本中出现错误排查思路
找到剧本中出现问题关键点
将剧本中的操作转换成模块进行操作
将模块的功能操作转换成linux命令,本地管理主机上执行命令测试,远程被管理主机上执行命令测试
将多个剧本进行整合
方式1:include_tasks:f1.yml
方式2:include:f1.yml
方式3:- import_playbook:
ansible程序roles
规范目录结构
cd /etc/ansible/roles
mkdir {rsync,nfs} 创建相应角色目录
mkdir {nfs,rsync}/{vars,tasks,templates,handlers,files} 创建角色目录下面的子目录
files 保存需要分发文件目录
handlers 保存触发器配置文件信息
tasks 保存要执行的动作信息文件
templates 保存需要分发模板文件,模板文件可以设置变量信息
vars 保存变量信息文件
在roles目录中创建相关文件
编写文件流程图
编写tasks目录中的main.yml文件
编写vars目录中的main.yml文件
编写files目录中的文件
编写handlers目录中的main.yml文件
编写一个主剧本文件