自动化运维工具Ansible实战(四)常用模块

简介:

    Ansible模块按功能分为:云模块、集群模块、 命令模块、数据库模块、文件模块、资产模块、消息模块、监控模块、网络模块、通知模块、包管理模块、源码控制模块、系统模块、单元模块、web设施模块、windows模块 具体的可以参考官网(http://docs.ansible.com/ansible/latest/list_of_all_modules.html)。这里从官方分类的模块里选择最常用的一些模块进行介绍。

1,ping模块。测试主机是否是通的

1
2
3
4
5
6
7
8
9
[root@Monitor ansible] # ansible web1 -m ping
Server5 | SUCCESS => {
     "changed" false
     "ping" "pong"
}
Server6 | SUCCESS => {
     "changed" false
     "ping" "pong"
}

2,远程命令模块

1
2
3
ansible webserver -m  command  -a  "free -m"   #远程命令。
ansible webserver -m script -a  "/home/test.sh"  #远程主机执行主控服务器ansible上的脚本
ansible webserver -m shell -a  "/home/test.sh"    #执行远程主机上的脚本命令

3,setup模块。主要用于获取主机信息,在playbooks里经常会用到的一个参数,gather_facts就与该模块相关。setup模块下经常使用的一个参数是filter参数

1
2
3
ansible 10.212.52.252 -m setup -a  'filter=ansible_*_mb'    // 查看主机内存信息
ansible 10.212.52.252 -m setup -a  'filter=ansible_eth[0-2]'    // 查看地接口为eth0-2的网卡信息
ansible all -m setup --tree  /tmp/facts    // 将所有主机的信息输入到 /tmp/facts 目录下,每台主机的信息输入到主机名文件中( /etc/ansible/hosts 里的主机名)

4,stat模块。获取远程文件状态信息,包括atime、ctime、mtime、MD5、uid、gid等信息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
[root@Monitor ansible] # ansible 192.168.180.5 -m stat -a "path=/etc/sysctl.conf 
"
192.168.180.5 | SUCCESS => {
     "changed" false
     "stat" : {
         "atime" : 1504513902.6297896, 
         "checksum" "a27c7ce2e6002c37f3cb537ad997c6da7fd76480"
         "ctime" : 1480926522.4591811, 
         "dev" : 64768, 
         "executable" false
         "exists" true
         "gid" : 0, 
         "gr_name" "root"
         "inode" : 393634, 
         "isblk" false
         "ischr" false
         "isdir" false
         "isfifo" false
         "isgid" false
         "islnk" false
         "isreg" true
         "issock" false
         "isuid" false
         "md5" "c97839af771c8447b9fc23090b4e8d0f"
         "mode" "0644"
         "mtime" : 1361531931.0, 
         "nlink" : 1, 
         "path" "/etc/sysctl.conf"
         "pw_name" "root"
         "readable" true
         "rgrp" true
         "roth" true
         "rusr" true
         "size" : 1150, 
         "uid" : 0, 
         "wgrp" false
         "woth" false
         "writeable" true
         "wusr" true
         "xgrp" false
         "xoth" false
         "xusr" false
     }
}

5,file模块。file模块主要用于远程主机上的文件操作,file模块包含如下选项: 

force:需要在两种情况下强制创建软链接,一种是源文件不存在但之后会建立的情况下;另一种是目标软链接已存在,需要先取消之前的软链,然后创建新的软链,有两个选项:yes|no 

  • group:定义文件/目录的属组 

  • mode:定义文件/目录的权限

  • owner:定义文件/目录的属主

  • path:必选项,定义文件/目录的路径

  • recurse:递归的设置文件的属性,只对目录有效

  • src:要被链接的源文件的路径,只应用于state=link的情况

  • dest:被链接到的路径,只应用于state=link的情况 

  • state:    

  • directory:如果目录不存在,创建目录

  • file:即使文件不存在,也不会被创建

  • link:创建软链接

  • hard:创建硬链接

  • touch:如果文件不存在,则会创建一个新的文件,如果文件或目录已存在,则更新其最后修改时间

  • absent:删除目录、文件或者取消链接文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
[root@Monitor ansible] # ansible 192.168.180.6 -m file -a "src=/etc/fstab dest=/
tmp /fstab  state=link"                          ########在远程主机180.6上创建远程软连接
192.168.180.6 | SUCCESS => {
     "changed" true
     "dest" "/tmp/fstab"
     "gid" : 0, 
     "group" "root"
     "mode" "0777"
     "owner" "root"
     "size" : 10, 
     "src" "/etc/fstab"
     "state" "link"
     "uid" : 0
}
[root@Monitor ansible] # ansible 192.168.180.6 -m file -a "path=/tmp/test state=
touch "                                  ############在远程主机180.6上创建test文件
192.168.180.6 | SUCCESS => {
     "changed" true
     "dest" "/tmp/test"
     "gid" : 0, 
     "group" "root"
     "mode" "0644"
     "owner" "root"
     "size" : 5, 
     "state" "file"
     "uid" : 0
}
[root@Monitor ansible] # ansible 192.168.180.6 -m file -a "path=/tmp/test state=
absent"                                 #############在远程主机删除文件
192.168.180.6 | SUCCESS => {
     "changed" true
     "path" "/tmp/test"
     "state" "absent"
}
[root@Monitor ansible] # ansible 192.168.180.6 -m file -a "path=/tmp/fstab state
=absent"                                             #############在远程主机删除fstab软连接
192.168.180.6 | SUCCESS => {
     "changed" true
     "path" "/tmp/fstab"
     "state" "absent"
}

6,copy模块。实现复制文件到远程主机,copy模块包含如下选项:

  • backup:在覆盖之前将原文件备份,备份文件包含时间信息。有两个选项:yes|no 

  • content:用于替代"src",可以直接设定指定文件的值 

  • dest:必选项。要将源文件复制到的远程主机的绝对路径,如果源文件是一个目录,那么该路径也必须是个目录 

  • directory_mode:递归的设定目录的权限,默认为系统默认权限

  • force:如果目标主机包含该文件,但内容不同,如果设置为yes,则强制覆盖,如果为no,则只有当目标主机的目标位置不存在该文件时,才复制。默认为yes

  • others:所有的file模块里的选项都可以在这里使用

  • src:要复制到远程主机的文件在本地的地址,可以是绝对路径,也可以是相对路径。如果路径是一个目录,它将递归复制。在这种情况下,如果路径使用"/"来结尾,则只复制目录里的内容,如果没有使用"/"来结尾,则包含目录在内的整个内容全部复制,类似于rsync。 

以下的例子试下拷贝/etc/ansible/script.sh文件到主机组web1所有的主机/tmp下并更新文件属主和权限

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[root@Monitor ansible] # ansible web1 -m copy -a "src=/etc/ansible/script.sh des
t= /tmp/  owner=appuser group=appuser mode=0755"       ###复制本地脚本到远程主机server6下并定义用户和组以及权限755
Server6 | SUCCESS => {
     "changed" true
     "checksum" "18ca258e92141948010f2e0896cf655cdb945a1d"
     "dest" "/tmp/script.sh"
     "gid" : 500, 
     "group" "appuser"
     "md5sum" "d5e15b2da056fdd7b7ba30100035de2e"
     "mode" "0755"
     "owner" "appuser"
     "size" : 30, 
     "src" "/root/.ansible/tmp/ansible-tmp-1504517543.07-102988847745614/source"
     "state" "file"
     "uid" : 500
}

7,service模块。用于远程主机的服务管理。该模块包含如下选项: 

  • arguments:给命令行提供一些选项 

  • enabled:是否开机启动 yes|no

  • name:必选项,服务名称 

  • pattern:定义一个模式,如果通过status指令来查看服务的状态时,没有响应,就会通过ps指令在进程中根据该模式进行查找,如果匹配到,则认为该服务依然在运行

  • runlevel:运行级别

  • sleep:如果执行了restarted,在则stop和start之间沉睡几秒钟

本文转自 lqbyz 51CTO博客,原文链接:http://blog.51cto.com/liqingbiao/1962609
相关文章
|
3月前
|
人工智能 运维 监控
运维也能“先演练后实战”?聊聊数字孪生的那些神操作
运维也能“先演练后实战”?聊聊数字孪生的那些神操作
101 0
|
4月前
|
缓存 运维 安全
7天精通电商API:从接入到运维的完整实战手册
本文全面解析电商API接口技术,从基础概念到高阶应用,涵盖商品、订单、支付与营销等核心模块,并深入探讨性能优化、安全防护与智能化发展方向,助你掌握驱动数字商业的核心技术。
|
1月前
|
数据采集 运维 监控
爬虫与自动化技术深度解析:从数据采集到智能运维的完整实战指南
本文系统解析爬虫与自动化核心技术,涵盖HTTP请求、数据解析、分布式架构及反爬策略,结合Scrapy、Selenium等框架实战,助力构建高效、稳定、合规的数据采集系统。
爬虫与自动化技术深度解析:从数据采集到智能运维的完整实战指南
|
1月前
|
人工智能 运维 监控
运维安全还能靠“人盯人”?别闹了,聊聊自动化处理的真功夫
运维安全还能靠“人盯人”?别闹了,聊聊自动化处理的真功夫
118 17
|
6月前
|
数据采集 机器学习/深度学习 人工智能
运维人的“福音”?AI 驱动的自动化网络监控到底香不香!
运维人的“福音”?AI 驱动的自动化网络监控到底香不香!
576 0
|
3月前
|
人工智能 运维 安全
运维老哥的救星?AI 驱动的自动化配置管理新趋势
运维老哥的救星?AI 驱动的自动化配置管理新趋势
242 11
|
5月前
|
机器学习/深度学习 人工智能 运维
运维不背锅,从“自动修锅”开始:AI自动化运维是怎么回事?
运维不背锅,从“自动修锅”开始:AI自动化运维是怎么回事?
376 49
|
4月前
|
运维 Prometheus 监控
系统崩了怪运维?别闹了,你该问问有没有自动化!
系统崩了怪运维?别闹了,你该问问有没有自动化!
160 9
|
4月前
|
运维 监控 应用服务中间件
运维打铁: Ruby 脚本在运维自动化中的应用探索
Ruby 是一种简洁、动态类型的编程语言,适合运维自动化任务。本文介绍了其在服务器配置管理、定时任务执行和日志分析处理中的应用,并提供了代码示例,展示了 Ruby 在运维自动化中的实际价值。
155 2

热门文章

最新文章