自动化运维工具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
相关文章
|
1天前
|
算法 安全 Linux
Ansible 中的copy 复制模块应用详解
Ansible 中的copy 复制模块应用详解
|
1天前
|
运维 关系型数据库 MySQL
Ansible自动化运维工具主机清单配置
Ansible自动化运维工具主机清单配置
|
5天前
|
存储 运维 Kubernetes
构建高效自动化运维体系:Ansible与Kubernetes的协同实践
【5月更文挑战第2天】随着云计算和微服务架构的兴起,自动化运维成为保障系统稳定性与效率的关键。本文将深入探讨如何利用Ansible作为配置管理工具,结合Kubernetes容器编排能力,共同打造一个高效、可靠的自动化运维体系。通过剖析二者的整合策略及具体操作步骤,为读者提供一套提升运维效率、降低人为错误的实用解决方案。
|
6天前
|
机器学习/深度学习 运维 持续交付
构建高效自动化运维体系:Ansible与Docker的完美结合构建高效机器学习模型的五大技巧
【4月更文挑战第30天】 在当今快速发展的云计算和微服务架构时代,自动化运维已成为维持系统稳定性和提高效率的关键。本文将探讨如何通过结合Ansible和Docker技术构建一个高效的自动化运维体系。文章不仅介绍了Ansible与Docker的基本原理和优势,还详细阐述了如何整合这两种技术以简化部署流程、加强版本控制,并提高整体运维效率。通过案例分析,我们将展示这一组合在实际环境中的应用效果,以及它如何帮助企业实现持续集成和持续部署(CI/CD)的目标。 【4月更文挑战第30天】 在数据驱动的时代,构建一个高效的机器学习模型是获取洞察力和预测未来趋势的关键步骤。本文将分享五种实用的技巧,帮助数
|
8天前
|
存储 运维 Kubernetes
构建高效自动化运维体系:Ansible与Kubernetes的协同策略
【4月更文挑战第29天】 在当今快速迭代的软件开发环境中,自动化运维成为了确保部署效率和稳定性的关键。本文深入探讨了如何通过Ansible和Kubernetes的集成来实现高效的自动化配置管理与容器编排。文章首先介绍了Ansible与Kubernetes各自的特点及优势,随后详细阐述了它们在自动化运维中的互补作用,并提供了一个实用的集成方案。通过案例分析,验证了该策略在提高部署速度、降低人为错误以及增强系统可靠性方面的有效性。最后,讨论了实施过程中可能遇到的挑战和解决思路。
|
8天前
|
运维 Kubernetes 安全
构建高效自动化运维体系:Ansible与Kubernetes的协同实践
【4月更文挑战第29天】 在当今快速迭代的软件发布周期中,自动化已成为维护大规模服务部署的关键。本文聚焦于将Ansible和Kubernetes结合使用,构建一个灵活、可扩展的自动化运维体系。通过分析两者的技术特性及互补优势,我们将探讨如何优化配置管理流程,实现持续集成和持续部署(CI/CD),并确保系统的稳定性与安全性。此研究不仅为读者提供一套行之有效的运维解决方案,同时也为未来运维技术的发展提供了参考方向。
|
8天前
|
运维 Kubernetes 监控
构建高效自动化运维体系:Ansible与Kubernetes的完美结合
【4月更文挑战第29天】 在当今快速迭代的IT环境中,自动化已成为提高运维效率、减少人为错误的关键。本文将探讨如何通过Ansible和Kubernetes的结合来构建一个高效的自动化运维体系。文章首先分析了Ansible作为配置管理工具的优势,然后讨论了Kubernetes在容器编排领域的领导地位,最后详细阐述了如何将两者融合以实现更灵活、可扩展的自动化策略。
|
25天前
|
数据采集 存储 API
网络爬虫与数据采集:使用Python自动化获取网页数据
【4月更文挑战第12天】本文介绍了Python网络爬虫的基础知识,包括网络爬虫概念(请求网页、解析、存储数据和处理异常)和Python常用的爬虫库requests(发送HTTP请求)与BeautifulSoup(解析HTML)。通过基本流程示例展示了如何导入库、发送请求、解析网页、提取数据、存储数据及处理异常。还提到了Python爬虫的实际应用,如获取新闻数据和商品信息。
|
2月前
|
数据采集 机器学习/深度学习 算法框架/工具
利用Python实现基于图像识别的自动化数据采集系统
本文介绍了如何利用Python编程语言结合图像识别技术,构建一个自动化的数据采集系统。通过分析图像内容,实现对特定信息的提取和识别,并将其转化为结构化数据,从而实现高效、准确地采集需要的信息。本文将详细讨论系统的设计思路、技术实现以及应用场景。
|
2月前
|
Web App开发 Python
在ModelScope中,你可以使用Python的浏览器自动化库
在ModelScope中,你可以使用Python的浏览器自动化库
18 2

热门文章

最新文章