From c931bc313b28592ad9e6893926f947621d7d49e7 Mon Sep 17 00:00:00 2001 From: Adw8 Date: Mon, 9 Sep 2024 19:04:05 +0530 Subject: [PATCH] Add playbooks for setting up docker and stack orchestrator --- docker-setup/setup-docker.yml | 93 +++++++++++++++++++++++++++++++ docker-setup/setup-laconic-so.yml | 48 ++++++++++++++++ 2 files changed, 141 insertions(+) create mode 100644 docker-setup/setup-docker.yml create mode 100644 docker-setup/setup-laconic-so.yml diff --git a/docker-setup/setup-docker.yml b/docker-setup/setup-docker.yml new file mode 100644 index 0000000..aeb148f --- /dev/null +++ b/docker-setup/setup-docker.yml @@ -0,0 +1,93 @@ +- name: Set up Docker + hosts: remote_host + become: yes + vars: + docker_gpg_key_url: "https://download.docker.com/linux/ubuntu/gpg" + docker_gpg_key_path: "/etc/apt/keyrings/docker.asc" + + tasks: + - name: Check if Docker is installed + command: which docker + register: is_docker_present + ignore_errors: yes + + - name: Check if docker is present + debug: + var: "Output of `which docker` is {{ is_docker_present }}" + + - block: + - name: "end play if nothing to upgrade" + debug: + msg: "Docker already on host, ending play" + - meta: end_play + when: is_docker_present.rc == 0 + + - name: Update apt cache + apt: + update_cache: yes + + - name: Install prerequisites + apt: + name: + - ca-certificates + - curl + state: present + + - name: Ensure keyrings directory exists + file: + path: "/etc/apt/keyrings" + state: directory + mode: '0755' + + - name: Download Docker GPG key + get_url: + url: "{{ docker_gpg_key_url }}" + dest: "{{ docker_gpg_key_path }}" + mode: '0644' + + + - name: Get system architecture + shell: dpkg --print-architecture + register: system_arch + + - name: Add Docker repository + apt_repository: + repo: "deb [arch={{ system_arch.stdout }} signed-by={{ docker_gpg_key_path }}] https://download.docker.com/linux/ubuntu {{ ansible_lsb.codename }} stable" + state: present + filename: docker + + - name: Update apt cache + apt: + update_cache: yes + + - name: Install Docker packages + apt: + name: + - docker-ce + - docker-ce-cli + - containerd.io + - docker-buildx-plugin + - docker-compose-plugin + state: latest + + - name: Verify Docker installation + command: docker run hello-world + register: hello_world_output + changed_when: false + + - name: Display hello-world output + debug: + var: hello_world_output.stdout_lines + + - name: Add user to docker group + user: + name: "{{ ansible_user }}" + groups: docker + append: true + + handlers: + - name: Restart Docker + service: + name: docker + state: restarted + diff --git a/docker-setup/setup-laconic-so.yml b/docker-setup/setup-laconic-so.yml new file mode 100644 index 0000000..b9a2517 --- /dev/null +++ b/docker-setup/setup-laconic-so.yml @@ -0,0 +1,48 @@ +- name: Set up Stack Orchestrator + hosts: remote_host + vars: + + tasks: + + - name: Install Docker if it isn't present + import_playbook: setup-docker.yml + + - name: Install jq + apt: + name: jq + state: present + update_cache: yes + become: yes + + - name: Ensure that directory ~/bin exists and is writable + file: + path: ~/bin + state: directory + mode: '0755' + + - name: Download the laconic-so binary + get_url: + url: https://git.vdb.to/cerc-io/stack-orchestrator/releases/download/latest/laconic-so + dest: "{{ ansible_env.HOME }}/bin/laconic-so" + mode: '0755' + force: yes + + - name: Ensure ~/bin is on the PATH in .zshrc + lineinfile: + path: "{{ ansible_env.HOME }}/.zshrc" + regexp: '^export PATH=.*~/bin' + line: 'export PATH="$HOME/bin:$PATH"' + state: present + + - name: Ensure ~/.laconic-so directory exists + file: + path: ~/.laconic-so + state: directory + mode: '0755' + + - name: Save the distribution url to ~/.laconic-so directory + copy: + dest: ~/.laconic-so/config.yml + content: | + distribution-url: https://git.vdb.to/cerc-io/stack-orchestrator/releases/download/latest/laconic-so + mode: '0644'