ansible笔记(3):ansible模块的基本使用

1.ping模块

  [root@ansible-control /]# ansible A -m ping  #pingA组内的主机

  [root@ansible-control /]# ansible 192.168.232.182 -m ping

  [root@ansible-control /]# ansible aliastest -m ping  #给受控主机使用别名,但是注意要添加ansible_host=IP地址

2.模块查询功能

  2.1查询所有可用的模块

    [root@ansible-control /]# ansible-doc  -l

  2.2查询某个模块的详细用法及其介绍   

    [root@ansible-control /]# ansible-doc -s ping

3.fetch模块

  作用:从受管控主机中拉取文件。可选参数:dest、fail_on_missing、flat、src、validate_checksum

    src:表示从受管控主机中拉取哪个文件(该文件的路径)

    dest:指定从受管控主机中拉取的文件保存在本地的位置

  3.1fetch模块示例   

    [root@ansible-control /]# ansible A -m fetch -a "src=/fetch/test.txt dest=/test"   #-m表示调用模块,-a表示使用其参数

通过查看ansible控制端的主机,可发现,已经成功将远端受控主机的/fetch/test.txt文件拉取至ansible控制端。

  3.2fetch模块生成文件的哈希值

  从返回信息中可以看到,当ansible进行fetch操作时,会对对应文件进行哈希计算,算出文件哈希值,也就是说,如果我们改变了文件中的内容,哈希值也将随之发生改变,这个时候,即使对应目录中存在同名的文件,ansible也会判断出两个文件属于不同的文件,因为它们的哈希值并不相同,我们来实验一下,操作如下:

【修改受控主机中/fetch/test.txt文件的内容之前在ansible控制主机中拉取该文件时】

【修改受控主机中/fetch/test.txt文件的内容后再次在ansible控制主机中拉取该文件后】

 4.ansible的幂等性

  什么是幂等性?举个例子,你想把一个文件拷贝到目标主机的某个目录上,但是你不确定此目录中是否已经存在此文件,当你使用ansible完成这项任务时,就非常简单了,因为如果目标主机的对应目录中已经存在此文件,那么ansible则不会进行任何操作,如果目标主机的对应目录中并不存在此文件,ansible就会将文件拷贝到对应目录中,说白了,ansible是以结果为导向的,我们指定了一个目标状态ansible会自动判断,当前状态是否与目标状态一致,如果一致,则不进行任何操作,如果不一致,那么就将;当前状态变成目标状态,这就是幂等性,幂等性可以保证我们重复的执行同一项操作时,得到的结果是一样的。

 现在我们来实验一下,重复输入两条相同的ansible命令,看一看有什么不同:[root@ansible-control fetch]# ansible A -m fetch -a "src=/fetch/test.txt dest=/test"

重复输入相同ansible命令后:

通过查看返回信息,发现changed字段中的值为true时发生了实质性改变(第一次输入该命令时);changed字段中的值为false时并没有什么改变,因为本地已经存在该文件(第二次输入该命令时)

 

    

猜你喜欢

转载自www.cnblogs.com/python-wen/p/11230972.html