ansible生产十大模块详解

前面一个章节写了关于ansible的工作过程,和ansible的安装。这张来记录下ansible常用的模块。这篇文章是我2015年写的,内容可能有些出入。欢迎朋友们指正。
关于ansible的安装请参考文章:ansible安装配置详解
好的文档推荐:ansible中文权威指南
模块一:测试目标主机是否在线:ping模块

ansible的ping模块 模块二:command模块和shell
作用:用于在各被管理节点运行指定的命令
ansible的command和shell模块假设我们这里面看到时间不一致,我们来管理他们时间一致
ansible的command和shell模块修改时间
再次创建一个目录,

ansible创建目录注意:这里面使用shell而不使用command的原因是,shell模块可以支持特殊字符,也就是说shell是更为广泛的命令管理模块。而commnd,是不支持的。
模块三:user模块:管理用户的模块
比如:都创建一个叫小明的用户,家目录为/home/xiaoming ,基本组为xiaoming ,附加组为class
shell类型为/bin/bash, 注释信息为xiaoming ,密码是xiaoming .状态是是存在。

ansible创建用户
模块四:任务计划模块:cron
cron包含如下选项:
backup:对远程主机上的原任务计划内容修改之前做备份
cron_file:如果指定该选项,则用该文件替换远程主机上的cron.d目录下的用户的任务计划
day:日(1-31,*,*/2,……)
hour:小时(0-23,*,*/2,……)
minute:分钟(0-59,*,*/2,……)
month:月(1-12,*,*/2,……)
weekday:周(0-7,*,……)
job:要执行的任务,依赖于state=present
name:该任务的描述
special_time:指定什么时候执行,包括:reboot,yearly,annually,monthly,weekly,daily,hourly
state:确认该任务计划是创建还是删除
user:以哪个用户的身份执行
[root@localhost ~ ]# ansible-doc -s cron #查看模块帮助
例如:我们要求每周五晚上的凌晨02:00完整备份MySQL数据

注意:1,这里面的格式要求,如果是前面的存在,后面的可以是省略的
例如: minute="*/3" job="/bin/ls tmp" name="haha"
但是:如果是中间有间隔的时间,我们尽量保持key=value的格式。,
2,name这个描述标签必须给出。
ansible的cron模块 模块五:远程备份模块:copy
这个模块可以用于我们把数据远程备份到多个其他节点。
copy模块包含如下选项:
backup:在覆盖之前将原文件备份,备份文件包含时间信息。有两个选项:yes|no
content:用于替代"src",可以直接设定指定文件的值
dest:必选项。要将源文件复制到的远程主机的绝对路径,如果源文件是一个目录,那么该路径也必须是个目录
directory_mode:递归的设定目录的权限,默认为系统默认权限
force:如果目标主机包含该文件,但内容不同,如果设置为yes,则强制覆盖,如果为no,则只有当目标主机的目标位置不存在该文件时,才复制。默认为yes
others:所有的file模块里的选项都可以在这里使用
src:要复制到远程主机的文件在本地的地址,可以是绝对路径,也可以是相对路径。如果路径是一个目录,它将递归复制。在这种情况下,如果路径使用"/"来结尾,则只复制目录里的内容,如果没有使用"/"来结尾,则包含目录在内的整个内容全部复制,类似于rsync。
假设,我们把我们的二进制文件,备份到远程主机。但是,我这用/etc/fstab代替
owner:还可以指定属主
Mode:指定文件传过去的权限。
dest="path/to/" #这是我们远程节点用于存储的目录
src="path/from" # 这是我们的本地文件的位置
[root@localhost ansible ]# ansible-doc -s copy #查看帮助
[root@localhost ansible ]# ansible all -m copy -a 'dest=/mybackup src=/etc/fstab mode=644 owner="mysql"'
ansible的模块copy 模块六:对远程文件管理的模块:file
file模块主要用于远程主机上的文件操作,file模块包含如下选项:
force:需要在两种情况下强制创建软链接,一种是源文件不存在但之后会建立的情况下;另一种是目标软链接已存在,需要先取消之前的软链,然后创建新的软链,有两个选项:yes|no
group:定义文件/目录的属组
mode:定义文件/目录的权限
owner:定义文件/目录的属主
path:必选项,定义文件/目录的路径
recurse:递归的设置文件的属性,只对目录有效
src:要被链接的源文件的路径,只应用于state=link的情况
dest:被链接到的路径,只应用于state=link的情况
state: directory:如果目录不存在,创建目录
file:即使文件不存在,也不会被创建
link:创建软链接
hard:创建硬链接
touch:如果文件不存在,则会创建一个新的文件,如果文件或目录已存在,则更新其最后修改时间
absent:删除目录、文件或者取消链接文件

ansible常用模块script
模块八setup模块
收集可用的facts,收集每个节点的相关信息:架构信息,IP,时间,域名,网卡,MAC,主机名,CPU等信息。
这些收集的信息,可以作为变量。

ansible的setup模块 第九个模块yum 模块
注意;这里面的state,是目标状态。Install 和present,是同一个意思。

第十个模块:service
主要是管理服务的启动和管理,重点是给定的状态
该模块包含如下选项:
arguments:给命令行提供一些选项
enabled:是否开机启动 yes|no
name:必选项,服务名称
pattern:定义一个模式,如果通过status指令来查看服务的状态时,没有响应,就会通过ps指令在进程中根据该模式进行查找,如果匹配到,则认为该服务依然在运行
runlevel:运行级别
sleep:如果执行了restarted,在则stop和start之间沉睡几秒钟
state:对当前服务执行启动,停止、重启、重新加载等操作(started,stopped,restarted,reloaded)
[root@localhost ansible ]# ansible-doc -s service
[root@localhost ansible ]# ansible all -m service -a 'name="httpd" enabled=1 state=started'
ansible的service模块
现在ansible的常用模块暂时,就写这么多。后面如果是还有什么好的模块,会继续补充。

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: