Ansible局部行动指令

Ansible局部行动指令,ansible,Ansible,我对Ansible很陌生,有一个简单的问题需要我理解local\u action指令 这是否意味着命令在本地完全执行?假设你有这样的东西: local_action: command which nginx register: check_nginx failed_when: no changed_when: no local_action: command ping -c 1 {{ inventory_hostname }} 然后你会看到另一个区块在寻找nginx的存在,类似于: - fa

我对Ansible很陌生,有一个简单的问题需要我理解
local\u action
指令

这是否意味着命令在本地完全执行?假设你有这样的东西:

local_action: command which nginx
register: check_nginx
failed_when: no
changed_when: no
local_action: command ping -c 1 {{ inventory_hostname }}
然后你会看到另一个区块在寻找nginx的存在,类似于:

- fail: msg="nginx unavailable"
  when: check_nginx.rc == 1

这是否意味着playbook在nginx未本地安装时会失败,或者在未远程安装时会失败?

是的,
local\u操作
是另一种执行
委托给:localhost
的方法

这些操作将在本地计算机(Ansible control host)上执行,但在变量方面仍在远程主机的上下文中。所以你可以这样做:

local_action: command which nginx
register: check_nginx
failed_when: no
changed_when: no
local_action: command ping -c 1 {{ inventory_hostname }}

这将ping游戏中的每个主机,但ping将从Ansible control主机启动。

如果您想为本地操作提供多个参数,它将如下所示

local_action: 
  module: command
  _raw_params: "which nginx"
register: check_nginx
failed_when: no
changed_when: no

非常感谢您给出了这个清晰的答案,这正是我一直在寻找的,我现在知道为什么它是按照我正在使用的剧本上的方式设置的(外部写的不是我)。谢谢您,我正在搜索Ansible Docs上缺少的“_raw_params”部分