Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Ansible local_action directive

Tags:

ansible

I'm quite new to Ansible and have a simple question for my understanding of local_action directive.

Would that mean that the command is fully executed locally? Let's say you have something like this:

local_action: command which nginx
register: check_nginx
failed_when: no
changed_when: no

Then you have another block looking for nginx's existence with something like that:

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

Does that mean that playbook will fail in case nginx is not installed locally or will it fail if is not installed remotely ?

like image 426
Nicko Glayre Avatar asked Nov 20 '17 11:11

Nicko Glayre


2 Answers

Yes, local_action is an alternative way of doing delegate_to: localhost.

These actions will be executed on local machine (Ansible control host), but still being in context of remote host in terms of variables. So you can something like this:

local_action: command ping -c 1 {{ inventory_hostname }}

which will ping every host in your play, but ping will be initiated from Ansible control host.

like image 172
Konstantin Suvorov Avatar answered Sep 23 '22 09:09

Konstantin Suvorov


If you want to provide multiple parameters to the local action it will look something like this

local_action: 
  module: command
  _raw_params: "which nginx"
register: check_nginx
failed_when: no
changed_when: no
like image 33
Ilya Avatar answered Sep 23 '22 09:09

Ilya