From 8094d3de4bdebcb6d54dbae215d41dbb75564791 Mon Sep 17 00:00:00 2001 From: Karel van Klink <karel.vanklink@geant.org> Date: Tue, 31 Jan 2023 11:52:29 +0100 Subject: [PATCH] Update ContainerLab install and test Add test topology Add plays that run test topology, inspect, and destroy when finished Delete unused groups gap_repos and kvm Update README.md --- README.md | 18 ++++---- deploy_repos.yaml | 5 --- group_vars/dev_environments.yml | 20 ++------- roles/containerlab/tasks/main.yml | 41 +++++++++++++++++++ .../templates/test_topology.clab.yml | 9 ++++ roles/gap_repos/tasks/main.yml | 37 ----------------- roles/kvm/tasks/main.yml | 10 ----- 7 files changed, 61 insertions(+), 79 deletions(-) delete mode 100644 deploy_repos.yaml create mode 100644 roles/containerlab/templates/test_topology.clab.yml delete mode 100644 roles/gap_repos/tasks/main.yml delete mode 100644 roles/kvm/tasks/main.yml diff --git a/README.md b/README.md index bc54638..a4c7d21 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ -Ansible playbook for deploying a containerlab node +# Ansible playbook for deploying a ContainerLab node -This playbook is used to install containerlab on a VM, and test network configurations. +This playbook is used to install ContainerLab on a VM, and test network configurations. To run this playbook: @@ -8,20 +8,16 @@ To run this playbook: 2. Get the ip address of the new VM, and configure your ssh environment 3. Create & activate a python virtual environment and install ansible 4. Update inventory.yml so that your VM is defined in the "dev_environments" goup - 5. Run ansible like this: ansible-playbook -i inventory.yml playbook.yml - - note: to run ansible, you'll also need to update group_vars/dev_environments.yml with the S3 access key & secret - -Containerlab project template(s) are installed from here, in the ~nat users's home directory: -https://gitlab.geant.org/nat/ansible-containerlab/-/tree/main/roles/dev_networks/files - + 5. update group_vars/dev_environments.yml with your gitlab.geant.net username and personal access token + 6. Run ansible like this: ansible-playbook -i inventory.yml playbook.yml + To ssh into the nat user's shell, you'll need the containerlab-rsa private key ("b3BlbnNzaC1rZXktdjEAAAAABG5...") -To start containerlab (e.g. project lab01): +To start ContainerLab (e.g. project lab01): 1. shell into the nat user 2. cd lab01 3. sudo containerlab deploy -To view the currently running containerlab status: +To view the currently running ContainerLab status: 1. navigate to the same directory as above (e.g. lab01) 2. sudo containerlab inspect diff --git a/deploy_repos.yaml b/deploy_repos.yaml deleted file mode 100644 index e70253a..0000000 --- a/deploy_repos.yaml +++ /dev/null @@ -1,5 +0,0 @@ -- name: System Setup - hosts: dev_environments - become: true - roles: - - gap_repos diff --git a/group_vars/dev_environments.yml b/group_vars/dev_environments.yml index cb17ff1..ce4e138 100644 --- a/group_vars/dev_environments.yml +++ b/group_vars/dev_environments.yml @@ -1,18 +1,6 @@ -s3: - access_key: XXXXXXXXXXXXXXXXX - secret_key: XXXXXXXXXXXXXXXXX - region: eu-central-1 - bucket: geant-nat-emulation-images - -normal_images: - - filename: cEOS-lab-4.28.2.1F.tar - image_name: ceos - image_tag: 4.28.1.1F - -vrnetlab_images: - - vm_image: vmx-bundle-18.2R1.9.tgz - integration: vmx - image_name: vrnetlab/vr-vmx - image_tag: 18.2R1.9 +docker: + registry_url: gitlab.geant.net:5005/docker/ci_registry + username: # first.lastname + private_token: # some-secret-token nat_user: nat diff --git a/roles/containerlab/tasks/main.yml b/roles/containerlab/tasks/main.yml index 6cab3f4..d449a89 100644 --- a/roles/containerlab/tasks/main.yml +++ b/roles/containerlab/tasks/main.yml @@ -10,3 +10,44 @@ ansible.builtin.apt: pkg: - containerlab + +- name: Log in on Docker repository + community.docker.docker_login: + registry_url: '{{ docker.registry_url }}' + username: '{{ docker.username }}' + password: '{{ docker.private_token }}' + +- name: Pull vMX image from Docker repository + community.docker.docker_image: + name: '{{ docker.registry_url }}/vrnetlab/vr-vmx:18.2R1.9' + source: pull + +- name: Move test topology onto remote machine + ansible.builtin.template: + src: test_topology.clab.yml + dest: /root/test_topology.clab.yml + become: true + +- name: Run test topology + ansible.builtin.command: + chdir: /root + cmd: containerlab deploy + become: true + +- name: Inspect current ContainerLab topology + ansible.builtin.command: + chdir: /root + cmd: containerlab inspect --format json + become: true + register: deploy_output + +- name: Return ContainerLab deploy result + ansible.builtin.debug: + msg: '{{ deploy_output.stdout }}' + when: deploy_output is defined + +- name: Destroy ContainerLab test environment + ansible.builtin.command: + chdir: /root + cmd: containerlab destroy + become: true diff --git a/roles/containerlab/templates/test_topology.clab.yml b/roles/containerlab/templates/test_topology.clab.yml new file mode 100644 index 0000000..484b10b --- /dev/null +++ b/roles/containerlab/templates/test_topology.clab.yml @@ -0,0 +1,9 @@ +name: test_topology + +topology: + kinds: + vr-vmx: + image: '{{ docker.registry_url }}/vrnetlab/vr-vmx:18.2R1.9' + nodes: + vmx1: + kind: vr-vmx diff --git a/roles/gap_repos/tasks/main.yml b/roles/gap_repos/tasks/main.yml deleted file mode 100644 index 629befb..0000000 --- a/roles/gap_repos/tasks/main.yml +++ /dev/null @@ -1,37 +0,0 @@ ---- -# tasks file for gap_repos -# -#- name: Git clone GAP test inventory -# shell: "git clone git@gitlab.geant.org:nat/gap_test_inventory.git /var/tmp/inventory" -# delegate_to: localhost -- name: Get the username running the deploy - become: false - local_action: command whoami - register: local_username - -- name: Git checkout GAP Ansible repo - ansible.builtin.git: - repo: git@gitlab.geant.org:nat/uat_environment/lab_network_ansible.git - dest: /var/tmp/gap_ansible - #version: release-0.22 - delegate_to: localhost - become_user: "{{ local_username.stdout }}" - -- name: Git checkout GAP reference topology - ansible.builtin.git: - repo: git@gitlab.geant.org:nat/cl-topologies/reference_topology.git - dest: /var/tmp/gap_reference_topology - clone: yes - #version: release-0.22 - delegate_to: localhost - become_user: "{{ local_username.stdout }}" - -- name: Copy GAP Ansible on the target - ansible.builtin.copy: - src: /var/tmp/gap_ansible - dest: ~/gap_reference_topolog/gap_ansible - -- name: Copy GAP Refernece topoloy on the target - ansible.builtin.copy: - src: /var/tmp/gap_reference_topology - dest: ~/ diff --git a/roles/kvm/tasks/main.yml b/roles/kvm/tasks/main.yml deleted file mode 100644 index da315fb..0000000 --- a/roles/kvm/tasks/main.yml +++ /dev/null @@ -1,10 +0,0 @@ -- name: Install Packages - ansible.builtin.apt: - pkg: - - qemu-kvm - - virt-manager - - libvirt-daemon-system - - virtinst - - libvirt-clients - - bridge-utils - update_cache: true -- GitLab