For more information regarding the security incident at F5, the actions we are taking to address it, and our ongoing efforts to protect our customers, click here.

Forum Discussion

Zuke's avatar
Zuke
Icon for Cirrostratus rankCirrostratus
Feb 05, 2021

Ansible bigip_command module error message

I'm trying to run a simple playbook to create a link in bash:

---
- name: Issue a command on the F5 devices
  hosts: all
  connection: local
  environment:
    F5_SERVER: '{​​{​​ ansible_host | default(inventory_hostname) }​​}​​'
  gather_facts: false
  
  tasks:
  - name: Issue the command below
    bigip_command:
      commands: 
      - 'ln -sf /dev/sr0 /dev/cdrom'

However when I run this playbook, I'm getting an encoding error in AWX:

{
    "msg": "'latin-1' codec can't encode characters in position 1-2: ordinal not in range(256)",
    "exception": "  

I'm wondering if the playbook is trying to run the command in TMOS rather than bash. Googling for that error returns a lot of Stack Overflow posts re: Python and needing to convert or define the script with UTF-8.

6 Replies

  • Mike_A's avatar
    Mike_A
    Icon for Nimbostratus rankNimbostratus

    I have been having issues with BASH commands using the bigip_command module. What I see after the job is run is below. As you can see it is 100%, atleast in my case, abending tmsh -c to any command. The module says it runs bash. I have not been able to figure out how to do it yet.

    "executed_commands": [
     "tmsh -c \\\"netstat -rn \\\" | grep \\\"^0.0.0.0\\\" | grep -v mgmt | awk \\'{print \\$2}\\'"
     ]
     "failed": false,

    Here is what is in my playbook.

     tasks:
      - name: Default Gateway
       bigip_command:
        commands:
         - netstat -rn | grep "^0.0.0.0" | grep -v mgmt | awk '{print $2}'
        provider: "{{ provider }}"
       register: f5_gateway_output
     
     
      - debug:
        var: f5_gateway_output
    • Zuke's avatar
      Zuke
      Icon for Cirrostratus rankCirrostratus

      Mike your whitespace looks off. I pasted your playbook as printed above to yamllint.com and got errors. Try this.

      --- 
      tasks: 
        - 
          bigip_command: 
            commands: 
              - "netstat -rn | grep \"^0.0.0.0\" | grep -v mgmt | awk '{print $2}'"
            provider: "{{ provider }}"
          name: "Default Gateway"
          register: f5_gateway_output
        - 
          debug: 
          var: f5_gateway_output
      • Mike_A's avatar
        Mike_A
        Icon for Nimbostratus rankNimbostratus

        Zuke, even with what you pasted, I get the same response.

         "executed_commands": [
                    "tmsh -c \\\"netstat -rn \\\" |  grep \\\"^0.0.0.0\\\" | grep -v mgmt | awk \\'{print \\$2}\\'"
                ],

        As you can see it is inserting "tmsh -c" before any command that is under the bigip_command module.

        This module says it runs bash, I'm questioning how that is possible when "tmsh -c" is inserted before any command.

        Have you successfully run a bash command with this bigip_command module?

  • Mike_A's avatar
    Mike_A
    Icon for Nimbostratus rankNimbostratus

    Just an update, it looks like it runs netstat -rn fine but when adding in the grep and awk statements it doesnt like it.