Ansible 日常维护和使用知识( 二 )


组合多条Ad-Hoc操作的配置文件 。
下面将通过两个小节的内容 , 来说明如何使用Ad-Hoc和Playbook 。 其中Ad-Hoc将重点介绍命令参数和几个常用的模块 。
通常我们会以命令行的形式使用Ansible模块 , 或者将Ansible命令嵌入到脚本中去执行 。 Ansible自带了很多模块 , 我们可以直接使用他们 。 当我们不知道如何使用这些模块时 , 可以ansible-doc命令获取帮助 ,
例如:使用“ansible-doc-l”命令可以显示所有自带的模块和相关简介 , 使用“ansible-doc模块名”命令可以显示该模块的参数及用法等内容 。
AnsibleAd-Hoc命令参数我们可以使用“ansible-h”命令来列出所有的命令参数 , 下面列举了常用的一些参数 , 部分参数如果不指定将采用ansible.cfg中的设置值 , 或者采用原始默认值 。

Ansible 日常维护和使用知识
文章图片
Ansible常用模块介绍连通性测试
通常采用Ping模块来测试远程主机的运行状态:
ansibleip-mping
执行命令
执行命令可以采用四种方式 , 第一种方式是利用Command模块在远程主机上执行命令 , 但Command模块不支持管道命令 , 例如 , 查看某个主机的日期:
ansibleip-mcommand-adate-o
值得注意的是 , Ansible默认的模块是Command , 所以上面的命令可以简化为:
ansibleip-adate-o
第二种方式是利用Shell模块 , 切换到某个Shell执行远程主机上的Shell/Python脚本 , 或者执行命令 , Shell支持管道命令 , 功能较Command更强大灵活 , 例如:
ansibleip-mshell-a'bash/root/test.sh'-o
ansibleip-mshell-a'echo"123456"|passwd--stdinroot'
第三种方式是利用Raw模块 , Raw支持管道命令 。 Raw有很多地方和Shell类似 , 但是如果是使用老版本Python(低于2.4) , 无法通过Ansible的其他模块执行命令 , 则需要先用到Raw模块远程安装Python-sim-plejson后才能受管;又或者是受管端是路由设备 , 因为没有安装Python环境 , 那就更需要使用Raw模块去管控了 。 例如:
ansibleip-mraw-a"cd/tmp;pwd"
第四种方式是利用Script模块 , 传输Ansible中控端上的Shell/Python脚本到远端主机上执行 , 即使远端主机没有安装Python也可以执行 , 有点类似Raw模块 。 但Script只能执行脚本 , 不能调用其他指令 , 且不支持管道命令 , 例如:
ansibleip-mscript-a'/root/test.sh'-o
removes参数用来判断远端主机上是不是存在test.sh文件 , 如果存在 , 就执行管控机上的test.sh , 不存在就不执行:
ansibleip-mscript-a'removes=/root/test.sh/root/test.sh'-o
creates用来判断远端主机上是不是存在test.sh文件 , 如果存在 , 就不执行 , 不存在就执行管控机上的test.sh文件:
ansibleip-mscript-a'creates=/root/test.sh/root/test.sh'-o
复制文件
常用的文件操作模块就是Copy模块 , 它主要用于将本地或远程机器上的文件拷贝到远程主机上 。 其主要参数有以下几个:

Ansible 日常维护和使用知识
文章图片
复制本地文件的到远程主机:
ansibleip-mcopy-a' src=https://pcff.toutiao.jxnews.com.cn/root/test.shdest=/tmp/test.sh'
复制并修改文件的权限:
ansibleip-mcopy-a' src=https://pcff.toutiao.jxnews.com.cn/root/test.shdest=/tmp/test.shmode=755'
复制并修改文件的属主:
ansibleip-mcopy-a' src=https://pcff.toutiao.jxnews.com.cn/root/test.shdest=/tmp/test.shmode=755owner=root'
复制文件前备份:
ansibleip-mcopy-a' src=https://pcff.toutiao.jxnews.com.cn/p/20210201/test.shbackup=yesdest=/tmp'
服务管理
在AnsibleAd-Hoc中 , Service模块可以帮助我们管理远程主机上的服务 。 例如 , 启动或停止远程主机中的某个服务 。 但是该服务本身必须要能够通过操作系统的管理服务的组件所管理 , 例如Redhat6中默认通过SysV进行服务管理 , Redhat7中默认通过Systemd管理服务 , 如果该服务本身都不能被操作系统的服务管理组件所管理 , 那么也不能被Service模块管理 。 该模块的几个常用参数如下:

Ansible 日常维护和使用知识
文章图片
启动服务:
ansibleall-mservice-a"name=sshdstate=started"
停止服务:
ansibleall-mservice-a"name=sshdstate=stopped"
开启服务自启动:
ansibleall-mservice-a"name=sshdenable=yes"
安装包管理
在AnsibleAd-Hoc中 , 可以通过Yum模块实现在远程主机上通过Yum源管理软件包 , 包括安装、升级、降级、删除和列出软件包等 。 该模块的几个常用参数如下:

Ansible 日常维护和使用知识
文章图片