- Personal SSH Key 🔐 - Deploy repository from variables ⚙️ - Import custom network images 🛜
90 lines
2.2 KiB
YAML
90 lines
2.2 KiB
YAML
---
|
|
- hosts: all
|
|
become: yes
|
|
vars:
|
|
repo_git_url: ""
|
|
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
|
|
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/"
|
|
clone: yes
|
|
update: yes
|
|
version: "main"
|
|
become: yes
|
|
when: repo_git_url | 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'] |