Ansible 批处理实战
软件简介
Ansible 是一款自动化运维工具,基于 Python 开发,集合了众多运维工具(puppet、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。
功能特点
部署简单,只需在主控端部署 Ansible 环境,被控端无需做任何操作
默认使用 SSH 协议对设备进行管理
有大量常规运维操作模块,可实现日常绝大部分操作
配置简单、功能强大、扩展性强
支持 API 及自定义模块,可通过 Python 轻松扩展
通过 Playbooks 来定制强大的配置、状态管理
基础架构
Ansible:Ansible 核心程序。
HostInventory:记录由 Ansible 管理的主机信息,包括端口、密码、ip 等。
Playbooks:YAML 格式文件,多个任务定义在一个文件中,定义主机需要调用哪些模块来完成的功能。
CoreModules:核心模块,主要操作是通过调用核心模块来完成管理任务。
CustomModules:自定义模块,完成核心模块无法完成的功能,支持多种语言。
ConnectionPlugins:连接插件,Ansible 和 Host 通信使用
任务执行
Ansible 系统由控制主机对被管节点的操作方式可分为两类,即 adhoc 和 playbook
ad-hoc 模式(点对点模式) 使用单个模块,支持批量执行单条命令。ad-hoc 命令是一种可以快速输入的命令,而且不需要保存起来的命令,就相当于 bash 中的一句 shell 命令。
playbook模式 (剧本模式) Ansible 主要管理方式,也是 Ansible 功能强大的关键所在。playbook 通过多个 task 集合完成一类功能,如 Web 服务的安装部署、数据库服务器的批量备份等。可以简单地把 playbook 理解为通过组合多条 ad-hoc 操作的配置文件。
批处理实战
环境准备
软件安装
登录 ansible01,执行安装命令
yum install -y ansible
主要程序
/usr/bin/ansible 主程序
/usr/bin/ansible-doc 配置文档
/usr/bin/ansible-playbook 定制自动化任务,编排剧本工具
/usr/bin/ansible-pull 远程执行命令的工具
/usr/bin/ansible-vault 文件加密工具
主要配置文件
/etc/ansible/ansible.cfg 主配置文件
/etc/ansible/hosts 主机清单(将被管理的主机放到此文件)
/etc/ansible/roles/ 存放角色的目录
免密登录
登录 ansible01,生成秘钥,默认路径为 /root/.ssh/id_rsa、/root/.ssh/id_rsa.pub
ssh-keygen
秘钥分发至需要被管理的节点
ssh-copy-id root@10.0.0.66 ssh-copy-id root@10.0.0.67
修改主机清单文件 /etc/ansible/hosts,添加分组名称以及主机 ip
[guance] 10.0.0.67 10.0.0.66
验证连通性
ansible guance -m ping
常用模块
Shell 模块
Shell 模块可以在远程主机上调用 shell 解释器运行命令,支持 shell 的各种功能,例如管道等
查看当前用户 id
ansible guance -m shell -a 'id'
查看当前登录至系统的用户
ansible guance -m shell -a 'who'
Copy 模块
该模块用于将文件复制到远程主机,同时支持给定内容生成文件和修改权限等
复制 ansible.cfg 文件至远程主机,并指定权限为 "读写" -rw-rw-rw-
ansible guance -m copy -a 'src=/etc/ansible/ansible.cfg dest=/tmp/ansible.cfg mode=666'
查看远程主机 ansible.cfg 文件
ansible guance -m shell -a 'ls -l /tmp/ansible.cfg'
指定内容并生成文件
ansible guance -m copy -a 'content="hello world" dest=/tmp/hello mode=666'
查看远程主机文件
ansible guance -m shell -a 'cat /tmp/hello'
File 模块
该模块用于设置文件的属性,比如创建文件、创建链接文件、删除文件等
在 /tmp 下创建 app 目录
ansible guance -m file -a 'path=/tmp/app state=directory'
查看 /tmp 目录
ansible guance -m shell -a 'ls -l /tmp'
删除之前从 ansible01 复制过来的 ansible.cfg 文件
ansible guance -m file -a 'path=/tmp/ansible.cfg state=absent'
Fetch 模块
该模块用于从远程某主机获取(复制)文件到本地
拉取远程主机 /tmp/hello 文件至 /root 目录
ansible guance -m fetch -a 'src=/tmp/hello dest=/root'
在 /root 目录下,可以看到两个新目录 (远程主机 ip 为目录名称)
yum -y install treetree /root
观测云应用
批量安装
使用 shell 模块安装 datakit (注意修改对应的 token)
ansible guance -m shell -a 'DK_DATAWAY="https://openway.guance.com?token=token" bash -c "$(curl -L https://static.guance.com/datakit/install.sh)"'
查看进程是否已经启动
ansible guance -m shell -a 'ps -ef|grep datakit|grep -v grep'
批量配置
开启 netstat 插件
使用 shell 模块复制文件 netstat.conf.sample 为 netstat.conf
ansible guance -m shell -a 'cp /usr/local/datakit/conf.d/host/netstat.conf.sample /usr/local/datakit/conf.d/host/netstat.conf'
批量重启 datakit
ansible guance -m shell -a 'systemctl restart datakit'
批量升级
新建 datakit 升级 yaml 文件,/etc/ansible/dk_upgrade.yaml
- hosts: guance
remote_user: root
tasks:
- name: dk versioncheck
shell: datakit--version|grep -i upgrade|wc -l
register:version
-name: dkupgradewhen: version.stdout >"0"
shell: DK_UPGRADE=1bash -c"$(curl -L
https://static.guance.com/datakit/install.sh)"
运行 playbook
ansible-playbook /etc/ansible/dk_upgrade.yaml
查看 datakit 版本已经为最新
ansibleguance -m shell -a'datakit --version'
添加定时任务 crontab -e (每天 02 点 02 分执行批量升级)
02 02* ** ansible-playbook /etc/ansible/dk_upgrade.yaml
Ansible 批处理实战的更多相关文章
- 3.Ansible varialbes实战
varialbes 1.什么是变量? 以一个固定的字符串,表示一个不固定的值 version: 1.12 2.定义变量? 1.在playbook中定义变量? >1.vars 关键字 [roo ...
- Ansible学习实战手记-你想要知道的可能都在这里了
最近接触了ansible工具,查找了一些资料,也做了一些总结.希望能给刚接触的新手带来一些帮助. 此总结有实际例子,大部分也是从实践中用到才逐一总结的. 当然可能肯定一定会存在一些错误和纰漏,还望大家 ...
- ansible最佳实战部署nginx
1.先看下整体目录架构 [root@bogon ~]# cd /etc/ansible/ [root@bogon ansible]# tree . ├── ansible.cfg ├── group_ ...
- Ansible快速实战指南----多机自动化执行命令、部署神器
1.需求: 需要在多台主机上,发送文件.执行命令,进行快速部署 2.ansible 远程复制文件 例子:在当前节点(20.88.14 ...
- Ansible性能调优
Ansible企业实战环境中,如果管理的服务器越来越多,Ansibe执行效率会变得比较慢,可以通过优化Ansible提供工作效率,由于Ansible基于SSH协议通信,SSH连接慢会导致整个基于Ans ...
- ansible的优化
Ansible企业实战环境中,如果管理的服务器越来越多,Ansibe执行效率会变得比较慢,可以通过优化Ansible提供工作效率,由于Ansible基于SSH协议通信,SSH连接慢会导致整个基于Ans ...
- Ansible--项目实战
Ansible项目实战lnmp 项目规划 通过ansible roles配置lnmp环境,nginx通过源码编译安装,php通过源码编译安装,mysql通过yum安装(mysql源码编译超级慢)支持系 ...
- ansible核心模块playbook介绍
ansible的playbook采用yaml语法,它简单地实现了json格式的事件描述.yaml之于json就像markdown之于html一样,极度简化了json的书写.在学习ansible pla ...
- Linux云计算高端架构师+DevOps高级虚拟化高级进阶视频
课程大纲 1.开班典礼(1)_rec.mp4 2.开班典礼(2)_rec.mp4 3.开班典礼(3)_rec.flv 4.Linux操作系统系统安装及启动流程(1)_rec.flv 5.Linux操作 ...
随机推荐
- Java 数字转汉字
阿拉伯数字转汉字 public static String number2chinese(int src) { final String num[] = {"零", "一 ...
- 使用Fiddler劫持网络资源为前端开发助力(示例:Dynamic CRM 表单开发 也能热更新? )
背景: 使用过vue开发的童鞋应该都知道,在开发vue项目的过程中,有个叫"热更新"的功能特别爽,在传统html开发到初次接触vue时,才发现原来前端开发可以这么香.热更新的表现形 ...
- 【java】学习路径20-Date、Calender日期与时间
简单的说,Date和Calender基本上是差不多的. 在最开始的时候只有Date,没有Calender. 在jdk不断更新的时候,发现了Date有一点缺陷,于是推出了Calender. // Dat ...
- RabbitMQ 入门系列:9、扩展内容:死信队列:真不适合当延时队列。
系列目录 RabbitMQ 入门系列:1.MQ的应用场景的选择与RabbitMQ安装. RabbitMQ 入门系列:2.基础含义:链接.通道.队列.交换机. RabbitMQ 入门系列:3.基础含义: ...
- KingbaseES的SQL语句-CTE递归
背景 从上下级关系表中,任意一个节点数据出发,可以获得该节点的上级或下级.CTE的递归语法,或者 connect by 与 start with的 查询语法,能够实现这个需求. 当我们需要制作上下级关 ...
- KingbaseES 逻辑备份还原加密
KingbaseEs 支持在sys_dump备份时使用key进行加密.在sys_restore时,如果没提供key,或者key值不对,将无法进行恢复. [kingbase@dbhost03 ~]$ s ...
- 纯CSS实现“流星赶月”,祝大家中秋节快乐
明天就是中秋节了,就想着用CSS画一个月亮送给园友们吧.但是就画一个月亮也太简单了些,于是便加了一些星星点缀以及流星坠落的效果.这篇文章就用纯CSS为大家实现一个"流星赶月"的效果 ...
- 华南理工大学 Python第5章课后小测-2
1.(单选)下面语句的输出结果是: ls = [] def func(a, b): ls.append(b) return a*b s = func("hi", 2) print( ...
- Windows Powershell安装错误
今天需要更新一下VMware的 powercli.使用命令install-module -Name VMware.PowerCLI -AllowClobber但是遇到一个错误. Unable to r ...
- 痞子衡嵌入式:理解i.MXRT中FlexSPI外设lookupTable里配置访问行列混合寻址Memory的参数值
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是i.MXRT中FlexSPI外设lookupTable里配置访问行列混合寻址Memory的参数值. 关于 FlexSPI 外设的 loo ...