ansible常用模块介绍

Posted JohnnyFang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ansible常用模块介绍相关的知识,希望对你有一定的参考价值。

    作为运维自动化工具之一,ansible有着批量执行远程命令、批量安装和配置软件服务、编排高级的企业级复杂的IT架构任务和提供自动化运维工具的开发API等功能。ansible模块众多,到目前为止已有3000多个,但是常用的模块也只有20多个,此篇主要看一下ansible的常用模块。

  1. ping模块

    ping模块的功能是探测ansible主机是否能够远程连接被控制端的主机,如果返回的结果是绿色的,即视为可达,ansible主机发出ping的动作,被控制端如果可达会返回一个pong​(如下图)​。

ansible常用模块介绍_主机名


  1. Command模块

    Command模块的功能是在远程主机执行命令,此为默认模块,可忽略 -m 选项,例如我们可以在ansible主机查看远程主机名称、创建或删除文件​(如下图)​。

ansible常用模块介绍_nginx_02

    Command模块支持先切换文件夹再查看,也支持我们根据文件夹的存在与否来进行创建,如果不存在则创建,如果已经存在,会提示已存在而不去创建​(如下图)​。

ansible常用模块介绍_解压缩_03

    Command模块虽然能在远程主机执行命令,但不支持各种符号,如管道和重定向等,例如我们希望通过ansible主机将hello这个单词写入到远程主机的/data/test2.log中,但是执行后,只是将echo之后的语句显示出来,并不是执行我们想要的操作​(如下图)​。

ansible常用模块介绍_解压缩_04


  1. Shell模块

    Shell模块的功能和Command模块相似,用shell执行命令,支持各种符号,比如:*,$, >,可以认为Shell模块是增强版的Command模块。例如我们可以利用Shell模块来执行Command模块中向远程主机的/data/test2.log文件中写入hello这个单词的操作,执行命令后可以生成test2.log文件,查看内容显示的是hello​(如下图)​。

ansible常用模块介绍_nginx_05


  1. Script模块

    Script模块的功能是在远程主机上运行ansible主机上的脚本,并且无需执行权限。例如笔者这边创建了一个简单的脚本,就是显示dbsrvs分组中的主机名称,利用Script模块执行脚本后会将分组中的主机名称显示出来​(如下图)​。

ansible常用模块介绍_主机名_06


  1. Copy模块

    Copy模块的功能是从ansible主机复制文件到远程主机上,例如笔者这边希望将ansible主机上的ansible_test.txt文件复制到websrvs分组中的远程主机上,在复制过程中,我们可以修改文件的名称、所有者、所属组、权限和保存路径等​(如下图)​。

ansible常用模块介绍_主机名_07

ansible常用模块介绍_解压缩_08


  1. Fetch模块

    Fetch模块的功能是从远程主机提取文件至ansible主机端,与copy模块相反,例如下图将websrvs分组远程主机的/var/log/messages文件复制到ansible主机的/data/log目录下。

ansible常用模块介绍_nginx_09

ansible常用模块介绍_主机名_10


  1. Get_url模块

    Get_url模块的功能是用于将文件从http、https或ftp下载到被管理机节点上,其常用参数包括url​(下载文件的URL,支持HTTP,HTTPS或FTP协议)​、dest​(下载到目标路径)​、owner​(指定属主)​、group​(指定属组)、​mode​(指定权限)​和checksum​(对目标文件在下载后计算摘要,以确保其完整性)​等,笔者这边就不弄那么复杂了,在ansible主机上执行命令,下载nginx-1.18.0版本的包到websrvs分组的主机上,并放在/usr/local/src目录下,将包名改为nginx.tar.gz​(如下图)​。

ansible常用模块介绍_主机名_11

ansible常用模块介绍_主机名_12


  1. File模块

    File模块的功能是设置文件属性,创建软链接等。例如通过ansible主机在所有的主机上创建/data/haha文件夹,将所有者和所属组改为fangxiaotiao​(如下图)​。

ansible常用模块介绍_主机名_13

ansible常用模块介绍_解压缩_14

    此时针对以上的文件夹来创建软链接,软链接名叫什么不重要,重要的是一定要将state设为link,同时state可以用dest或name代替​(如下图)​。

ansible常用模块介绍_nginx_15

ansible常用模块介绍_nginx_16


  1. stat模块

     state模块的主要功能是检查文件或文件系统的状态,例如我们查看/etc/passwd文件,会显示文件的大小、属性等信息​(如下图)​。

ansible常用模块介绍_主机名_17


  1. unarchive模块

    unarchive模块的功能是在ansible主机对远程主机进行解压缩,其实现方式有三种:一种是将ansible主机上的压缩包传到远程主机后解压缩至特定目录,设置copy=yes,此为默认值可省略;第二种是将远程主机上的某个压缩包解压缩到指定路径下,设置copy=no;第三种是直接将互联网上的某一个包下载到远程主机并进行解压缩。例如笔者这边在Get_url模块下载了nginx压缩包到websrvs分组主机上,此时要进行对远程主机的压缩包进行解压,在解压缩的时候可以修改所有者和所属组等​(如下图)​。

ansible常用模块介绍_nginx_18

ansible常用模块介绍_主机名_19


  1. Archive模块

    Archive模块的功能是打包压缩保存在被管理节点,该模块在的使用方法与unarchive模块相似,因笔者所下载的ansible版本中不带此模块就演示了。

ansible常用模块介绍_nginx_20


  1. Hostname模块

    Hostname模块的功能是管理主机名,如果是分组的话,会直接将分组中的所有主机名都改为设定的,笔者这边将ip为10.0.0.156的主机改名为hello-world​(如下图)​。

ansible常用模块介绍_主机名_21


  1. Cron模块

    Cron模块的功能是执行计划任务,例如ansible主机上有一个关于数据库备份的脚本,希望10.0.0.154主机每周一到周五的两点半执行一次,执行命令后,可以在ansible主机查看到计划任务已经添加到了目标远程主机的任务列表中​(如下图)​。

ansible常用模块介绍_nginx_22

ansible常用模块介绍_主机名_23


  1. Yum和Apt模块

    yum管理软件包,只支持RHEL、CentOS、fedora,不支持Ubuntu和其它版本;apt模块管理Debian相关版本的软件包。例如笔者这边通过ansible主机在ip为10.0.0.154的远程主机上安装httpd服务​(如下图)​。

ansible常用模块介绍_nginx_24

    如果想删除已安装的服务,添加state=absent即可​(如下图)​。

ansible常用模块介绍_解压缩_25


  1. Service模块

    Service模块的功能是管理远程主机上的服务,例如笔者想要开启10.0.0.154远程主机上httpd服务,需填写服务的名称、状态,同时支持设置开机自启动​(如下图)​。

ansible常用模块介绍_nginx_26

ansible常用模块介绍_nginx_27

    如果想关闭服务,需要将状态改为stopped,不想开机自启动,也可将enabled改为no​(如下图)​。

ansible常用模块介绍_nginx_28

ansible常用模块介绍_解压缩_29


  1. User模块

    User模块的功能是管理远程主机的用户,例如我们可以新增用户,设置用户的说明、UID、家目录和组等​(如下图)​。

ansible常用模块介绍_主机名_30


  1. Group模块

    Group模块用于管理远程主机上的组,例如笔者在ip为10.0.0.153的远程主机上创建nginx组,可以设定nginx组的ID和是否是系统组等​(如下图)​。

ansible常用模块介绍_解压缩_31


  1. Lineinfile模块

    ansible在使用sed进行替换时,经常会遇到需要转义的问题,而且ansible在遇到特殊符号进行替换时,存在问题,无法正常进行替换 。其实在ansible自身提供了两个模块可以方便的进行替换,其中一个就是Lineinfile模块,一般在ansible当中去修改某个文件的单行进行替换的时候需要使用Lineinfile模块。

    例如笔者在10.0.0.154主机上下载了httpd服务,现在想将端口从80改为8080​(如下图)​。

ansible常用模块介绍_nginx_32

ansible常用模块介绍_nginx_33

    使用正则表达式匹配对应的行,当处于删除文本的操作时,如果有多行文本都能被匹配,这些行都会被删除​(如下图)​。

ansible常用模块介绍_解压缩_34

ansible常用模块介绍_主机名_35

    但在使用正则表达式匹配对应的行,当处于替换文本的操作时,如果有多行文本都能被匹配,则只有最后面被匹配到的那行文本才会被替换,例如笔者将10.0.0.154远程主机的/etc/httpd/conf/httpd.conf文件中再添加两行Listen 8080,现在希望将所有的8080端口重新改为80,执行命令后只有最后一行被替换了​(如下图)​。

ansible常用模块介绍_主机名_36

ansible常用模块介绍_主机名_37


  1. Replace模块

    Replace模块有点类似于sed命令,主要也是基于正则进行匹配和替换,建议使用,如果想进行多行匹配进行替换需要使用Replace模块。例如还是上面10.0.0.154远程主机的/etc/httpd/conf/httpd.conf文件,我们要将端口改为9527​(如下图)​。

ansible常用模块介绍_解压缩_38

ansible常用模块介绍_主机名_39


  1. reboot模块

    reboot模块负责远程主机的重启功能,对象可以是全部主机、分组或单台主机,例如笔者这边重启10.0.0.156主机​(如下图)​。

ansible常用模块介绍_nginx_40

ansible常用模块介绍_主机名_41


  1. Setup模块

    Setup模块用于收集主机的系统信息,这些facts信息可以直接以变量的形式使用,但是如果主机较多,会影响执行速度。直接使用该模块查看某一台主机时,会显示这台远程主机网卡设置、主机名称和版本等信息。

ansible常用模块介绍_nginx_42

ansible常用模块介绍_nginx_43

    当然我们也可以看具体的版块,例如想看一下10.0.0.154远程主机的内存使用使用情况

ansible常用模块介绍_nginx_44


  1. debug模块

    debug模块可以用于输出信息,并且通过msg定制输出的信息内容,msg后面的变量需要加 " " 引起来,它主要是用于一些调试工作。debug 模块默认输出Hello world​(如下图)​。

ansible常用模块介绍_nginx_45

以上是关于ansible常用模块介绍的主要内容,如果未能解决你的问题,请参考以下文章

Ansible------Ansible概述,搭建,常用模块介绍

Ansible常用模块介绍及使用

Ansible Ad-Hoc 常用命令

ansible常用模块介绍

Ansible playbooks入门和编写规范Ansible Playbooks常用模块介绍常用模块集合

Ansible playbooks入门和编写规范Ansible Playbooks常用模块介绍常用模块集合