summaryrefslogtreecommitdiff
path: root/extensions/molecule
diff options
context:
space:
mode:
Diffstat (limited to 'extensions/molecule')
-rw-r--r--extensions/molecule/management/converge.yml7
-rw-r--r--extensions/molecule/management/inventory.yml34
-rw-r--r--extensions/molecule/management/molecule.yml27
-rw-r--r--extensions/molecule/management/topology.clab.yml14
-rw-r--r--extensions/molecule/management/verify.yml28
5 files changed, 110 insertions, 0 deletions
diff --git a/extensions/molecule/management/converge.yml b/extensions/molecule/management/converge.yml
new file mode 100644
index 0000000..fef5f49
--- /dev/null
+++ b/extensions/molecule/management/converge.yml
@@ -0,0 +1,7 @@
+---
+- name: Converge
+ hosts: vyos
+ gather_facts: false
+ roles:
+ - vyos.blueprints.base
+ - vyos.blueprints.management
diff --git a/extensions/molecule/management/inventory.yml b/extensions/molecule/management/inventory.yml
new file mode 100644
index 0000000..d784b03
--- /dev/null
+++ b/extensions/molecule/management/inventory.yml
@@ -0,0 +1,34 @@
+---
+all:
+ children:
+ vyos:
+ hosts:
+ r1:
+ ansible_host: clab-bp-mgmt-r1
+ vars:
+ ansible_network_os: vyos.vyos.vyos
+ ansible_connection: ansible.netcommon.network_cli
+ ansible_user: admin
+ ansible_password: admin
+ base_interfaces:
+ - name: eth1
+ addresses: [192.0.2.1/24]
+ management_snmp:
+ contact: molecule@example.net
+ location: containerlab
+ communities:
+ - name: molecule-ro
+ clients: [192.0.2.50]
+ trap_targets:
+ - address: 192.0.2.50
+ community: molecule-traps
+ management_syslog_hosts:
+ - host: 192.0.2.50
+ management_ntp_servers: [192.0.2.50]
+ # RADIUS login is configured but never used for the Molecule SSH session
+ # (local admin user stays first), so an unreachable server is harmless.
+ management_radius:
+ servers:
+ - address: 192.0.2.50
+ key: molecule-radius
+ timeout: 2
diff --git a/extensions/molecule/management/molecule.yml b/extensions/molecule/management/molecule.yml
new file mode 100644
index 0000000..612af0a
--- /dev/null
+++ b/extensions/molecule/management/molecule.yml
@@ -0,0 +1,27 @@
+---
+# VyOS runs as a container (containerlab kind vyosnetworks_vyos);
+# the lab is deployed in prepare and destroyed in cleanup.
+dependency:
+ name: galaxy
+ enabled: false
+driver:
+ name: default
+ options:
+ managed: false
+platforms:
+ - name: r1
+provisioner:
+ name: ansible
+ config_options:
+ defaults:
+ host_key_checking: false
+ persistent_connection:
+ command_timeout: 60
+ inventory:
+ links:
+ hosts: inventory.yml
+ playbooks:
+ prepare: ../_shared/lab_up.yml
+ cleanup: ../_shared/lab_down.yml
+verifier:
+ name: ansible
diff --git a/extensions/molecule/management/topology.clab.yml b/extensions/molecule/management/topology.clab.yml
new file mode 100644
index 0000000..8409449
--- /dev/null
+++ b/extensions/molecule/management/topology.clab.yml
@@ -0,0 +1,14 @@
+name: bp-mgmt
+topology:
+ nodes:
+ r1:
+ kind: vyosnetworks_vyos
+ image: ${VYOS_IMAGE:=vyos:blueprints-ci}
+ nms:
+ kind: linux
+ image: alpine:3
+ exec:
+ - ip addr add 192.0.2.50/24 dev eth1
+ - apk add --no-cache net-snmp-tools
+ links:
+ - endpoints: ["r1:eth1", "nms:eth1"]
diff --git a/extensions/molecule/management/verify.yml b/extensions/molecule/management/verify.yml
new file mode 100644
index 0000000..17704b4
--- /dev/null
+++ b/extensions/molecule/management/verify.yml
@@ -0,0 +1,28 @@
+---
+- name: Verify role state
+ hosts: vyos
+ gather_facts: false
+ tasks:
+ - name: Run role checks
+ ansible.builtin.include_role:
+ name: vyos.blueprints.management
+ tasks_from: verify
+
+- name: Verify SNMP answers the NMS
+ hosts: localhost
+ gather_facts: false
+ tasks:
+ - name: Query sysLocation from the NMS container
+ ansible.builtin.command:
+ cmd: >-
+ docker exec clab-bp-mgmt-nms
+ snmpget -v2c -c molecule-ro -t 3 -r 3 192.0.2.1 SNMPv2-MIB::sysLocation.0
+ become: "{{ lookup('ansible.builtin.env', 'CLAB_BECOME', default='true') | bool }}"
+ register: _snmpget
+ changed_when: false
+ no_log: true
+
+ - name: The sysLocation value matches
+ ansible.builtin.assert:
+ that: "'containerlab' in _snmpget.stdout"
+ quiet: true