Files
AWS-ContainerLab-Deployment/ansible/install_containerlab.yml
Damien A 315910772c Feature/tailscale access (#1)
* AWS_R53_ENABLED: Delete unused variable

* Add Tailscale Feature
- Removed R53 configuration
- Updated Ansible playbook to handle empty variables
- Updated Ansible playbook to use variables file
- Updated README to include updated requirements

---------

Co-authored-by: Damien A <sepales.pret0h@icloud.com>
2024-02-25 17:25:34 +01:00

119 lines
2.8 KiB
YAML
Executable File

---
- hosts: all
become: yes
vars_files:
- ./clab_vars.yml
tasks:
- name: Set hostname to ContainerLab
hostname:
name: ContainerLab
- 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: Add Tailscale GPG apt Key
apt_key:
url: https://pkgs.tailscale.com/stable/ubuntu/focal.noarmor.gpg
state: present
- name: Add Tailscale Repository
apt_repository:
repo: deb https://pkgs.tailscale.com/stable/ubuntu/ focal main
state: present
filename: tailscale
update_cache: yes
- name: Update apt and install Tailscale
apt:
name: tailscale
state: latest
update_cache: yes
- name: Run Tailscale CLI command
command: "sudo tailscale up --authkey {{ tailscale_auth_key }}"
- 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 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: yes
become: yes
when: (local_dir_path is defined) and (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']