running ptython script in role

93 views
Skip to first unread message

christia...@itsv.at

unread,
Aug 3, 2018, 10:29:29 AM8/3/18
to Ansible Project

i want to run a python script in a role. currently the script is in the tasks directory but i also tried the file dir which also is not working. where i have to put this script so it can be found at runtime?

- local_action: command "{{ item }}"
  with_items
:
         
- "inventoryctl.py group -U -n LNZ"
         
- "inventoryctl.py host -U -H {{ inventory_hostname }} -g LNZ"
 
when: (itsv_machine_serial.stdout is match "IBM,02781A6BX") or
       
(itsv_machine_serial.stdout is match "IBM,02781A6CX") or
       
(itsv_machine_serial.stdout is match "IBM,02781A6DX")


result:

TASK [hostgroups : command] ***********************************************************************************************************************************************************************************
failed
: [AMTEST1 -> localhost] (item=inventoryctl.py group -U -n LNZ) => {"changed": false, "cmd": "'inventoryctl.py group -U -n LNZ'", "item": "inventoryctl.py group -U -n LNZ", "msg": "[Errno 2] No such file or directory", "rc": 2}
failed
: [AMTEST1 -> localhost] (item=inventoryctl.py host -U -H AMTEST1 -g LNZ) => {"changed": false, "cmd": "'inventoryctl.py host -U -H AMTEST1 -g LNZ'", "item": "inventoryctl.py host -U -H AMTEST1 -g LNZ", "msg": "[Errno 2] No such file or directory", "rc": 2}


playbook

- name: run test play
  hosts
: all
  gather_facts
: yes
  roles
:
         
- hostgroups
  tasks
:

 
- name: print out the hostname of target
    command
: hostname

 
- name: Print itsv_lparname
    debug
:
           
var: hostvars[inventory_hostname].inventory_lparname

 
- name: Print inventory_hostname
    debug
:
           
var: hostvars[inventory_hostname].inventory_hostname

           
#  - name: Display all variables/facts known for a host
           
# debug:
           
#var: hostvars[inventory_hostname]



Kai Stian Olstad

unread,
Aug 3, 2018, 1:11:51 PM8/3/18
to ansible...@googlegroups.com
On 03.08.2018 16:29, christia...@itsv.at wrote:
> i want to run a python script in a role. currently the script is in the
> tasks directory but i also tried the file dir which also is not
> working.
> where i have to put this script so it can be found at runtime?

It's using path to find the executable, is it not in the path you need
to use relative path or absolute path.


> - local_action: command "{{ item }}"
> with_items:
> - "inventoryctl.py group -U -n LNZ"
> - "inventoryctl.py host -U -H {{ inventory_hostname }} -g
> LNZ"
> when: (itsv_machine_serial.stdout is match "IBM,02781A6BX") or
> (itsv_machine_serial.stdout is match "IBM,02781A6CX") or
> (itsv_machine_serial.stdout is match "IBM,02781A6DX")

If you have roles/hostgroups/files/inventoryctl.py the command would be

roles/hostgroups/files/inventoryctl.py

--
Kai Stian Olstad

christia...@itsv.at

unread,
Aug 6, 2018, 6:17:34 AM8/6/18
to Ansible Project
hmm...does not work.

TASK [hostgroups : command] ***********************************************************************************************************************************************************************************
failed
: [AMTEST1 -> localhost] (item=roles/hostgroups/files/inventoryctl.py group -U -n LNZ) => {"changed": false, "cmd": "'roles/hostgroups/files/inventoryctl.py group -U -n LNZ'", "item": "roles/hostgroups/files/inventoryctl.py group -U -n LNZ", "msg": "[Errno 2] No such file or directory", "rc": 2}
failed
: [AMTEST1 -> localhost] (item=roles/hostgroups/files/inventoryctl.py host -U -H AMTEST1 -g LNZ) => {"changed": false, "cmd": "'roles/hostgroups/files/inventoryctl.py host -U -H AMTEST1 -g LNZ'", "item": "roles/hostgroups/files/inventoryctl.py host -U -H AMTEST1 -g LNZ", "msg": "[Errno 2] No such file or directory", "rc": 2}

PLAY RECAP
****************************************************************************************************************************************************************************************************
AMTEST1                    
: ok=3    changed=2    unreachable=0    failed=1

root@lpgaixmgmtlx01
:/etc/ansible/aix>file roles/hostgroups/files/inventoryctl.py
roles
/hostgroups/files/inventoryctl.py: Python script, ASCII text executable

Karl Auer

unread,
Aug 6, 2018, 6:52:37 AM8/6/18
to ansible...@googlegroups.com
I have not done this myself, but I think that the script you are running has to be in the search path ("$PATH") OR you have to specify an absolute path ("/[...]/myscript.py") OR you have to specify a path relative to the current working directory - that is, the directory that is the CWD when ansible tries to execute the script.

I think that the CWD is not what you think it is.You could find it out by executing the command "pwd".

Regards, K.


--
You received this message because you are subscribed to the Google Groups "Ansible Project" group.
To unsubscribe from this group and stop receiving emails from it, send an email to ansible-project+unsubscribe@googlegroups.com.
To post to this group, send email to ansible-project@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/ansible-project/aa1c1828-881f-49a3-bab4-6b3add73bb11%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.



--
Karl Auer

Email  : ka...@2pisoftware.com
Website: 
http://2pisoftware.com

GPG/PGP : 958A 2647 6C44 D376 3D63 86A5 FFB2 20BC 0257 5816
Previous: F0AB 6C70 A49D 1927 6E05 81E7 AD95 268F 2AB6 40EA

christia...@itsv.at

unread,
Aug 6, 2018, 8:47:47 AM8/6/18
to Ansible Project
i put the script in path, same errror...

TASK [hostgroups : command] ***********************************************************************************************************************************************************************************
failed
: [AMTEST1 -> localhost] (item=inventoryctl.py group -U -n LNZ) => {"changed": false, "cmd": "'inventoryctl.py group -U -n LNZ'", "item": "inventoryctl.py group -U -n LNZ", "msg": "[Errno 2] No such file or directory", "rc": 2}
failed
: [AMTEST1 -> localhost] (item=inventoryctl.py host -U -H AMTEST1 -g LNZ) => {"changed": false, "cmd": "'inventoryctl.py host -U -H AMTEST1 -g LNZ'", "item": "inventoryctl.py host -U -H AMTEST1 -g LNZ", "msg": "[Errno 2] No such file or directory", "rc": 2}

PLAY RECAP
****************************************************************************************************************************************************************************************************
AMTEST1                    
: ok=2    changed=2    unreachable=0    failed=1

root@lpgaixmgmtlx01
:/etc/ansible/aix>which inventoryctl.py
/usr/bin/inventoryctl.py


could it be that ansible tries to run the script on the remote node instead of local? this means it runs local right? ([AMTEST1 -> localhost])
To unsubscribe from this group and stop receiving emails from it, send an email to ansible-proje...@googlegroups.com.
To post to this group, send email to ansible...@googlegroups.com.

Karl Auer

unread,
Aug 6, 2018, 8:54:21 AM8/6/18
to ansible...@googlegroups.com
Not in YOUR path, in the path Ansible is using when it executes the script. Use the command module and find out what the path is, what the CWD is.

As to whether it is executing on the remote - what have you got in the "hosts" line?

Regards, K.


To unsubscribe from this group and stop receiving emails from it, send an email to ansible-project+unsubscribe@googlegroups.com.
To post to this group, send email to ansible-project@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/ansible-project/c198d040-ee84-478f-b8f8-453f8050c08b%40googlegroups.com.

For more options, visit https://groups.google.com/d/optout.

christia...@itsv.at

unread,
Aug 6, 2018, 9:24:16 AM8/6/18
to Ansible Project

no idea, there is only one $PATH (even if its not mine, whatever my path is) so i assume that ansible uses exactly that path. ansible runs as the root user here, so roots path should relevant.

Karl Auer

unread,
Aug 6, 2018, 9:36:11 AM8/6/18
to ansible...@googlegroups.com
When stuff doesn't work, you have to stop making assumptions.

Use the "command" module to run
a shell command to tell you the hostname, path and CWD on whatever host Ansible is running these tasks on.

Then you will know what's what and can adjust your playbook.

Regards, K.



To unsubscribe from this group and stop receiving emails from it, send an email to ansible-project+unsubscribe@googlegroups.com.
To post to this group, send email to ansible-project@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/ansible-project/4ac914f0-da18-4635-ae0e-ff74a4e9461c%40googlegroups.com.

For more options, visit https://groups.google.com/d/optout.

christia...@itsv.at

unread,
Aug 6, 2018, 9:47:56 AM8/6/18
to Ansible Project
---
# tasks file for hostgroups
- shell: /usr/bin/uname -L | cut -d ' ' -f2
 
register: itsv_lparname

- command: /usr/sbin/lsattr -El sys0 -a systemid -F value
 
register: itsv_machine_serial

- command: pwd

- local_action: command "{{ item }}"
  with_items
:

         
- "pwd"

         
- "inventoryctl.py group -U -n LNZ"
         
- "inventoryctl.py host -U -H {{ inventory_hostname }} -g LNZ"
 
when: (itsv_machine_serial.stdout is match "IBM,02781A6BX") or
       
(itsv_machine_serial.stdout is match "IBM,02781A6CX") or
       
(itsv_machine_serial.stdout is match "IBM,02781A6DX")


output:

root@lpgaixmgmtlx01:/etc/ansible/aix>ansible-playbook -i AMTEST1, testplay.yml

PLAY
[run test play] ******************************************************************************************************************************************************************************************

TASK
[hostgroups : shell] *************************************************************************************************************************************************************************************
changed
: [AMTEST1]

TASK
[hostgroups : command] ***********************************************************************************************************************************************************************************
changed
: [AMTEST1]

TASK
[hostgroups : command] ***********************************************************************************************************************************************************************************
changed
: [AMTEST1]

TASK
[hostgroups : command] ***********************************************************************************************************************************************************************************
changed
: [AMTEST1 -> localhost] => (item=pwd)

failed
: [AMTEST1 -> localhost] (item=inventoryctl.py group -U -n LNZ) => {"changed": false, "cmd": "'inventoryctl.py group -U -n LNZ'", "item": "inventoryctl.py group -U -n LNZ", "msg": "[Errno 2] No such file or directory", "rc": 2}
failed
: [AMTEST1 -> localhost] (item=inventoryctl.py host -U -H AMTEST1 -g LNZ) => {"changed": false, "cmd": "'inventoryctl.py host -U -H AMTEST1 -g LNZ'", "item": "inventoryctl.py host -U -H AMTEST1 -g LNZ", "msg": "[Errno 2] No such file or directory", "rc": 2}

PLAY RECAP
****************************************************************************************************************************************************************************************************

AMTEST1                    
: ok=3    changed=3    unreachable=0    failed=1

Karl Auer

unread,
Aug 6, 2018, 10:07:16 AM8/6/18
to ansible...@googlegroups.com
No output from pwd, but it didn't fail. Maybe you need to add "-v" to your Ansible command line?

While you are at it, add commands to run "hostname" and "echo $PATH"

Regards, K.


To unsubscribe from this group and stop receiving emails from it, send an email to ansible-project+unsubscribe@googlegroups.com.
To post to this group, send email to ansible-project@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/ansible-project/dc1a8a4a-1c6d-400f-9531-4626782c7a32%40googlegroups.com.

For more options, visit https://groups.google.com/d/optout.

christia...@itsv.at

unread,
Aug 6, 2018, 10:08:24 AM8/6/18
to Ansible Project
even using {{ role_path}} does not work, this slowly is getting out of hand...

- local_action: command "{{ item }}"
  with_items
:
         
- "pwd"

         
- "{{ role_path }}/files/inventoryctl.py group -U -n LNZ"
         
- "{{ role_path }}/files/inventoryctl.py host -U -H {{ inventory_hostname }} -g LNZ"

 
when: (itsv_machine_serial.stdout is match "IBM,02781A6BX") or
       
(itsv_machine_serial.stdout is match "IBM,02781A6CX") or
       
(itsv_machine_serial.stdout is match "IBM,02781A6DX")

TASK [hostgroups : command] ***********************************************************************************************************************************************************************************
changed
: [AMTEST1 -> localhost] => (item=pwd)

failed
: [AMTEST1 -> localhost] (item=/etc/ansible/aix/roles/hostgroups/files/inventoryctl.py group -U -n LNZ) => {"changed": false, "cmd": "'/etc/ansible/aix/roles/hostgroups/files/inventoryctl.py group -U -n LNZ'", "item": "/etc/ansible/aix/roles/hostgroups/files/inventoryctl.py group -U -n LNZ", "msg": "[Errno 2] No such file or directory", "rc": 2}
failed
: [AMTEST1 -> localhost] (item=/etc/ansible/aix/roles/hostgroups/files/inventoryctl.py host -U -H AMTEST1 -g LNZ) => {"changed": false, "cmd": "'/etc/ansible/aix/roles/hostgroups/files/inventoryctl.py host -U -H AMTEST1 -g LNZ'", "item": "/etc/ansible/aix/roles/hostgroups/files/inventoryctl.py host -U -H AMTEST1 -g LNZ", "msg": "[Errno 2] No such file or directory", "rc": 2}

Karl Auer

unread,
Aug 6, 2018, 10:16:35 AM8/6/18
to ansible...@googlegroups.com
Hm.

I haven't used command much myself, but I think you have to give it space-delimited commands.

Could it be that you are actually telling Ansible to execute a command called "inventoryctl.py host -U -H AMTEST1 -g LNZ", rather than a command called "inventoryctl.py" with arguments "host", "-U', "-H", "AMTEST1", "-g", and "LNZ" ?!?

Not sure how to fix that.

Regards, K.


To unsubscribe from this group and stop receiving emails from it, send an email to ansible-project+unsubscribe@googlegroups.com.
To post to this group, send email to ansible-project@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/ansible-project/3389c79e-de8b-4a47-adb3-5071dbbc7ee9%40googlegroups.com.

For more options, visit https://groups.google.com/d/optout.

Kai Stian Olstad

unread,
Aug 6, 2018, 10:21:51 AM8/6/18
to ansible...@googlegroups.com
On 06.08.2018 16:08, christia...@itsv.at wrote:
> even using {{ role_path}} does not work, this slowly is getting out of
> hand...
>
> - local_action: command "{{ item }}"

I think the quotes inn here is your problem, try removing them.


> with_items:
> - "pwd"
> - "{{ role_path }}/files/inventoryctl.py group -U -n LNZ"
> - "{{ role_path }}/files/inventoryctl.py host -U -H {{
> inventory_hostname }} -g LNZ"
> when: (itsv_machine_serial.stdout is match "IBM,02781A6BX") or
> (itsv_machine_serial.stdout is match "IBM,02781A6CX") or
> (itsv_machine_serial.stdout is match "IBM,02781A6DX")
>
>
> TASK [hostgroups : command]
> ***********************************************************************************************************************************************************************************
> changed: [AMTEST1 -> localhost] => (item=pwd)
> failed: [AMTEST1 -> localhost]
> (item=/etc/ansible/aix/roles/hostgroups/files
> /inventoryctl.py group -U -n LNZ) => {"changed": false, "cmd":
> "'/etc/ansible/aix/roles/hostgroups/files/inventoryctl.py group -U -n
> LNZ'", "item":

Because of the quotes above you item is
'/etc/ansible/aix/roles/hostgroups/files/inventoryctl.py group -U -n
LNZ'

But it need to be without the single quotes, and they are there because
of the double quotes in the local_action.


You could avoid problems like this by dropping local_action and use
delegate_to instead.

- command: "{{ item }}"
delegate_to: localhost
with_items:
- "pwd"
- "{{ role_path }}/files/inventoryctl.py group -U -n LNZ"
- "{{ role_path }}/files/inventoryctl.py host -U -H {{
inventory_hostname }} -g LNZ"
when: (itsv_machine_serial.stdout is match "IBM,02781A6BX") or
(itsv_machine_serial.stdout is match "IBM,02781A6CX") or
(itsv_machine_serial.stdout is match "IBM,02781A6DX")


--
Kai Stian Olstad

christia...@itsv.at

unread,
Aug 6, 2018, 10:40:38 AM8/6/18
to Ansible Project
modified accordingly, using delegate_to, outcome is even worse. the command completly garbled. i can not imagine why it is this hard to run a simple command with arguments.  just "/etc/ansible/aix/roles/hostgroups/files/inventoryctl.py group -U -n LNZ" without any fuss or specials.



TASK [hostgroups : command] ***********************************************************************************************************************************************************************************
changed
: [AMTEST1 -> localhost] => (item=pwd)

failed
: [AMTEST1 -> localhost] (item=/etc/ansible/aix/roles/hostgroups/files/inventoryctl.py group -U -n LNZ) => {"changed": true, "cmd": ["/etc/ansible/aix/roles/hostgroups/files/inventoryctl.py", "group", "-U", "-n", "LNZ"], "delta": "0:00:00.109754", "end": "2018-08-06 16:36:54.041377", "item": "/etc/ansible/aix/roles/hostgroups/files/inventoryctl.py group -U -n LNZ", "msg": "non-zero return code", "rc": 1, "start": "2018-08-06 16:36:53.931623", "stderr": "Traceback (most recent call last):\n  File \"/etc/ansible/aix/roles/hostgroups/files/inventoryctl.py\", line 549, in <module>\n    InventoryCtl()\n  File \"/etc/ansible/aix/roles/hostgroups/files/inventoryctl.py\", line 31, in __init__\n    self.read_settings()\n  File \"/etc/ansible/aix/roles/hostgroups/files/inventoryctl.py\", line 42, in read_settings\n    self.myconfig = dict(config.items('server'))\n  File \"/usr/lib/python2.7/site-packages/backports/configparser/__init__.py\", line 869, in items\n    raise NoSectionError(section)\nbackports.configparser.NoSectionError: No section: 'server'", "stderr_lines": ["Traceback (most recent call last):", "  File \"/etc/ansible/aix/roles/hostgroups/files/inventoryctl.py\", line 549, in <module>", "    InventoryCtl()", "  File \"/etc/ansible/aix/roles/hostgroups/files/inventoryctl.py\", line 31, in __init__", "    self.read_settings()", "  File \"/etc/ansible/aix/roles/hostgroups/files/inventoryctl.py\", line 42, in read_settings", "    self.myconfig = dict(config.items('server'))", "  File \"/usr/lib/python2.7/site-packages/backports/configparser/__init__.py\", line 869, in items", "    raise NoSectionError(section)", "backports.configparser.NoSectionError: No section: 'server'"], "stdout": "", "stdout_lines": []}
failed
: [AMTEST1 -> localhost] (item=/etc/ansible/aix/roles/hostgroups/files/inventoryctl.py host -U -H AMTEST1 -g LNZ) => {"changed": true, "cmd": ["/etc/ansible/aix/roles/hostgroups/files/inventoryctl.py", "host", "-U", "-H", "AMTEST1", "-g", "LNZ"], "delta": "0:00:00.109299", "end": "2018-08-06 16:36:54.289337", "item": "/etc/ansible/aix/roles/hostgroups/files/inventoryctl.py host -U -H AMTEST1 -g LNZ", "msg": "non-zero return code", "rc": 1, "start": "2018-08-06 16:36:54.180038", "stderr": "Traceback (most recent call last):\n  File \"/etc/ansible/aix/roles/hostgroups/files/inventoryctl.py\", line 549, in <module>\n    InventoryCtl()\n  File \"/etc/ansible/aix/roles/hostgroups/files/inventoryctl.py\", line 31, in __init__\n    self.read_settings()\n  File \"/etc/ansible/aix/roles/hostgroups/files/inventoryctl.py\", line 42, in read_settings\n    self.myconfig = dict(config.items('server'))\n  File \"/usr/lib/python2.7/site-packages/backports/configparser/__init__.py\", line 869, in items\n    raise NoSectionError(section)\nbackports.configparser.NoSectionError: No section: 'server'", "stderr_lines": ["Traceback (most recent call last):", "  File \"/etc/ansible/aix/roles/hostgroups/files/inventoryctl.py\", line 549, in <module>", "    InventoryCtl()", "  File \"/etc/ansible/aix/roles/hostgroups/files/inventoryctl.py\", line 31, in __init__", "    self.read_settings()", "  File \"/etc/ansible/aix/roles/hostgroups/files/inventoryctl.py\", line 42, in read_settings", "    self.myconfig = dict(config.items('server'))", "  File \"/usr/lib/python2.7/site-packages/backports/configparser/__init__.py\", line 869, in items", "    raise NoSectionError(section)", "backports.configparser.NoSectionError: No section: 'server'"], "stdout": "", "stdout_lines": []}

Karl Auer

unread,
Aug 6, 2018, 10:48:18 AM8/6/18
to ansible...@googlegroups.com
Well, amazingly enough this is progress!

Your script is now running. The garbage you see is a python stack trace, because the program had a problem - but it did run.

I don't know what that script does, but from the error message it was parsing some file or other and was unable to find a section called "server".

Regards, K.


--
You received this message because you are subscribed to the Google Groups "Ansible Project" group.
To unsubscribe from this group and stop receiving emails from it, send an email to ansible-project+unsubscribe@googlegroups.com.
To post to this group, send email to ansible-project@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/ansible-project/bc9eefe7-04c1-4b91-9842-c78b44517823%40googlegroups.com.

For more options, visit https://groups.google.com/d/optout.

christia...@itsv.at

unread,
Aug 6, 2018, 10:55:09 AM8/6/18
to Ansible Project
yes, this is because ansible is sending garbage down the stream. "/etc/ansible/aix/roles/hostgroups/files/inventoryctl.py" "group", "-U", "-n", "LNZ" while the script expects this "/etc/ansible/aix/roles/hostgroups/files/inventoryctl.py group  -U  -n  LNZ"
To unsubscribe from this group and stop receiving emails from it, send an email to ansible-proje...@googlegroups.com.
To post to this group, send email to ansible...@googlegroups.com.

Kai Stian Olstad

unread,
Aug 6, 2018, 10:56:17 AM8/6/18
to ansible...@googlegroups.com
On 06.08.2018 16:40, christia...@itsv.at wrote:
> modified accordingly, using delegate_to, outcome is even worse. the
> command
> completly garbled. i can not imagine why it is this hard to run a
> simple
> command with arguments. just "/etc/ansible/aix/roles/hostgroups/files/
> inventoryctl.py group -U -n LNZ" without any fuss or specials.

As Karl said, this is progress since Ansible running you command.

You would do yourself(and us) a big favor by setting

stdout_callback = debug

in ansible.cfg under the [default] section, this will give you a much
nicer output.


--
Kai Stian Olstad

Karl Auer

unread,
Aug 6, 2018, 11:17:21 AM8/6/18
to ansible...@googlegroups.com
What happens when you run that script, with those parameters, yourself, manually? On the same host as Ansible is running it on.

To unsubscribe from this group and stop receiving emails from it, send an email to ansible-project+unsubscribe@googlegroups.com.
To post to this group, send email to ansible-project@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/ansible-project/a2c8144f-4bf0-41fa-984d-542bc8b7a8dd%40googlegroups.com.

For more options, visit https://groups.google.com/d/optout.

Kai Stian Olstad

unread,
Aug 6, 2018, 11:54:07 AM8/6/18
to ansible...@googlegroups.com
On 06.08.2018 16:55, christia...@itsv.at wrote:
> yes, this is because ansible is sending garbage down the stream.
> "/etc/ansible/aix/roles/hostgroups/files/inventoryctl.py" "group",
> "-U", "-n", "LNZ"
> while the script expects this
> "/etc/ansible/aix/roles/hostgroups/files/inventoryctl.py group -U -n
> LNZ"

This is not garbage, it's just how it's.

$ cat playbook.yml
---
- hosts: cb
gather_facts: no
tasks:
- command: echo It is just how it works
delegate_to: localhost


$ ansible-playbook playbook.yml -v

PLAY [cb] **********************************************

TASK [command] *****************************************
changed: [cb -> localhost] => {
"changed": true,
"cmd": [
"echo",
"It",
"is",
"just",
"how",
"it",
"works"
],
"delta": "0:00:00.001215",
"end": "2018-08-06 17:48:26.274927",
"rc": 0,
"start": "2018-08-06 17:48:26.273712"
}

STDOUT:

It is just how it works


PLAY RECAP *********************************************
cb : ok=1 changed=1 unreachable=0 failed=0

--
Kai Stian Olstad
Reply all
Reply to author
Forward
0 new messages