Estoy intentando configurar una máquina virtual VyOS que he creado a partir de una plantilla. La plantilla es una instalación nueva sin ninguna configuración.

La máquina virtual no tiene una IP configurada, por lo que no puedo usar las opciones ssh o el módulo ansible de vyos. Entonces estoy tratando de usar el módulo vmware_vm_shell, que me permitirá ejecutar comandos pero no puedo ingresar al modo conf para VyOS.

He probado bash y vbash para mi shell. Intenté configurar los comandos conf para que se ejecuten las variables de entorno, lo intenté con_item pero no parece que funcione con vmware_vm_shell.

Lo mínimo que necesito es configurar una dirección IP para que luego pueda ssh o usar el módulo ansible de vyos para completar la configuración.

conf
set interfaces ethernet eth0 address 192.168.1.251/24
set service ssh port 22
commit
save
---
- hosts: localhost
  gather_facts: no
  connection: local
  vars:
    vcenter_hostname: "192.168.1.100"
    vcenter_username: "administrator@vsphere.local"
    vcenter_password: "SekretPassword!"
    datacenter: "Datacenter"
    cluster: "Cluster"
    vm_name: "router-01"
  tasks:
    - name: Run command inside a virtual machine
      vmware_vm_shell:
        hostname: "{{ vcenter_hostname }}"
        username: "{{ vcenter_username }}"
        password: "{{ vcenter_password }}"
        datacenter: "{{ datacenter }}"
        validate_certs: False
        vm_id: "{{ vm_name }}"
        vm_username: 'vyos'
        vm_password: 'abc123!!!'
        vm_shell: /bin/vbash
        vm_shell_args: 'conf 2> myFile'
        vm_shell_cwd: "/tmp"
      delegate_to: localhost
      register: shell_command_output

Esto arroja el error:

/bin/vbash: conf: No such file or directory
0
playswithfir3 31 ago. 2020 a las 00:24

1 respuesta

La mejor respuesta

Tengo un EdgeRouter, que usa un sistema operativo derivado de Vyatta. El problema que tiene se debe al hecho de que conf (o configure para mí) no es en realidad el nombre de un comando. Las características de cli se implementan a través de una colección compleja de funciones de bash que no se cargan cuando inicia sesión de forma no interactiva.

Hay una página wiki en vyos.net que sugiere una solución. Al buscar en /opt/vyatta/etc/functions/script-template, prepara el entorno de shell de modo que los comandos vyos funcionen como se espera.

Es decir, debe ejecutar un script de shell (con vbash) que se ve así:

source /opt/vyatta/etc/functions/script-template

conf
set interfaces ethernet eth0 address 192.168.1.251/24
set service ssh port 22
commit
save

exit

No estoy familiarizado con el módulo vmware_vm_shell, así que no sé exactamente cómo lo haría, pero por ejemplo, esto me funciona para ejecutar un solo comando:

ssh ubnt@router 'vbash -c  "source /opt/vyatta/etc/functions/script-template
configure
show interfaces
"'

Tenga en cuenta las nuevas líneas en lo anterior. Eso sugiere que esto podría funcionar:

    - name: Run command inside a virtual machine
      vmware_vm_shell:
        hostname: "{{ vcenter_hostname }}"
        username: "{{ vcenter_username }}"
        password: "{{ vcenter_password }}"
        datacenter: "{{ datacenter }}"
        validate_certs: False
        vm_id: "{{ vm_name }}"
        vm_username: 'vyos'
        vm_password: 'abc123!!!'
        vm_shell: /bin/vbash
        vm_shell_cwd: "/tmp"
        vm_shell_args: |-
          -c "source /opt/vyatta/etc/functions/script-template
          configure
          set interfaces ethernet eth0 address 192.168.1.251/24
          set service ssh port 22
          commit
          save"

      delegate_to: localhost
      register: shell_command_output
0
larsks 30 ago. 2020 a las 22:49