Forum Discussion

AHS's avatar
AHS
Icon for Nimbostratus rankNimbostratus
Apr 30, 2023

Connecting to F5 using SSH via Ansible

I am in the process of writing a playbook which uses SSH to connect to F5 and run a bash command (ntpdate -d time_server) to confirm NTP connectivity across the environment. For SSH I am using root. Here is the task that I have in the playbook.

- name: "Check NTP on {{override_host}}"
  vars:
     ansible_connection: ssh
     ansible_user: "root"
     ansible_password: "{{root_pwd}}"
     ansible_ssh_private_key_file: "~/.ssh/f5-ansible-ssh"
  command:
  cmd: ntpdate -d {{item}}
  loop: "{{new_ntp_servers}}"
  register: ntp_status
 The error message that I get is as follows 
MSG:
The module failed to execute correctly, you probably need to set the interpreter.
See stdout/stderr for the exact error

MODULE_STDOUT:
/bin/sh: /usr/local/bin/python3.9: No such file or directory

MODULE_STDERR:
******************************* IMPORTANT NOTE ******************************
Banner
*****************************************************************************
Shared connection to ltm closed.

Any help would be greatly appreciated...

  • Hi AHS - did the link Paulius shared help? If yes, please click the Accept as Solution button so future users with the same issue can easily find resolution. 

  • AHS This doesn't seem to be specific to F5 but to Ansible itself. The following article seems to have a similar issue and it revolves around the Ansible server not knowing the path for python3.9. If you read through the article it could help you get back on track.

    https://github.com/IBM/ansible-for-i/issues/84

    • AHS's avatar
      AHS
      Icon for Nimbostratus rankNimbostratus

      Paulius -- Apologies for the late reply. I was tied up with another engagement. Thank you for the suggestion. I did see that git-hub post & did try the stuff mentioned there before posting here.  Unfortunately, it did not help. The issue started happening after I upgraded the f5-collections. I rolled back the f5-collections to 1.22, but that still did not fix the issue.  I donot think the issue was with the collections itself but a combination of collection, ansible & python version. To get this working again, I had to create a virtual environment & use that for ansible. Here are the steps

      mkdir ~/tmp
      mv ~/.ansible ~/tmp
      mv ~/.cache ~/tmp
      mv ~/.config ~/tmp
      mkdir -p ~/workspace/venv
      cd ~/workspace/venv
      /usr/local/bin/python3.9 -m venv ./ansible-2.9.17
      Wait for the virtual environment to get created
      source ~/workspace/venv/ansible-2.9.17/bin/activate
      pip install --upgrade pip
      pip list
      This should show you default packages with pip
      pip install ansible==2.9.17
      pip install paramiko
      pip list
      ansible-galaxy collection install -r requirements.yml

      The requirements file is as follows

      ---
      collections:
        # --- F5 Collections ---
        - name: f5networks.f5_modules
          version: 1.22.0
        - name: f5networks.f5_bigip
        # --- Required for clean STDOUT ---
        - name: ansible.posix
        # --- Required for IP management ---
        - name: ansible.utils
        # --- Required for json_query ---
        - name: community.general
      ...

      I also switched to paramiko for ssh connectivity instead of ansible's built in module.