Files
AWS-ContainerLab-Deployment/ansible/install_containerlab.yml
2023-12-21 17:47:23 +01:00

101 lines
2.5 KiB
YAML

---
- hosts: all
become: yes
vars:
repo_git_url: ""
local_dir_path: ""
tasks:
- name: Install required system packages
apt:
pkg:
- apt-transport-https
- ca-certificates
- curl
- software-properties-common
- python3-pip
- virtualenv
- python3-setuptools
- git
- tree
- htop
- rsync
state: latest
update_cache: true
- name: Add Docker GPG apt Key
apt_key:
url: https://download.docker.com/linux/ubuntu/gpg
state: present
- name: Add Docker Repository
apt_repository:
repo: deb https://download.docker.com/linux/ubuntu focal stable
state: present
- name: Update apt and install docker-ce
apt:
name: docker-ce
state: latest
update_cache: true
- name: Add the current user to the docker group
user:
name: "{{ ansible_user_id }}"
group: docker
- name: Install ContainerLab
shell: |
curl -sL https://get.containerlab.dev | sudo bash
args:
creates: /usr/local/bin/containerlab
- name: Ensure /opt/containerlab directory exists
file:
path: /opt/containerlab
state: directory
mode: '0755'
owner: admin
group: admin
become: yes
- name: Ensure user 'admin' exists
user:
name: admin
append: yes
groups: docker
shell: /bin/bash
become: yes
- name: Clone specified GitHub repository to /opt/containerlab
git:
repo: "{{ repo_git_url }}"
dest: "/opt/containerlab/projet/"
accept_hostkey: yes
clone: yes
update: yes
version: "main"
become: yes
when: repo_git_url | length > 0
- name: Synchronize local directory to VM
synchronize:
src: "{{ local_dir_path }}"
dest: "/opt/containerlab/projet/"
recursive: yes
become: yes
when: local_dir_path | length > 0
- name: Copy network images to remote /tmp directory
copy:
src: "{{ item }}"
dest: "/tmp/{{ item | basename }}"
with_fileglob:
- "../network_images/*"
when: inventory_hostname in groups['all']
- name: Import network image to Docker with specific tag
command:
cmd: "docker import /tmp/{{ item | basename }} {{ (item | basename | regex_replace('^(\\D+)-.*-(.*)\\.tar\\.xz', '\\1')) | lower }}:{{ item | basename | regex_replace('^(\\D+)-.*-(.*)\\.tar\\.xz', '\\2') }}"
loop: "{{ query('fileglob', '../network_images/*.tar.xz') }}"
when: inventory_hostname in groups['all']