On 12/2/20 12:55 PM, magnifito wrote:
> Hello,
> Thank your for your reply.
> I have looked at my problem again and found out I was using *"* instead *'* 
> while having a command with variable. Now
> the problem is clear.
> 
> data@pc:~/tester$ ansible tv -a 'echo $HOME'
> 10.10.20.254 | CHANGED | rc=0 >>
> /home/tester
> data@pc:~/tester$ ansible tv -a 'echo $PATH'
> 10.10.20.254 | CHANGED | rc=0 >>
> /usr/local/bin:/usr/bin:/bin:/usr/games
> 
> Ad 1.&3. The path to home was correct all the time, but my command while 
> searching for solution was not. iwconfig is
> located inside /sbin/ which is not in known paths.
> How I can permanently add a path to /sbin/ or other directories unavailable 
> to Ansible?
> 
> Ad 2. I was using a "command" at the beginning but switched to a "shell" 
> thinking it was a part of my problem.
> 

You can set the PATH variable for the whole playbook or just for one task with:

    environment:
       PATH: /usr/local/bin:/usr/bin:/bin:/usr/games:/sbin

Or alternatively add a symlink to iwconfig in /usr/bin or another directory in 
$PATH.

Regards
         Racke

> Best regards,
> Greg
> 
> 
> 
> On Tuesday, 1 December 2020 at 11:22:15 UTC+1 [email protected] wrote:
> 
>     On 12/1/20 10:54 AM, magnifito wrote:
>     > Hello,
>     > I am an Ansible beginner. I am trying to start Python script in pm2 
> process manager on my computers.
>     > I think I have narrowed the problem to Ansible not knowing proper home 
> directory.
>     > Become, become_user, changing environment path in config or playbook 
> does not solve the problem.
>     >
>     > whoami returns my remote user, with become it returns root, while "echo 
> $HOME" gives me /home/my_pc_user instead
>     > /home/remote_user
>     >
> 
>     1. Lookups always take place on the Ansible controller
>     2. Use command module instead of shell unless you have a very good reason 
> to not use command
>     3. FileNotFoundError: [Errno 2] No such file or directory: 'iwconfig': 
> 'iwconfig'
>     iwconfig is in /usr/sbin, so that is probably missing in the $PATH 
> Ansible uses (different from a regular ssh shell)
> 
>     Regards
>     Racke
> 
>     > *Here is my playbook:*
>     > ---
>     > - hosts: tv
>     >   become_user: tester
>     >   become: yes
>     >   environment: 
>     >     HOME: /home/tester  
>     >   tasks:
>     >   - name: Home debug
>     >     debug:
>     >       msg: "'{{ lookup('env', 'HOME') }}' is the HOME enviroment 
> variable."
>     >   - name: User debug
>     >     debug:
>     >       msg: "'{{ lookup('env', 'USR') | default('nobody', True) }}' is 
> the USER."
>     >   - name: Start wlan monitor in pm2
>     >     shell: /home/tester/.npm-global/bin/pm2 start 
> /home/tester/ops-tests/bin/wireless_monitor.py --name
>     wireless_monitor
>     > --interpreter=python3 -- -i 3 -p /home/tester/wireless.log
>     >
>     > *Which returns:*
>     > data@pc:~/tester$ ansible-playbook pm2_wlan_monitor_start.yml -K
>     > BECOME password: 
>     >
>     > PLAY [tv] 
> **********************************************************************
>     >
>     > TASK [Gathering Facts] 
> *********************************************************
>     > ok: [10.10.20.254]
>     >
>     > TASK [Home debug] 
> **************************************************************
>     > ok: [10.10.20.254] => {
>     >     "msg": "'/home/data' is the HOME enviroment variable."
>     > }
>     >
>     > TASK [User debug] 
> **************************************************************
>     > ok: [10.10.20.254] => {
>     >     "msg": "'nobody' is the USER."
>     > }
>     >
>     > TASK [Start wlan monitor in pm2] 
> ***********************************************
>     > changed: [10.10.20.254]
>     >
>     > PLAY RECAP 
> *********************************************************************
>     > 10.10.20.254               : ok=4    changed=1    unreachable=0    
> failed=0    skipped=0    rescued=0    ignored=0   
>     >
>     > *Pm2 monitor will start process only to stop it with errors. Here is 
> the Pm2 log:*
>     > M2        | 2020-11-30T12:21:52: PM2 log: App [wireless_monitor:0] 
> starting in -fork mode-
>     > PM2        | 2020-11-30T12:21:52: PM2 log: App [wireless_monitor:0] 
> online
>     > PM2        | 2020-11-30T12:21:52: PM2 log: App [wireless_monitor:0] 
> exited with code [1] via signal [SIGINT]
>     > PM2        | 2020-11-30T12:21:52: PM2 log: Script 
> /home/tester/ops-tests/bin/wireless_monitor.py had too many
>     unstable
>     > restarts (16). Stopped. "errored"
>     >
>     > /home/tester/.pm2/logs/wireless-monitor-out.log last 15 lines:
>     > /home/tester/.pm2/logs/wireless-monitor-error.log last 15 lines:
>     > 0|wireless |   File "/home/tester/ops-tests/bin/common.py", line 83, in 
> check
>     > 0|wireless |     return self.make_result(self.get_value())
>     > 0|wireless |   File "/home/tester/ops-tests/bin/wireless_monitor.py", 
> line 47, in get_signal_level
>     > 0|wireless |     w_info = get_wireles_info(_customer="get_signal_level")
>     > 0|wireless |   File "/home/tester/ops-tests/bin/common.py", line 61, in 
> wrapper
>     > 0|wireless |     return_value = func(*args, **kwargs)
>     > 0|wireless |   File "/home/tester/ops-tests/bin/wireless_monitor.py", 
> line 21, in get_wireles_info
>     > 0|wireless |     output = sp.run(["iwconfig"], stdout=sp.PIPE, 
> stderr=sp.PIPE, universal_newlines=True)
>     > 0|wireless |   File "/usr/lib/python3.7/subprocess.py", line 472, in run
>     > 0|wireless |     with Popen(*popenargs, **kwargs) as process:
>     > 0|wireless |   File "/usr/lib/python3.7/subprocess.py", line 775, in 
> __init__
>     > 0|wireless |     restore_signals, start_new_session)
>     > 0|wireless |   File "/usr/lib/python3.7/subprocess.py", line 1522, in 
> _execute_child
>     > 0|wireless |     raise child_exception_type(errno_num, err_msg, 
> err_filename)
>     > 0|wireless | FileNotFoundError: [Errno 2] No such file or directory: 
> 'iwconfig': 'iwconfig'
>     >
>     > When I SSH into my remote PC and use the same shell command the script 
> starts in pm2 with no problems. I do not
>     have to
>     > use full path to start pm2 which turned out is required to start it via 
> Ansible playbook or ad-hoc command. Currently
>     > the process exits without making "wireless.log" file.
>     >
>     > Any help or information would be appreciated as I could not find the 
> solution.
>     >
>     > Best regards,
>     > Greg
>     >
>     > --
>     > 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/3195fe76-8b36-4fcd-882a-7e9f84a65f8bn%40googlegroups.com
>     
> <https://groups.google.com/d/msgid/ansible-project/3195fe76-8b36-4fcd-882a-7e9f84a65f8bn%40googlegroups.com>
>     >
>     
> <https://groups.google.com/d/msgid/ansible-project/3195fe76-8b36-4fcd-882a-7e9f84a65f8bn%40googlegroups.com?utm_medium=email&utm_source=footer
>     
> <https://groups.google.com/d/msgid/ansible-project/3195fe76-8b36-4fcd-882a-7e9f84a65f8bn%40googlegroups.com?utm_medium=email&utm_source=footer>>.
> 
> 
> 
>     -- 
>     Ecommerce and Linux consulting + Perl and web application programming.
>     Debian and Sympa administration. Provisioning with Ansible.
> 
> -- 
> 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/c043eb55-1855-42c9-b9fb-b991c0d48d02n%40googlegroups.com
> <https://groups.google.com/d/msgid/ansible-project/c043eb55-1855-42c9-b9fb-b991c0d48d02n%40googlegroups.com?utm_medium=email&utm_source=footer>.


-- 
Ecommerce and Linux consulting + Perl and web application programming.
Debian and Sympa administration. Provisioning with Ansible.

-- 
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/65e76912-c2c9-1ddd-c249-644c13add7c2%40linuxia.de.

Attachment: OpenPGP_signature
Description: OpenPGP digital signature

Reply via email to