软件简介

Ansible 是一款自动化运维工具,基于 Python 开发,集合了众多运维工具(puppet、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。

功能特点

  1. 部署简单,只需在主控端部署 Ansible 环境,被控端无需做任何操作

  2. 默认使用 SSH 协议对设备进行管理

  3. 有大量常规运维操作模块,可实现日常绝大部分操作

  4. 配置简单、功能强大、扩展性强

  5. 支持 API 及自定义模块,可通过 Python 轻松扩展

  6. 通过 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 批处理实战的更多相关文章

  1. 3.Ansible varialbes实战

    varialbes 1.什么是变量? ​ 以一个固定的字符串,表示一个不固定的值 version: 1.12 2.定义变量? 1.在playbook中定义变量? >1.vars 关键字 [roo ...

  2. Ansible学习实战手记-你想要知道的可能都在这里了

    最近接触了ansible工具,查找了一些资料,也做了一些总结.希望能给刚接触的新手带来一些帮助. 此总结有实际例子,大部分也是从实践中用到才逐一总结的. 当然可能肯定一定会存在一些错误和纰漏,还望大家 ...

  3. ansible最佳实战部署nginx

    1.先看下整体目录架构 [root@bogon ~]# cd /etc/ansible/ [root@bogon ansible]# tree . ├── ansible.cfg ├── group_ ...

  4. Ansible快速实战指南----多机自动化执行命令、部署神器

                                      1.需求: 需要在多台主机上,发送文件.执行命令,进行快速部署 2.ansible 远程复制文件 例子:在当前节点(20.88.14 ...

  5. Ansible性能调优

    Ansible企业实战环境中,如果管理的服务器越来越多,Ansibe执行效率会变得比较慢,可以通过优化Ansible提供工作效率,由于Ansible基于SSH协议通信,SSH连接慢会导致整个基于Ans ...

  6. ansible的优化

    Ansible企业实战环境中,如果管理的服务器越来越多,Ansibe执行效率会变得比较慢,可以通过优化Ansible提供工作效率,由于Ansible基于SSH协议通信,SSH连接慢会导致整个基于Ans ...

  7. Ansible--项目实战

    Ansible项目实战lnmp 项目规划 通过ansible roles配置lnmp环境,nginx通过源码编译安装,php通过源码编译安装,mysql通过yum安装(mysql源码编译超级慢)支持系 ...

  8. ansible核心模块playbook介绍

    ansible的playbook采用yaml语法,它简单地实现了json格式的事件描述.yaml之于json就像markdown之于html一样,极度简化了json的书写.在学习ansible pla ...

  9. Linux云计算高端架构师+DevOps高级虚拟化高级进阶视频

    课程大纲 1.开班典礼(1)_rec.mp4 2.开班典礼(2)_rec.mp4 3.开班典礼(3)_rec.flv 4.Linux操作系统系统安装及启动流程(1)_rec.flv 5.Linux操作 ...

随机推荐

  1. 宜宾市黑烟车电子抓拍系统App

    2020.11 - 2021.06负责手机App开发 项目说明:    主要用于管理人员的移动办公,通过与管理平台共享数据库,实现:人工审核.推送交警.账户管理.信息查询.数据统计.点位电子地图.设备 ...

  2. UnifyRemoteManager-多国语言绿色版v1.3-20200315,统一远程连接自动登录软件,欢迎测试

    UnifyRemoteManager-多国语言绿色版v1.3-20200315,统一远程连接自动登录软件,欢迎测试 下载参考: 百度网盘:https://pan.baidu.com/s/15g-oXT ...

  3. 达人专栏 | 还不会用 Apache Dolphinscheduler?大佬用时一个月写出的最全入门教程【三】

    作者 | 欧阳涛 招联金融大数据开发工程师 02 Master启动流程 2.10 WorkFlowExecutorThread 里执行 Submit StandByTask 方法 SubmitStan ...

  4. 人非圣贤孰能无过,Go lang1.18入门精炼教程,由白丁入鸿儒,Go lang错误处理机制EP11

    人非圣贤,孰能无过,有则改之,无则加勉.在编程语言层面,错误处理方式大体上有两大流派,分别是以Python为代表的异常捕获机制(try....catch):以及以Go lang为代表的错误返回机制(r ...

  5. java-修饰词、抽象类、抽象方法

    1.final:最终的.不可改变的------单独应用的机率小 1)修饰变量:变量不能被改变 2)修饰方法:方法不能被重写 3)修饰类:类不能被继承 2.static final:常量,应用率高 1) ...

  6. springboot中,子项目的boot依赖全部爆红

    应仔细检查父项目的dependencyManagement是否指定了打包方式<type>为pom,<scope>为import

  7. 学习ASP.NET Core Blazor编程系列二——第一个Blazor应用程序(上)

    学习ASP.NET Core Blazor编程系列一--综述 一.概述 Blazor 是一个生成交互式客户端 Web UI 的框架: 使用 C# 代替 JavaScript 来创建信息丰富的交互式 U ...

  8. AtCoder Beginner Contest 265(D-E)

    D - Iroha and Haiku (New ABC Edition) 题意: 找一个最少含有三个点的区间,将区间分成三块,三块的和分别为p,q,r,问是否存在这样的区间 题解:先预处理一遍前缀和 ...

  9. KingbaseES blob 类型数据导入导出

    KingbaseES兼容了oracle的blob数据类型.通常是用来保存二进制形式的大数据,也可以用来保存其他类型的数据. 下面来验证一下各种数据存储在数据库中形式. 建表 create table ...

  10. 字符类数据类型和oracle字符类型的区别

    为兼容Oracle的数据类型,KingbaseES扩展了Oracle的NUMBER.VARCHAR2.CHAR(n)和DATE类型.该措施使得移植Oracle的Create Table等DDL语句时, ...