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

  1. Func常用模块及API

    Func常用模块及API Func提供了非常丰富的功能模块,包括: CommandModule(执行命令) CopyFileModule(拷贝文件) CpuModule(CPU信息) DiskModu ...

  2. ansible常用模块用法

    ansible常用模块用法 2015-07-21 10:25 24458人阅读 评论(1) 收藏 举报  分类: Linux(44)   ansible 版权声明:本文为博主原创文章,未经博主允许不得 ...

  3. Ansible常用模块介绍及使用(week5_day1_part2)--技术流ken

    Ansible模块 在上一篇博客<Ansible基础认识及安装使用详解(一)--技术流ken>中以及简单的介绍了一下ansible的模块.ansible是基于模块工作的,所以我们必须掌握几 ...

  4. Ansible常用模块命令

    Ansible常用模块命令 一.安装ansible yum install epel-release yum install ansible 二.配置文件配置 vi /etc/ansible/ansi ...

  5. Ansible常用模块介绍及使用(2)

    Ansible模块 在上一篇博客<Ansible基础认识及安装使用详解(一)–技术流ken>中以及简单的介绍了一下ansible的模块.ansible是基于模块工作的,所以我们必须掌握几个 ...

  6. Saltstack常用模块及API

    Saltstack提供了非常丰富的功能模块,涉及操作系统的基础功能.常用工具支持等,更多模块信息可以查看官网模块介绍.也可以通过sys模块列出当前版本支持的模块. salt '*' sys.list_ ...

  7. Func系列2:常用模块及API

    简介 Func提供了非常丰富的功能模块,包括CommandModule(执行命令).CopyFileModule(拷贝文件).CPUModule(CPU信息).DiskModule(磁盘信息).Fil ...

  8. Saltstack系列3:Saltstack常用模块及API

    说明 salt '*' sys.list_modules #列出当前版本支持的模块 API原理是通过调用master client模块,实例化一个LocalClient对象,再调用cmd()方法来实现 ...

  9. ansible常用模块入门

    常用模块有以下几个 command copy shell crond yum service setup 1.command模块 ansible george -m command -a " ...

随机推荐

  1. Linux发行分支时间轴

    官网:http://futurist.se/gldt/ 全图png:http://futurist.se/gldt/wp-content/uploads/12.10/gldt1210.png 全图sv ...

  2. Binary Tree Traversal

    1.Preorder Traversal Given a binary tree, return the preorder traversal of its nodes' values. For ex ...

  3. Notes of Principles of Parallel Programming - TODO

    0.1 TopicNotes of Lin C., Snyder L.. Principles of Parallel Programming. Beijing: China Machine Pres ...

  4. Apache CXF 101 Win Eclipse开发环境搭建

    前言 博客草稿中“SOA生态系统初探”一文一直没有进展,感觉要将SOA.Web Service(WS).REST等概念阐述清楚还需要一些酝酿. 顶天须得立地,这里记录一些“下里巴人”的实践,主要考察A ...

  5. wordpress(一)wordpress环境的搭建

    搭建wordpress环境因为自动安装的脚本不提供创建数据库的功能,所以先要创建数据库. 1.使用如下命令创建数据库(都是在已经登陆的mysql界面中的命令) ①CREATE DATABASE 数据库 ...

  6. php文件复制

    <?php $dirname="shangchuan"; copydir($dirname."/uploads", $dirname."/hel ...

  7. 越狱Season 1- Episode 16

    Season 1, Episode 16 -Burrows:Don't be. It's not your fault. 不要,不是你的错 -Fernando: Know what I like? 知 ...

  8. input、select等表单元素的对齐问题

    今天在写页面时,发现了一个问题,当INPUT.SELECT及用图片做的button放在一起(并排放一起)时,没法子对齐,自己以不愿再加其他代码.也不愿使用JS来实现图片button的效果,试好半天,发 ...

  9. ExtJS控件样式修改及美化

    Extjs项目对富客户端开发提供了强有力的支持,甚至改变了前端的开发方式,使得开发变得更加趋向于“面向组件”.对界面的美化而言,也是根本性的改变.普通的网页美工面对extjs项目根本无法下手,需要脚本 ...

  10. 网络-CIDR地址分类介绍

    CIDR(Classless Inter Domain Routing)改进了传统的IPv4地址分类.传统的IP分类将IP地址直接对应为默认的分类,从而将Internet分割为网络.CIDR在路由表中 ...