设为首页 加入收藏

TOP

管理配置Ansible(四)
2023-07-23 13:37:58 】 浏览:74
Tags:管理配 Ansible

在受管主机上运行任意命令

command模块允许管理员在受管主机的命令行中运行任意命令。要运行的命令通过-a选项指定为该模块的参数。例如,以下命令将对webservers组的受管主机运行hostname命令:

[root@control ~]# ansible test -m command -a 'hostname'
192.168.118.130 | CHANGED | rc=0 >>
localhost.localdomain

使用-o选项以单行格式显示Ansible临时命令的输出

[root@control ~]# ansible test -m command -a 'hostname' -o
192.168.118.130 | CHANGED | rc=0 | (stdout) localhost.localdomain

command模块允许管理员对受管主机快速执行远程命令。这些命令不是由受管主机上的shell加以处理。因此,它们无法访问shell环境变量,也不能执行重定向和管道等shell操作。

在命令需要shell处理的情形中,管理员可以使用shell模块。与command模块类似,可以在临时命令中将要执行的命令作为参数传递给该模块。Ansible随后对受管主机远程执行该命令。与command模块不同的是,这些命令将通过受管主机上的shell进行处理。因此,可以访问shell环境变量,也可以使用重定向和管道等操作。

以下示例演示了command与shell的区别。如果尝试使用这两个模块执行内建的Bash命令set,只有使用shell模块才会成功:

[root@control ~]# ansible 192.168.118.130 -m command -a 'set'
192.168.118.130 | FAILED | rc=2 >>
[Errno 2] No such file or directory: b'set': b'set'

[root@control ~]# ansible 192.168.118.130 -m shell -a 'set'
192.168.118.130 | CHANGED | rc=0 >>
BASH=/bin/sh
BASHOPTS=cmdhist:complete_fullquote:extquote:force_fignore:hostcomplete:interactive_comments:progcomp:promptvars:sourcepath
BASH_ALIASES=()
BASH_ARGC=()
BASH_ARGV=()
...

command和shell模块都要求受管主机上安装正常工作的Python。第三个模块是raw,它可以绕过模块子系统,直接使用远程shell运行命令。在管理无法安装Python的系统(如网络路由器)时,可以利用这个模块。它也可以用于将Python安装到主机上。

在大多数情况下,建议避免使用command、shell和raw这三个“运行命令”模块。

其他模块大部分都是幂等的,可以自动进行更改跟踪。它们可以测试系统的状态,在这些系统已处于正确状态时不执行任何操作。相反,以幂等方式使用“运行命令”模块要复杂得多。依靠它们,你更难以确信再次运行临时命令或playbook不会造成意外的失败。当shell或command模块运行时,通常会基于它是否认为影响了计算机状态而报告CHANGED状态。

有时候,“运行命令”模块是有用的工具,也是解决问题的好办法。如果确实需要使用它们,可能最好先尝试用command模块,只有在需要shell或raw模块的特殊功能时才利用它们。
配置临时命令的连接
受管主机连接和特权升级的指令可以在Ansible配置文件中配置,也可以使用临时命令中的选项来定义。使用临时命令中的选项定义时,它们将优先于Ansible配置文件中配置的指令。下表显示了与各项配置文件指令类同的命令行选项。

配置临时命令的连接

受管主机连接和特权升级的指令可以在Ansible配置文件中配置,也可以使用临时命令中的选项来定义。使用临时命令中的选项定义时,它们将优先于Ansible配置文件中配置的指令。下表显示了与各项配置文件指令类同的命令行选项。

Ansible命令行选项

配置文件指令 命令行选项
inventory -i
remote_user -u
become —become、-b
become_method --become-method
become_user --become-user
become_ask_pass --ask-become-pass、-K

在使用命令行选项配置这些指令前,可以通过查询ansible --help的输出来确定其当前定义的值。

ansible --help
首页 上一页 1 2 3 4 下一页 尾页 4/4/4
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇【进程间通信】常用方式汇总 下一篇自动化管理软件与Ansible安装

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目