ingatesystems.fuego_modules.fuego_config – Manage the configuration database on an Ingate SBC.

Note

This plugin is part of the ingatesystems.fuego_modules collection (version 1.1.0).

You might already have this collection installed if you are using the ansible package. It is not included in ansible-core. To check whether it is installed, run ansible-galaxy collection list.

To install it, use: ansible-galaxy collection install ingatesystems.fuego_modules.

To use it in a playbook, specify: ingatesystems.fuego_modules.fuego_config.

New in version 1.0.0: of ingatesystems.fuego_modules

Synopsis

  • Manage the configuration database on an Ingate SBC.

Requirements

The below requirements are needed on the host that executes this module.

  • ingatesdk >= 1.0.14

Parameters

Parameter

Comments

add

boolean

Add a row to a table.

Choices:

  • no

  • yes

client

dictionary / required

A dict object containing connection details.

address

string / required

The hostname or IP address to the unit.

password

string / required

The password for the REST API user.

port

integer

Which HTTP(S) port to connect to.

scheme

string / required

Which HTTP protocol to use.

Choices:

  • http

  • https

timeout

integer

The timeout (in seconds) for REST API requests.

username

string / required

The username of the REST API user.

validate_certs

aliases: verify_ssl

boolean

Verify the unit’s HTTPS certificate.

Choices:

  • no

  • yes ← (default)

version

string

REST API version.

Choices:

  • v1 ← (default)

columns

dictionary

A dict containing column names/values.

delete

boolean

Delete all rows in a table or a specific row.

Choices:

  • no

  • yes

download

boolean

Download the configuration database from the unit.

Choices:

  • no

  • yes

factory

boolean

Reset the preliminary configuration to its factory defaults.

Choices:

  • no

  • yes

filename

string

The name of the file to store the downloaded configuration in. Refer to the download option.

get

boolean

Return all rows in a table or a specific row.

Choices:

  • no

  • yes

modify

boolean

Modify a row in a table.

Choices:

  • no

  • yes

no_response

boolean

Expect no response when storing the preliminary configuration. Refer to the store option.

Choices:

  • no ← (default)

  • yes

path

string

Where in the filesystem to store the downloaded configuration. Refer to the download option.

return_rowid

boolean

Get rowid(s) from a table where the columns match.

Choices:

  • no

  • yes

revert

boolean

Reset the preliminary configuration.

Choices:

  • no

  • yes

rowid

integer

A row id.

store

boolean

Store the preliminary configuration.

Choices:

  • no

  • yes

store_download

boolean

If the downloaded configuration should be stored on disk. Refer to the download option.

Choices:

  • no ← (default)

  • yes

table

string

The name of the table.

Notes

Note

  • If store_download is set to True, and path and filename is omitted, the file will be stored in the current directory with an automatic filename.

  • This module deprecates the Ingate network module ig_config that was present in Ansible < 2.10.

  • This module requires that the Ingate Python SDK is installed on the host. To install the SDK use the pip command from your shell pip install ingatesdk.

Examples

- name: Add/remove DNS servers
  hosts: 192.168.1.1
  connection: local
  collections:
    - ingatesystems.fuego_modules
  gather_facts: no

  vars:
    client_rw:
      version: v1
      address: "{{ inventory_hostname }}"
      scheme: http
      username: alice
      password: foobar

  tasks:
  - name: Load factory defaults
    fuego_config:
      client: "{{ client_rw }}"
      factory: true
    register: result
  - debug:
      var: result

  - name: Revert to last known applied configuration
    fuego_config:
      client: "{{ client_rw }}"
      revert: true
    register: result
  - debug:
      var: result

  - name: Change the unit name
    fuego_config:
      client: "{{ client_rw }}"
      modify: true
      table: misc.unitname
      columns:
        unitname: "Test Ansible"
    register: result
  - debug:
      var: result

  - name: Add a DNS server
    fuego_config:
      client: "{{ client_rw }}"
      add: true
      table: misc.dns_servers
      columns:
        server: 192.168.1.21
    register: result
  - debug:
      var: result

  - name: Add a DNS server
    fuego_config:
      client: "{{ client_rw }}"
      add: true
      table: misc.dns_servers
      columns:
        server: 192.168.1.22
    register: result
  - debug:
      var: result

  - name: Add a DNS server
    fuego_config:
      client: "{{ client_rw }}"
      add: true
      table: misc.dns_servers
      columns:
        server: 192.168.1.23
    register: last_dns
  - debug:
      var: last_dns

  - name: Modify the last added DNS server
    fuego_config:
      client: "{{ client_rw }}"
      modify: true
      table: misc.dns_servers
      rowid: "{{ last_dns['add'][0]['id'] }}"
      columns:
        server: 192.168.1.24
    register: result
  - debug:
      var: result

  - name: Return the last added DNS server
    fuego_config:
      client: "{{ client_rw }}"
      get: true
      table: misc.dns_servers
      rowid: "{{ last_dns['add'][0]['id'] }}"
    register: result
  - debug:
      var: result

  - name: Remove last added DNS server
    fuego_config:
      client: "{{ client_rw }}"
      delete: true
      table: misc.dns_servers
      rowid: "{{ last_dns['add'][0]['id'] }}"
    register: result
  - debug:
      var: result

  - name: Return the all rows from table misc.dns_servers
    fuego_config:
      client: "{{ client_rw }}"
      get: true
      table: misc.dns_servers
    register: result
  - debug:
      var: result

  - name: Remove remaining DNS servers
    fuego_config:
      client: "{{ client_rw }}"
      delete: true
      table: misc.dns_servers
    register: result
  - debug:
      var: result

  - name: Get rowid for interface eth0
    fuego_config:
      client: "{{ client_rw }}"
      return_rowid: true
      table: network.local_nets
      columns:
        interface: eth0
    register: result
  - debug:
      var: result

  - name: Store the preliminary configuration
    fuego_config:
      client: "{{ client_rw }}"
      store: true
    register: result
  - debug:
      var: result

  - name: Do backup of the configuration database
    fuego_config:
      client: "{{ client_rw }}"
      download: true
      store_download: true
    register: result
  - debug:
      var: result

Return Values

Common return values are documented here, the following are the fields unique to this module:

Key

Description

add

list / elements=dictionary

A list containing information about the added row

Returned: when add is yes and success

data

dictionary

Column names/values

Returned: success

Sample: {“number”: “2”, “server”: “10.48.254.33”}

href

string

The REST API URL to the added row

Returned: success

Sample:http://192.168.1.1/api/v1/misc/dns_servers/2

id

integer

The row id

Returned: success

Sample: 22

delete

list / elements=dictionary

A list containing information about the deleted row(s)

Returned: when delete is yes and success

data

dictionary

Column names/values

Returned: success

Sample: {“number”: “2”, “server”: “10.48.254.33”}

id

integer

The row id

Returned: success

Sample: 22

table

string

The name of the table

Returned: success

Sample: “misc.dns_servers”

download

dictionary

Configuration database and meta data

Returned: when download is yes and success

config

string

The configuration database

Returned: success

filename

string

A suggested name for the configuration

Returned: success

Sample: “testname_2018-10-01T214040.cfg”

mimetype

string

The mimetype

Returned: success

Sample: “application/x-config-database”

factory

dictionary

A command status message

Returned: when factory is yes and success

msg

string

The command status message

Returned: success

Sample: “reverted the configuration to the factory configuration.”

get

list / elements=dictionary

A list containing information about the row(s)

Returned: when get is yes and success

data

dictionary

Column names/values

Returned: success

Sample: {“number”: “2”, “server”: “10.48.254.33”}

href

string

The REST API URL to the row

Returned: success

Sample:http://192.168.1.1/api/v1/misc/dns_servers/1

id

integer

The row id

Returned: success

Sample: 1

table

string

The name of the table

Returned: success

Sample: “Testname”

modify

list / elements=dictionary

A list containing information about the modified row

Returned: when modify is yes and success

data

dictionary

Column names/values

Returned: success

Sample: {“number”: “2”, “server”: “10.48.254.33”}

href

string

The REST API URL to the modified row

Returned: success

Sample:http://192.168.1.1/api/v1/misc/dns_servers/1

id

integer

The row id

Returned: success

Sample: 10

table

string

The name of the table

Returned: success

Sample: “Testname”

return_rowid

list / elements=string

The matched row id(s).

Returned: when return_rowid is yes and success

Sample: [1, 3]

revert

dictionary

A command status message

Returned: when revert is yes and success

msg

string

The command status message

Returned: success

Sample: “reverted the configuration to the last applied configuration.”

store

dictionary

A command status message

Returned: when store is yes and success

msg

string

The command status message

Returned: success

Sample: “Successfully applied and saved the configuration.”

Authors

  • Ingate Systems AB (@ingatesystems)