Ansible 之旅(五) 运行 Ad Hoc

通过 Ansible 执行 Ad Hoc

所谓的 Ad Hoc 简而言之就是 临时命令
Ad Hoc 是一种快速执行单个 Ansible 任务的方法,它不需要为下次运行而保存起来,非常简单,只需运行一行命令,不需要写到 Ansible Playbook 当中。所以 Ad Hoc 更加注重解决一些简单或平时工作中临时遇到的任务,而 Ansible Playbook 更适合解决复杂的且需要固化下来的任务。

运行 Ad Hoc

使用 ansible 命令来运行 Ad Hoc

ansible host-pattern -m module [-a ‘moudule args’] [-i inventory]
参数 说明
host-pattern inventory 中存在的主机或主机组
-m Ansible 模块名称
-a Ansible 模块参数

Example:

$ ansible all -m ping
$ ansible all -m yum -a "name=httpd state=latest"

需要注意的是Ad hoc 一行命令只能使用一个模块

运行 Ad hoc 使用模块执行任务

Ansible 在安装时提供了数百个模块,不同的模块适应不同的任务需求,可以做不同的事情。
运行 ansible-doc -l 可以列出系统中已安装的模块列表:

$ ansible-doc -l
a10_server                              Manage A10 Networks AX/SoftAX/Thu...
a10_server_axapi3                  Manage A10 Networks AX/SoftAX/Thu...
a10_service_group                  Manage A10 Networks AX/SoftAX/Thu...
a10_virtual_server                   Manage A10 Networks AX/SoftAX/Thu...
accelerate                                Enable accelerated mode on remote...

ansible-doc 命令也可以用来查看模块的文档:

$ ansible-doc ping

模块文档也可以参考 Ansible 官网的在线文档:https://docs.ansible.com/ansible/latest/modules/modules_by_category.html

实用的模块

Ansible 的模块数以千计,以下是平时使用频率比较高的模块:

模块名称 模块用途
copy 拷贝本地文件到托管主机
get_url 下载文件到托管主机
synchronize 同步本地文件到托管主机,类似 rsync
file 创建文件或目录以及权限的设置
lineinfile 编辑文件中行的内容,添加或正则替换

此外还有:
软件管理类: yum dnf apt pip gem
系统管理员工具类: service user group

command 模块

command 模块可以允许管理员在托管主机的命令行上执行任意的命令,使用 -a 选项来指定运行的命令,使用 -o 选项将输出显示一行。
command 模块可以让管理员在托管主机上快速的执行命令,但是它的实现方式不是使用 Shell ,所以它不能访问 Shell 的变量以及无法使用 Shell 的功能,如:管道重定向。如果需要使用 Shell 的变量和其功能,可以选择使用 shell 模块。
commandshell 模块都依赖托管主机上的 Python 环境,但是在网络设备中,如交换机和路由器可能无法满足,此时可以使用 raw 模块来执行命令,这个模块不依赖 Python 环境,非常适合网络设备。

Ad hoc 的连接属性

在前面提到了连接托管主机的前提是需要知道如何与托管主机进行通信,在执行 Ad hoc 时默认使用 Ansible 配置文件[1]中的值,但也可以在执行命令时通过选项进行定义:

Setting Command-line Option
inventory -i
remote_user -u
become -b
become_method --become-method
become_user --become-user
become_ask_pass --ask-become-pass or -K

使用命令选项时优先级最高,所以会覆盖配置文件中的配置。

最后修改:2019 年 11 月 12 日 06 : 05 PM
如果觉得我的文章对你有用,请随意赞赏

发表评论