python自动化运维八:Ansible
Ansible是新出现的自动化运维工具,基于Python研发。糅合了众多老牌运维工具的优点实现了批量操作系统配置、批量程序的部署、批量运行命令等功能。仅需在管理工作站上安装ansible程序配置被管控主机的IP信息,被管控的主机无客户端。ansible应用程序存在于epel(第三方社区)源,依赖于很多python组件。主要包括:
(1)、连接插件connection plugins:负责和被监控端实现通信;
(2)、host inventory:指定操作的主机,是一个配置文件里面定义监控的主机;
(3)、各种模块核心模块、command模块、自定义模块;
(4)、借助于插件完成记录日志邮件等功能;
(5)、playbook:剧本执行多个任务时,非必需可以让节点一次性运行多个任务。
下面来看下ansible的使用:
一:首先安装ansible模块:apt install ansible
二:配置Ansible以及测试。
(1)第一步是修改主机与组配置。文件在/etc/ansible/hosts. 格式位ini。添加1台主机同时定义IP到werbserver组。
#green.example.com
#blue.example.com
192.168.0.9
# Ex 2: A collection of hosts belonging to the 'webservers' group
#[webservers]
#alpha.example.org
#beta.example.org
192.168.0.9
(二)通过ping模块测试主机的连通性。分别对单主机进行ping操作。出现如下结果表明测试成功。
root@zhf-linux:/home/zhf# ansible 192.168.0.9 -m ping
192.168.0.9 | SUCCESS => {
"changed": false,
"ping": "pong"
}
root@zhf-linux:/home/zhf# ansible webservers -m ping
192.168.0.9 | SUCCESS => {
"changed": false,
"ping": "pong"
}
Ansible是依赖于SSH通信,如果机器之间没有配置SSH证书访问的话,则需要用登录密码访问。命令需改为ansible 192.168.0.9 -m ping -k.
三:Ansible功能模块:
(1) 远程命令模块:
模块包括command,script,shell都可以实现远程shell命令运行。command作为ansible的默认模板,可以运行远程权限范围所有的shell命令,script是在远程主机执行主控端存储的shell脚本文件。相当于SCP+SHELL组合,shell功能是执行远程主机的shell脚本文件。
root@zhf-linux:/home/zhf# ansible webservers -m command -a "ls -al"
192.168.0.9 | SUCCESS | rc=0 >>
total 72
drwx------ 12 root root 4096 Nov 12 14:45 .
drwxr-xr-x 22 root root 4096 Jul 9 16:59 ..
drwxr-xr-x 3 root root 4096 Nov 12 14:45 .ansible
-rw------- 1 root root 5408 Nov 12 14:46 .bash_history
-rw-r--r-- 1 root root 3106 Feb 20 2014 .bashrc
drwx------ 5 root root 4096 Aug 31 21:47 .cache
drwx------ 4 root root 4096 Jul 26 10:47 .config
drwx------ 3 root root 4096 Jul 9 15:59 .dbus
drwx------ 2 root root 4096 Jul 9 16:23 .gvfs
drwxr-xr-x 3 root root 4096 Jul 26 11:23 .local
drwxr-xr-x 2 root root 4096 Jul 26 11:33 .pip
-rw-r--r-- 1 root root 140 Feb 20 2014 .profile
drwxr-xr-x 3 root root 4096 Jul 26 11:41 .python-eggs
drwxr-xr-x 2 root root 4096 Oct 30 21:18 .rpmdb
drwx------ 2 root root 4096 Oct 27 23:11 .ssh
-rw-r--r-- 1 root root 0 Oct 29 10:02 test.txt
-rw------- 1 root root 5439 Oct 31 22:07 .viminfo
在主机上建立一个sh文件,内容很简单,就是echo “hello ansible”。通过远程端也可以调用。
root@zhf-linux:/home/zhf# ansible webservers -m shell -a "/home/zhf/zhf/shell_prj/test1.sh"
192.168.0.9 | SUCCESS | rc=0 >>
hello ansible!
拷贝文件:
在上传文件的同时还可以设置上传文件的属主以及权限。格式为: owner=xxx group=xxx mode=0744
root@zhf-linux:/home/zhf/zhf# ansible webservers -m copy -a "src=/home/zhf/zhf/test2.txt dest=/home/zhf owner=root group=root mode=0744"
192.168.0.9 | SUCCESS => {
"changed": true,
"checksum": "07c0752c54e3883358ab0c8c6008004929954217",
"dest": "/home/zhf/test2.txt",
"gid": 0,
"group": "root",
"md5sum": "d2c01e6badaa08464b9e0cd578a5de8b",
"mode": "0744",
"owner": "root",
"size": 30,
"src": "/root/.ansible/tmp/ansible-tmp-1510471651.28-269106495340296/source",
"state": "file",
"uid": 0
}
stat模块:
获取远程文件的状态信息,包括ctime,mtime,atime,uid,gid等信息。我们用刚才上传的文件为例。
root@zhf-linux:/home/zhf/zhf# ansible webservers -m stat -a "path=/home/zhf/test2.txt"
192.168.0.9 | SUCCESS => {
"changed": false,
"stat": {
"atime": 1510471652.086876,
"checksum": "07c0752c54e3883358ab0c8c6008004929954217",
"ctime": 1510471652.130877,
"dev": 2054,
"exists": true,
"gid": 0,
"gr_name": "root",
"inode": 130813,
"isblk": false,
"ischr": false,
"isdir": false,
"isfifo": false,
"isgid": false,
"islnk": false,
"isreg": true,
"issock": false,
"isuid": false,
"md5": "d2c01e6badaa08464b9e0cd578a5de8b",
"mode": "0744",
"mtime": 1510471651.438875,
"nlink": 1,
"path": "/home/zhf/test2.txt",
"pw_name": "root",
"rgrp": true,
"roth": true,
"rusr": true,
"size": 30,
"uid": 0,
"wgrp": false,
"woth": false,
"wusr": true,
"xgrp": false,
"xoth": false,
"xusr": true
}
}
远程安装软件:将会远程主机安装上ansible模块。
root@zhf-linux:/home/zhf/zhf# ansible webservers -m apt -a "pkg=ansible state=latest"
cron模块:
root@zhf-linux:/home/zhf/zhf# ansible webservers -m cron -a "name=check dirs hour='5,2' job='ls -al'"
下一节讲介绍playbook模块
python自动化运维八:Ansible的更多相关文章
- 自动化运维之ansible
第三十九课 自动化运维之ansible 目录 十五. ansible介绍 十六. ansible安装 十七. ansible远程执行命令 十八. ansible拷贝文件或目录 十九. ansible远 ...
- 自动化运维工具ansible部署以及使用
测试环境master 192.168.16.74webserver1 192.168.16.70webserver2 192.168.16.72安装ansiblerpm -Uvh http://ftp ...
- 自动化运维工具Ansible详细部署 (转载)
自动化运维工具Ansible详细部署 标签:ansible 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://sofar.blog. ...
- CentOS7Linux中自动化运维工具Ansible的安装,以及通过模块批量管理多台主机
使用自动化运维工具Ansible集中化管理服务器 Ansible概述 Ansible是一款为类Unix系统开发的自由开源的配置和自动化工具.它用Python写成,类似于saltstack和Puppet ...
- 自动化运维工具Ansible介绍
一个由 Python 编写的强大的配置管理解决方案.尽管市面上已经有很多可供选择的配置管理解决方案,但他们各有优劣,而 ansible 的特点就在于它的简洁. 让 ansible 在主流的配置管理系统 ...
- 在CentOS7.6上安装自动化运维工具Ansible以及playbook案例实操
前言 Ansible是一款优秀的自动化IT运维工具,具有远程安装.远程部署应用.远程管理能力,支持Windows.Linux.Unix.macOS和大型机等多种操作系统. 下面就以CentOS 7.6 ...
- python自动化运维篇
1-1 Python运维-课程简介及基础 1-2 Python运维-自动化运维脚本编写 2-1 Python自动化运维-Ansible教程-Ansible介绍 2-2 Python自动化运维-Ansi ...
- 自动化运维工具Ansible
一.简介 当下有许多的运维自动化工具( 配置管理 ),例如:Ansible.SaltStack.Puppet.Fabric 等. Ansible 一种集成 IT 系统的配置管理.应用部署.执行特定任务 ...
- 自动化运维工具-Ansible基础
目录 自动化运维工具-Ansible基础 什么是Ansible 同类型软件对比 Ansible的功能及优点 Ansible的架构 Ansible的执行流程 安装Ansible ansible配置文件 ...
随机推荐
- shell - sed 简单使用记录
时间长不用,总是会忘掉的........还是烂笔头好些. sed 命令使用帮助及实操举例 功能:主要用来对一个或多个文件进行编辑,简化对文件的反复操作. 语法: sed [-hnV] [-e<s ...
- ASP.NET Core 中间件基本用法
ASP.NET Core 中间件 ASP.NET Core的处理流程是一个管道,而中间件是装配到管道中的用于处理请求和响应的组件.中间件按照装配的先后顺序执行,并决定是否进入下一个组件.中间件管道的处 ...
- spring boot原理分析
1.分析spring-boot-starter-parent <parent> <groupId>org.springframework.boot</groupId> ...
- DBCC
http://www.cnblogs.com/lyhabc/archive/2013/01/19/2867174.html http://www.cnblogs.com/lyhabc/articles ...
- Linux 嵌入式启动以及优化
转载:http://www.embeddedlinux.org.cn/html/jishuzixun/201312/19-2717.html 第一步: BootLoader -- U boot 1 ...
- Java使用QRCode.jar生成与解析二维码
原文V:http://www.cnblogs.com/bigroc/p/7496995.html#3797682 正题:Java使用QRCode.jar生成与解析二维码demo 欢迎新手共勉,大神监督 ...
- 谈Objective-C block的实现(转)
前言 这里有关于block的5道测试题,建议你阅读本文之前先做一下测试. 先介绍一下什么是闭包.在wikipedia上,闭包的定义)是: In programming languages, a clo ...
- 线程安全-一个VC下多个网络请求
一.线程安全变量控制显示隐藏loading框 问题描写叙述: 同一页面有两个异步网络请求,第一个请求開始,loading旋转.第二个请求開始loading旋转.第一个结束,loading停止旋转,但是 ...
- [zlib]_[0基础]_[使用Zlib完整解压zip内容]
场景: 1. 解压文件一般用在下载了一个zip文件之后解压,或者分析某个文件须要解压的操作上. 2. 解压文件,特别是解压带目录的zip文件往往系统没有提供这类Win32 API,当然C#自带库能解压 ...
- iOS开发 绘图详解
Quartz概述 Quartz是Mac OS X的Darwin核心之上的绘图层,有时候也认为是CoreGraphics.共有两种部分组成 Quartz Compositor,合成视窗系统,管理和合 ...