@installdoc/ansible-gas-station
Version:
An Ansible playbook that provisions your network with software from GitHub Awesome lists, developed with disaster recovery in mind ⛽🔥🤤
74 lines (66 loc) • 2.04 kB
YAML
- name: Ensure dependencies are installed
pip:
name:
- jsondiff
- pyyaml
- docker
state: present
when: swarm_master is defined and swarm_master
- name: Initialize Docker Swarm
community.docker.docker_swarm:
advertise_addr: "{{ warp_ip }}"
state: present
when: swarm_master is defined and swarm_master
- name: Check if Docker Swarm Manager is configured
community.docker.docker_swarm_info:
ignore_errors: true
register: swarm_info
delegate_to: "{%- for host in hostvars -%}
{%- if hostvars[host].swarm_master is defined and hostvars[host].swarm_master -%}
{{host}}{%- endif -%}{%- endfor -%}"
when: swarm_node is defined and swarm_node
- name: Add nodes to the Swarm cluster
community.docker.docker_swarm:
state: join
join_token: "{{ swarm_info.swarm_facts.JoinTokens.Worker }}"
remote_addrs: [ "{{ warp_ip }}" ]
when: swarm_node is defined and swarm_node
- name: Ensure /srv/stacks directory exists
become_user: root
file:
path: /srv/stacks
mode: 0755
state: directory
owner: "{{ ansible_user }}"
when: swarm_master is defined and swarm_master
- name: Ensure Stack files are copied
copy:
src: "templates/{{ stack.app_name }}.docker-stack.yml"
dest: /srv/stacks
mode: 0644
loop: "{{ docker_stacks }}"
loop_control:
label: "{{ stack.app_name }}"
loop_var: stack
when: swarm_master is defined and swarm_master
- name: Ensure Secrets are created
include_tasks: secrets.yml
loop: "{{ docker_stacks }}"
loop_control:
label: "{{ stack.app_name }}"
loop_var: stack
when:
- swarm_master is defined and swarm_master
- stack.environment is defined
- name: Ensure Stacks are deloyed
community.docker.docker_stack:
name: "{{ stack.app_name }}"
state: present
compose:
- "/srv/stacks/{{ stack.app_name }}.docker-stack.yml"
loop: "{{ docker_stacks }}"
loop_control:
label: "{{ stack.app_name }}"
loop_var: stack
when: swarm_master is defined and swarm_master