--- - name: "Containerlab Installation" hosts: all become: true vars_files: - ./clab_vars.yml tasks: - name: Set hostname to ContainerLab ansible.builtin.hostname: name: ContainerLab - name: Install required system packages ansible.builtin.apt: pkg: - apt-transport-https - ca-certificates - curl - software-properties-common - python3-pip - virtualenv - python3-setuptools - git - tree - htop - rsync - docker-compose-plugin update_cache: true - name: Add Docker GPG apt Key ansible.builtin.apt_key: url: https://download.docker.com/linux/ubuntu/gpg state: present - name: Add Docker Repository ansible.builtin.apt_repository: repo: deb https://download.docker.com/linux/ubuntu focal stable state: present - name: Update apt and install docker ansible.builtin.apt: pkg: - docker - docker-compose update_cache: true - name: Add the current user to the docker group ansible.builtin.user: name: "{{ ansible_user_id }}" group: docker - name: Add Tailscale GPG apt Key ansible.builtin.apt_key: url: https://pkgs.tailscale.com/stable/ubuntu/focal.noarmor.gpg state: present - name: Add Tailscale Repository ansible.builtin.apt_repository: repo: deb https://pkgs.tailscale.com/stable/ubuntu/ focal main state: present filename: tailscale update_cache: true - name: Update apt and install Tailscale ansible.builtin.apt: name: tailscale update_cache: true - name: Run Tailscale CLI command ansible.builtin.command: "sudo tailscale up --authkey {{ tailscale_auth_key }}" register: tailscale_output changed_when: tailscale_output.rc != 0 - name: Add ContainerLab Repository ansible.builtin.apt_repository: repo: deb [trusted=yes] https://apt.fury.io/netdevops/ / state: present filename: netdevops.list update_cache: true - name: Update apt and install ContainerLab ansible.builtin.apt: name: containerlab update_cache: true - name: Ensure /opt/containerlab directory exists ansible.builtin.file: path: /opt/containerlab state: directory mode: '0755' owner: admin group: admin become: true - name: Ensure user 'admin' exists ansible.builtin.user: name: admin append: true groups: docker shell: /bin/bash become: true - name: Ensure the /opt/edgeshark directory exists ansible.builtin.file: path: /opt/edgeshark state: directory mode: '0755' - name: Download the edgeshark docker-compose.yaml file ansible.builtin.get_url: url: https://github.com/siemens/edgeshark/raw/main/deployments/wget/docker-compose.yaml dest: "/opt/edgeshark/docker-compose.yaml" mode: '0644' - name: Clone specified GitHub repository to /opt/containerlab ansible.builtin.git: repo: "{{ repo_git_url }}" dest: "/opt/containerlab/projet/" accept_hostkey: true clone: true update: true version: "main" become: true when: (repo_git_url is defined) and (repo_git_url | length > 0) - name: Synchronize local directory to VM ansible.posix.synchronize: src: "{{ local_dir_path }}" dest: "/opt/containerlab/projet/" recursive: true become: true when: (local_dir_path is defined) and (local_dir_path | length > 0) - name: Copy network images to remote /tmp directory ansible.builtin.copy: src: "{{ item }}" dest: "/tmp/{{ item | basename }}" mode: '0755' with_fileglob: - "../network_images/*" when: - inventory_hostname in groups['all']