【简单介绍】

Ansible是一种agentless(基于ssh),可实现批量配置、命令执行和控制,基于Python实现的自动化运维工具。

有以下两个特性:

  1. 模块化:通过调用相关模块,完成指定任务,且支持任何语言编写的自定义模块
  2. playbook:剧本,可根据需要一次执行完剧本中的所有任务或某些任务

本次主要介绍ansible的基本模块。

【command】

在远程主机上执行命令。

不加 -m 选项的时候,默认执行command

相关参数:

chdir

在此目录下执行命令

creates

指定文件存在时,不执行

removes

指定文件不存在时,不执行

示例:

ansible host1 -m command -a "ls"

ansible host1 -m command -a "chdir=/testdir ls"

【setup】

收集远程主机的一些基本信息。

相关参数:

filter

条件过滤

示例:

# 获取主机的ipv4信息

ansible host1 -m setup -a "filter=ansible_all_ipv4_addresses"

# 获取主机内存信息

ansible host1 -m setup -a "filter=ansible_memory_mb"
# 也可以使用通配符

ansible host1 -m setup -a "filter=*mb"

其他信息:

ansible_all_ipv4_addresses

显示ipv4的信息

ansible_devices

显示磁盘设备信息

ansible_distribution

显示是什么系统,例centos,suse等

ansible_distribution_major_version

显示是系统主版本

ansible_distribution_version

显示系统版本

ansible_machine

位,还是64位

ansible_eth0

显示eth0的信息

ansible_hostname

显示主机名

ansible_kernel

显示内核版本

ansible_lvm

显示lvm相关信息

ansible_memtotal_mb

显示系统总内存

ansible_memfree_mb

显示可用系统内存

ansible_memory_mb

详细显示内存情况

ansible_swaptotal_mb

显示总的swap内存

ansible_swapfree_mb

显示swap内存的可用内存

ansible_mounts

显示系统磁盘挂载情况

ansible_processor

显示cpu个数(具体显示每个cpu的型号)

ansible_processor_vcpus

显示cpu个数(只显示总的个数)

【shell】

让远程主机在shell进程下执行命令,可支持shell的特性(如管道等)。

参数与command相同,不做赘述。

示例:

ansible host1 -m shell -a "chdir=/testdir cat test"
ansible all -m shell -a "echo "test" | passwd --stdin test1"

【copy】

把本地文件复制到远程主机上。

相关参数:

dest

必选。远端路径,可以是文件/目录。

src

与content其一必选。源文件/目录,如果以"/"结尾,复制内容,否则,复制包括目录在内的所有内容。

content

与src其一必选。直接设定目的文件的值,此时dest必须是文件。

backup

覆盖之前备份源文件。yes/no

directory_mode

递归设定目标目录的权限。

follow

支持link文件复制

force

覆盖远程主机不一致的内容

group

设定远程主机目录的组名

mode

设定远程主机文件及目录的权限

owner

设定远程主机目录的用户名

示例:

ansible host1 -m copy -a 'src=/etc/passwd dest=/tmp mode=755 owner=root'

ansible host1 -m copy -a 'content="HELLO" dest=/tmp mode=755 owner=root'

【file】

设置文件属性

相关参数:

path

必选。用于指定要操作的文件或者目录。

state

属性。此参数需灵活使用,后面会介绍

src

当state设置为link或者hard的时候,此参数为链接文件的源文件。

dest

当state设置为link或者hard的时候,此参数为链接文件路径。

force

当state为link的时候,force设置为yes,则就算文件不存在,依旧创建链接文件。

group

同上

mode

同上

owner

同上

recurse

被操作的文件为目录,将其设置为yes,可递归修改属性。

示例:

ansible host1 -m file -a "path=/test owner=test group=test mode=0644"

ansible host1 -m file -a "src=/test dest=/testlink owner=root group=root state=link"

ansible ansible-demo3 -m file -a "path=/test state=touch"

state:

directory

目录。不存在则创建

touch

文件。不存在则创建

file

文件。不存在则跳过

link

创建软连接

hard

创建硬链接

absent

删除目录,文件或者取消链接

【cron】

计划定时执行任务

相关参数:

minute、hour、day、month、weekday

计划时间,默认为*

name

必选。任务描述

job

任务。要加引号

state

present - 创建
adsent - 删除

示例:

ansible host1 -m cron -a " name='crontab test' minute=5 hour=1 job='echo test' "

ansible host1 -m cron -a " name='crontab day test' minute=1 hour=1 day=*/3 job='echo test'

【yum】

管理安装相关程序包

相关参数:

name

程序包名称,可带版本号

state

present、installed/present、latest(最新)、removed/absent

enablerepo

指定安装软件包时临时启用的 yum 源

disablerepo

指定安装软件包时临时禁用的 yum 源

disable_gpg_check

禁用对 rpm 包的公钥 gpg 验证

示例:

ansible host1 -m yum -a 'name=nginx state=installed disable_gpg_check=yes'

【service】

管理服务

相关参数:

name

服务名称

state

started、stopped、restarted

enable

true、false

runlevel

运行级别

示例:

ansible host1 -m service -a "name=nginx state=started enabled=yes"

【group】

管理用户组模块

相关参数:

name

组名称

gid

指定组的GID

state

present、absent

system

yes、no

示例:

ansible host1 -m group -a "name=test_grp state=present"

【user】

管理用户模块

相关参数:

name

用户名

password

为用户设置登陆密码,此密码是明文密码加密后的密码

update_password

always -> 只有当密码不相同时才会更新密码(默认)
on_create -> 只为新用户设置密码

shell

用户的shell设定

groups

用户组设定

home

指定用户的家目录

state

present/absent

append

yes -> 增量添加group

no -> 全量变更group,只设置groups指定的group组(默认)

remove

配合state=absent使用,删除用户的家目录 -> remove=yes

expires

设置用户的过期时间,值是一个时间戳

示例:

ansible host1 -m user -a "name=test2 state=present groups=test2,test_grp shell=/bin/bash append=yes"

ansible模块详解的更多相关文章

  1. Ansible安装部署及常用模块详解

    Ansible命令使用 Ansible语法使用ansible <pattern_goes_here> -m <module_name> -a <arguments> ...

  2. ansible中常用模块详解

    ansible中常用的模块详解: file模块 ansible内置的可以查看模块用法的命令如下: [root@docker5 ~]# ansible-doc -s file - name: Sets ...

  3. Python中操作mysql的pymysql模块详解

    Python中操作mysql的pymysql模块详解 前言 pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb几乎相同.但目前pymysql支持python3.x而后者不支持 ...

  4. python之OS模块详解

    python之OS模块详解 ^_^,步入第二个模块世界----->OS 常见函数列表 os.sep:取代操作系统特定的路径分隔符 os.name:指示你正在使用的工作平台.比如对于Windows ...

  5. python之sys模块详解

    python之sys模块详解 sys模块功能多,我们这里介绍一些比较实用的功能,相信你会喜欢的,和我一起走进python的模块吧! sys模块的常见函数列表 sys.argv: 实现从程序外部向程序传 ...

  6. python中threading模块详解(一)

    python中threading模块详解(一) 来源 http://blog.chinaunix.net/uid-27571599-id-3484048.html threading提供了一个比thr ...

  7. python time 模块详解

    Python中time模块详解 发表于2011年5月5日 12:58 a.m.    位于分类我爱Python 在平常的代码中,我们常常需要与时间打交道.在Python中,与时间处理有关的模块就包括: ...

  8. python time模块详解

    python time模块详解 转自:http://blog.csdn.net/kiki113/article/details/4033017 python 的内嵌time模板翻译及说明  一.简介 ...

  9. 小白的Python之路 day5 time,datatime模块详解

    一.模块的分类 可以分成三大类: 1.标准库 2.开源模块 3.自定义模块 二.标准库模块详解 1.time与datetime 在Python中,通常有这几种方式来表示时间:1)时间戳 2)格式化的时 ...

随机推荐

  1. 疯子的算法总结(九) 图论中的矩阵应用 Part 1+POJ3613 Cow Relays

    图的存储有邻接矩阵,那么他就具备一些矩阵的性质,设有一个图的demo[100][100];那么demo[M][N]就是M—>N的距离,若经过一次松弛操作demo[M][N]=demo[M][K] ...

  2. Java——Java代码的执行顺序

    该系列博文会告诉你如何从入门到进阶,一步步地学习Java基础知识,并上手进行实战,接着了解每个Java知识点背后的实现原理,更完整地了解整个Java技术体系,形成自己的知识框架. 一.构造方法 构造方 ...

  3. Hadoop入门学习笔记-第二天 (HDFS:NodeName高可用集群配置)

    说明:hdfs:nn单点故障,压力过大,内存受限,扩展受阻.hdfs ha :主备切换方式解决单点故障hdfs Federation联邦:解决鸭梨过大.支持水平扩展,每个nn分管一部分目录,所有nn共 ...

  4. 记忆化搜索 E - Loppinha, the boy who likes sopinha Gym - 101875E

    E - Loppinha, the boy who likes sopinha Gym - 101875E 这个题目是一个dp,这个应该很容易看出来,但是对于状态的定义其实有点难去想, 看了题解dp[ ...

  5. Redis实现分布式锁(设计模式应用实战)

    笔者看过网络上各种各样使用redis实现分布式锁的代码,要么错误,要么片段化,没有一个完整的例子,借这个周末给大家总结一下redis实现分布式锁的两种机制 自旋锁和排他锁 鉴于实现锁的方式不同,那么这 ...

  6. 设计模式之GOF23访问者模式

    访问者模式Visitor 模式动机:对于存储在一个集合中的对象,他们可能具有不同的类型(即使有一个公共的接口),对于该集合中的对象,可以接受一类称为访问者的对象来访问,不同访问者的访问方式也不同 定义 ...

  7. [hdu5448 Marisa’s Cake]多边形面积,公式化简

    题意:给一个凸多边形,求任选若干点形成的多边形的面积和. 思路: 按一定方向(顺时针或逆时针)对多边形的顶点进行编号,则多边形的面积计算公式为:f1 x f2 + f2 x f3 + ... fn-1 ...

  8. [UVA Live 12931 Common Area]扫描线

    题意:判断两个多边形是否有面积大于0的公共部分 思路:扫描线基础. #pragma comment(linker, "/STACK:10240000") #include < ...

  9. [BC冠军赛(online)]小结

    A Movie 题意:给你n个区间,判断能否选出3个不相交的区间. 思路:令f(i)表示能否选出两个不相交区间并且以区间i为右区间的值,g(i)表示能否选出两个不相交区间并且以区间i为左区间的值,如果 ...

  10. [hdu5164]ac自动机

    中文题目:http://bestcoder.hdu.edu.cn/contests/contest_chineseproblem.php?cid=563&pid=1003 首先贴一下bc的题解 ...