Ansible常用模块及API
Ansible安装
安装EPEL作为安装Ansible的yum源(CentOS6.4):
rpm -Uvh http://ftp.linux.ncsu.edu/pub/epel/6/i386/epel-release-6-8.noarch.rpm
安装Ansible:
yum install ansible -y
配置文件:
路径:/etc/ansible/hosts
配置说明:webservers为组名,下面的ip或域名则是属于该组的主机。
[webservers]
192.168.1.111
192.168.1.112
192.168.1.113
测试:
ansible webservers -m ping -k #对webservers组进行ping操作
由于主控端与被控主机未配置SSH证书信任,需要在执行ansible命令时添加-k参数,要求提供root(默认)账号密码。
配置SSH证书信任:
主控端:
生成密钥对:
ssh-keygen -t rsa #一路回车,在/root/.ssh/目录下会生成id_rsa(私钥)、id_rsa.pub(公钥)密钥对
将公钥发送的被控主机:
ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.1.111
常用模块
命令行调用模块格式:
ansible 操作目标 -m 模块名(默认模块为command) -a 模块参数 #例:
ansible webservers -m ping
帮助命令:
ansible-doc 模块名 #例:
ansible-doc ping
1、远程命令模块
command:执行远程shell命令
script:在被控端执行主控端上存放的脚本,相当于scp+shell
shell:执行存放在被控端上的脚本
例:
ansible webservers -m command -a 'df -h' #在被控端执行df -h命令
ansible webservers -m script -a '/root/test.sh' #在被控端执行test.sh脚本(test.sh脚本在主控端)
ansible webservers -m shell -a '/root/test.sh' #在被控端执行test.sh脚本(test.sh脚本在被控端)
2、copy模块
copy:从主控端向被控端拷贝文件,类似于scp功能
例:
ansible webservers -m copy -a 'src=/root/test.py dest=/tmp owner=root group=root mode=0755'
#将主控端的test.py文件拷贝到被控端的/tmp目录下,并且指定文件的属主和权限
3、stat模块
stat:获取远程文件状态信息,包括atime、ctime、mtime、md5、uid、gid等
例:
ansible webservers -m stat -a 'path=/etc/sysctl.conf' #获取被控端/etc/sysctl.conf文件状态信息
4、get_url模块
get_url:实现被控端下载指定URL,支持sha256sum校验
例:
ansible 192.168.1.111 -m get_url -a 'url=http://www.baidu.com dest=/tmp/index.html mode=0440 force=yes'
#被控端下载百度首页到/tmp/index.html中
5、软件操作模块(yum、apt)
yum/apt:linux平台软件包管理操作
例:
ansible 192.168.1.111 -m yum -a 'name=curl state=latest' #被控端使用yum安装最新的curl
ansible 192.168.1.111 -m apt -a 'pkg=curl state=latest' #被控端使用apt安装最新的curl
6、cron模块
cron:被控端cron配置
例:
ansible 192.168.1.111 -m cron -a "name='check dirs' hour='5,2' job='ls -alh > /dev/null'" #被控端cron结果: #Ansible: check dirs
* 5,2 * * * ls -alh > /dev/null
7、mount模块
mount:被控端分区挂载
例:
ansible 192.168.1.111 -m mount -a 'name=/mnt/data src=/dev/sd0 fstype=ext3 opts=ro state=present'
#将/dev/sd0挂载到/mnt/data,权限为ro
8、service模块
service:被控端系统服务管理
例:
ansible webservers -m service -a 'name=httpd state=stopped' #关闭httpd服务
ansible webservers -m service -a 'name=httpd state=restarted' #重启httpd服务
ansible webservers -m service -a 'name=httpd state=started' #启动httpd服务
9、sysctl包管理模块
sysctl:被控端sysctl配置
例:
ansible 192.168.1.111 -m sysctl -a 'name="net.ipv4.ip_forward" value=1 sysctl_set=yes state=present reload=yes'
#设置路由转发并生效
10、user服务模块
user:被控端系统用户管理
例:
ansible 192.168.1.111 -m user -a "name=johnd comment=Hohn Doe" #添加用户john
ansible 192.168.1.111 -m user -a "name=johnd state=absent remove=yes" #删除用户john
API调用方式
https://ansible-tran.readthedocs.io/en/latest/docs/developing_api.html
安装使用Ansible可能会出现的问题
http://blog.csdn.net/longxibendi/article/details/46989735
参考资料:
刘天斯《Python自动化运维技术与最佳实践》
Ansible常用模块及API的更多相关文章
- Func常用模块及API
Func常用模块及API Func提供了非常丰富的功能模块,包括: CommandModule(执行命令) CopyFileModule(拷贝文件) CpuModule(CPU信息) DiskModu ...
- ansible常用模块用法
ansible常用模块用法 2015-07-21 10:25 24458人阅读 评论(1) 收藏 举报 分类: Linux(44) ansible 版权声明:本文为博主原创文章,未经博主允许不得 ...
- Ansible常用模块介绍及使用(week5_day1_part2)--技术流ken
Ansible模块 在上一篇博客<Ansible基础认识及安装使用详解(一)--技术流ken>中以及简单的介绍了一下ansible的模块.ansible是基于模块工作的,所以我们必须掌握几 ...
- Ansible常用模块命令
Ansible常用模块命令 一.安装ansible yum install epel-release yum install ansible 二.配置文件配置 vi /etc/ansible/ansi ...
- Ansible常用模块介绍及使用(2)
Ansible模块 在上一篇博客<Ansible基础认识及安装使用详解(一)–技术流ken>中以及简单的介绍了一下ansible的模块.ansible是基于模块工作的,所以我们必须掌握几个 ...
- Saltstack常用模块及API
Saltstack提供了非常丰富的功能模块,涉及操作系统的基础功能.常用工具支持等,更多模块信息可以查看官网模块介绍.也可以通过sys模块列出当前版本支持的模块. salt '*' sys.list_ ...
- Func系列2:常用模块及API
简介 Func提供了非常丰富的功能模块,包括CommandModule(执行命令).CopyFileModule(拷贝文件).CPUModule(CPU信息).DiskModule(磁盘信息).Fil ...
- Saltstack系列3:Saltstack常用模块及API
说明 salt '*' sys.list_modules #列出当前版本支持的模块 API原理是通过调用master client模块,实例化一个LocalClient对象,再调用cmd()方法来实现 ...
- ansible常用模块入门
常用模块有以下几个 command copy shell crond yum service setup 1.command模块 ansible george -m command -a " ...
随机推荐
- python 的一些小技巧
赋值: a, b, c = 'xixi', 'haha', 'hehe' 连接字典: >>> s = {1:'a', 2:'b', 3:'c'} >>> s.key ...
- 新浪代码部署手册 git管理工具
目前新浪云上的应用支持通过Git和SVN来部署代码. Git仓库地址 https://git.sinacloud.com/YOUR_APP_NAME SVN仓库地址 https://svn.sinac ...
- 简单三步-实现dede站内搜索功能
第一步:找到对应的搜索模板的代码 我们都知道,dede有自带的搜索功能,我们只要找到对应的模板,然后把我们想要的代码拿出来就行了.具体如下: 首先进入templets-->default--&g ...
- 越狱Season 1-Episode 7: Riots, Drills and the Devil: Part 2
Season 1, Episode 7: Riots, Drills and the Devil: Part 2 -Pope: Belick, get those guys in line guy: ...
- 【NOIP2007】矩阵取数
因为傻逼写错高精度搞了一下午浪费好多时间,好想哭qaq 原题: 帅帅经常更同学玩一个矩阵取数游戏:对于一个给定的n*m的矩阵,矩阵中的每个元素aij据为非负整数.游戏规则如下: 1. 每次取数时须从每 ...
- Linux平台下利用系统接口函数按照行读写文件
要求:支持大文件(1M)一次性读入 源代码如下: #include<stdio.h> #include<fcntl.h> #include<stdlib.h> #i ...
- javascript输出图的简单路径
<script> //图的构建 function vnode() { this.visited=0; this.vertex=0; this.arcs=new Array(); } fun ...
- JVMInternals
http://blog.jamesdbloom.com/JVMInternals.html http://blog.jamesdbloom.com/JavaCodeToByteCode_PartOne ...
- DNS与DSN
dns是域名系统的缩写 dsn在一些专业书籍中是数据源的缩写
- firework便捷截LOGO
1.魔术棒选空白部分 2.按delete键 3.符合画布