自动化运维工具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
相关文章
|
2月前
|
Web App开发 前端开发 JavaScript
Playwright极速UI自动化实战指南
Playwright告别Selenium痛点,以智能等待、强大选择器、网络拦截与多设备模拟四大利器,提升自动化效率与稳定性。本文通过实战代码详解其加速秘籍,助你构建高效、可靠的UI测试方案。
|
1月前
|
弹性计算 人工智能 前端开发
在阿里云ECS上部署n8n自动化工作流:U2实例实战
本文介绍如何在阿里云ECS的u2i/u2a实例上部署开源工作流自动化平台n8n,利用Docker快速搭建并配置定时任务,实现如每日抓取MuleRun新AI Agent并推送通知等自动化流程。内容涵盖环境准备、安全组设置、实战案例与优化建议,助力高效构建低维护成本的自动化系统。
365 5
|
2月前
|
机器学习/深度学习 人工智能 测试技术
EdgeMark:嵌入式人工智能工具的自动化与基准测试系统——论文阅读
EdgeMark是一个面向嵌入式AI的自动化部署与基准测试系统,支持TensorFlow Lite Micro、Edge Impulse等主流工具,通过模块化架构实现模型生成、优化、转换与部署全流程自动化,并提供跨平台性能对比,助力开发者在资源受限设备上高效选择与部署AI模型。
336 9
EdgeMark:嵌入式人工智能工具的自动化与基准测试系统——论文阅读
|
1月前
|
人工智能 搜索推荐 UED
一个牛逼的国产AI自动化工具,开源了 !
AiPy是国产开源AI工具,结合大语言模型与Python,支持本地部署。用户只需用自然语言描述需求,即可自动生成并执行代码,轻松实现数据分析、清洗、可视化等任务,零基础也能玩转编程,被誉为程序员的智能助手。
|
1月前
|
人工智能 运维 监控
运维安全还能靠“人盯人”?别闹了,聊聊自动化处理的真功夫
运维安全还能靠“人盯人”?别闹了,聊聊自动化处理的真功夫
122 17
|
1月前
|
数据采集 运维 监控
爬虫与自动化技术深度解析:从数据采集到智能运维的完整实战指南
本文系统解析爬虫与自动化核心技术,涵盖HTTP请求、数据解析、分布式架构及反爬策略,结合Scrapy、Selenium等框架实战,助力构建高效、稳定、合规的数据采集系统。
爬虫与自动化技术深度解析:从数据采集到智能运维的完整实战指南
|
2月前
|
Java 测试技术 API
自动化测试工具集成及实践
自动化测试用例的覆盖度及关键点最佳实践、自动化测试工具、集成方法、自动化脚本编写等(兼容多语言(Java、Python、Go、C++、C#等)、多框架(Spring、React、Vue等))
137 6
|
2月前
|
运维 Linux 网络安全
自动化真能省钱?聊聊运维自动化如何帮企业优化IT成本
自动化真能省钱?聊聊运维自动化如何帮企业优化IT成本
106 4
|
1月前
|
人工智能 缓存 自然语言处理
86_自动化提示:AutoPrompt工具
在当今人工智能领域,提示工程(Prompt Engineering)已成为释放大语言模型(LLM)潜能的关键技术。随着LLM规模和能力的不断增长,如何设计高效、精确的提示词成为研究和应用的焦点。然而,传统的手工提示工程面临着巨大挑战