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的更多相关文章

  1. 自动化运维之ansible

    第三十九课 自动化运维之ansible 目录 十五. ansible介绍 十六. ansible安装 十七. ansible远程执行命令 十八. ansible拷贝文件或目录 十九. ansible远 ...

  2. 自动化运维工具ansible部署以及使用

    测试环境master 192.168.16.74webserver1 192.168.16.70webserver2 192.168.16.72安装ansiblerpm -Uvh http://ftp ...

  3. 自动化运维工具Ansible详细部署 (转载)

    自动化运维工具Ansible详细部署 标签:ansible 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://sofar.blog. ...

  4. CentOS7Linux中自动化运维工具Ansible的安装,以及通过模块批量管理多台主机

    使用自动化运维工具Ansible集中化管理服务器 Ansible概述 Ansible是一款为类Unix系统开发的自由开源的配置和自动化工具.它用Python写成,类似于saltstack和Puppet ...

  5. 自动化运维工具Ansible介绍

    一个由 Python 编写的强大的配置管理解决方案.尽管市面上已经有很多可供选择的配置管理解决方案,但他们各有优劣,而 ansible 的特点就在于它的简洁. 让 ansible 在主流的配置管理系统 ...

  6. 在CentOS7.6上安装自动化运维工具Ansible以及playbook案例实操

    前言 Ansible是一款优秀的自动化IT运维工具,具有远程安装.远程部署应用.远程管理能力,支持Windows.Linux.Unix.macOS和大型机等多种操作系统. 下面就以CentOS 7.6 ...

  7. python自动化运维篇

    1-1 Python运维-课程简介及基础 1-2 Python运维-自动化运维脚本编写 2-1 Python自动化运维-Ansible教程-Ansible介绍 2-2 Python自动化运维-Ansi ...

  8. 自动化运维工具Ansible

    一.简介 当下有许多的运维自动化工具( 配置管理 ),例如:Ansible.SaltStack.Puppet.Fabric 等. Ansible 一种集成 IT 系统的配置管理.应用部署.执行特定任务 ...

  9. 自动化运维工具-Ansible基础

    目录 自动化运维工具-Ansible基础 什么是Ansible 同类型软件对比 Ansible的功能及优点 Ansible的架构 Ansible的执行流程 安装Ansible ansible配置文件 ...

随机推荐

  1. C语言处理json字符串

    JSON语法说明 先来看一个简单的JSON 1 { 2 "stars": [ 3 { 4 "name": "Faye", 5 "a ...

  2. 浅谈DPCHookSSDT和RemoveDPC

    最近学了DPC这一对,把Win7 32位和64位都做了,查阅了大量的资料,并且进行了大量调试,理一下思路,为了后面更好的学习. 转载请注明出处:http://www.cnblogs.com/littl ...

  3. Spring Cloud服务的注册与发现

    Spring Cloud简介: Spring Cloud为开发人员提供了快速构建分布式系统中的一些通用模式(例如配置管理,服务发现,断路器,智能路由,微代理,控制总线,一次性令牌,全局锁,领导选举,分 ...

  4. [simple-orm-mybaits]基于Mybatis的ORM封装介绍

    目录 前言 ORM框架现状 Mybatis优缺点 simple-orm-mybatis设计思路介绍 simple-orm-mybatis使用说明 simple-orm-mybatis实际使用 推荐最佳 ...

  5. Concurrency and Application Design (三)

    Operation Queues operation object是 NSOperation class实例用来封装想要执行的任务.nsoperation class是抽象类必须子类化. NSInvo ...

  6. 使用sqlalchemy查询并删除数据表的唯一性索引

    简单描述表结构,字段类型 desc tabl_name 删除索引:alter table `db`.`table_name` drop index `index_name`  注意里面的特殊符号: ` ...

  7. erlang 小程序:整数序列,搜索和为正的最长子序列

    近期学习了一下erlang, 编了个小程序 算法例如以下: 把參数分为三个 当前位置的前子序列(Save)(比方 -5, 1,2,-1, _, ... ) 当前位置为_时, 前子序列就是 1,2,-1 ...

  8. C++错误——”无法启动程序”…\xxx.exe” 系统找不到指定的文件”

    背景 在VS2010环境下,升级了一个用C++编写的程序,编译生成成功,但是,不能在VS中直接运行(可以通过打开debug文件目录的exe应用程序运行),提示以下错误:”无法启动程序”…\xxx.ex ...

  9. (二)MVVMLight 关联View和ViewModel

    在我们按照(一)中的步骤,安装好MMVLight的环境后, 会多出一个文件夹ViewModel,里面有两个.cs文件MainViewModel.cs和ViewModelLocator.cs MainV ...

  10. (updated on Mar 1th)Programming Mobile Applications for Android Handheld Systems by Dr. Adam Porter

    本作品由Man_华创作,采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可.基于http://www.cnblogs.com/manhua/上的作品创作. Lab - Inte ...