Hi,

Not read everything but first thing is that if you have a pipe in a command call.... you should use shell module instead... That should fix your first issue.

Regards,


JYL


Le 03/03/2020 à 21:42, Robert F a écrit :
Note that my awk command should say "print $1" to get the IP address.  I don't see a way to edit my original question here to make this change.

On Tuesday, March 3, 2020 at 12:38:38 PM UTC-8, Robert F wrote:

    I'm trying to get the IP address of one of my remote hosts by
    querying my controller machine's /etc/hosts file which happens to
    contain the IP addresses of all the servers I build with Ansible.
     My Ansible playbook looks like this:

    |
    ---
    hosts:all
    gather_facts:yes
    become:yes


    pre_tasks:
    -name:getfile server's IP address
        command: "grep prod-fs1 /etc/hosts | awk '{print$0 }'"
        register: fs_ip_addr
        delegate_to: localhost


      - debug: var={{ fs_ip_addr }}
    |


    However, I'm getting this error which I don't know how to fix:

    |
    TASK [getfile server's IP address]
    
*************************************************************************************************************************************************
    fatal: [prod-web1.example.com <http://prod-web1.example.com> ->
    localhost]: FAILED! => {"changed": true, "cmd": ["grep",
    "prod-fs1", "/etc/hosts", "|", "awk", "{ print $0 }"], "delta":
    "0:00:00.010303", "end": "2020-03-03 12:24:36.207656", "msg":
    "non-zero return code", "rc": 2, "start": "2020-03-03
    12:24:36.197353", "stderr": "grep: |: No such file or
    directory\ngrep: awk: No such file or directory\ngrep: { print $0
    }: No such file or directory", "stderr_lines": ["grep: |: No such
    file or directory", "grep: awk: No such file or directory", "grep:
    { print $0 }: No such file or directory"], "stdout":
    "/etc/hosts:45.79.93.135 prod-fs1.example.com
    <http://prod-fs1.example.com>    prod-fs1", "stdout_lines":
    ["/etc/hosts:45.79.93.135 prod-fs1.example.com
    <http://prod-fs1.example.com>    prod-fs1"]}


    PLAY RECAP
    
**************************************************************************************************************************************************************************
    prod-web1.example.com <http://prod-web1.example.com> : ok=7  
     changed=0    unreachable=0    failed=1    skipped=0    rescued=0
       ignored=0;p
    |

    It appears that the error is caused by the pipe symbol which is
    why I enclosed the entire command in double quotes.  But the error
    occurs even if I remove them.

    I should add that I know I could use this method of getting the IP
    address of my file server...

    |
    -name:getfile server's IP address
         set_fact:
    
fs_ip_addr=hostvars[groups['fileservers'][0]]['ansible_eth0']['ipv4']['address']
    |

    However, this option isn't available to me since I have to call
    the playbook with the "limit" argument which cause the variable to
    not be available.

    |
    deploy-webservers.yml -I inventory -l webservers
    |

--
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 [email protected] <mailto:[email protected]>. To view this discussion on the web visit https://groups.google.com/d/msgid/ansible-project/21a85286-91fb-404c-a9d5-f30608be1c3d%40googlegroups.com <https://groups.google.com/d/msgid/ansible-project/21a85286-91fb-404c-a9d5-f30608be1c3d%40googlegroups.com?utm_medium=email&utm_source=footer>.

--
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 [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/ansible-project/d5a585c3-8242-7898-daf7-ae94f70fa413%40lenhof.eu.org.

Reply via email to