feat: complete base docker setup
This commit is contained in:
parent
79c8123c6f
commit
d240fcc735
2 changed files with 45 additions and 5 deletions
|
|
@ -1,2 +1,5 @@
|
||||||
[homelab]
|
[homelab]
|
||||||
10.0.10.50
|
10.0.10.50
|
||||||
|
|
||||||
|
[docker]
|
||||||
|
10.0.10.50 docker_swarm_manager=true
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,6 @@
|
||||||
|
|
||||||
|
# > /COPILOT_GENERATE I'm writing an ansible playbook to setup a new alpine server, I want you to help me to generate some tasks
|
||||||
|
|
||||||
- name: Setup an alpine machine
|
- name: Setup an alpine machine
|
||||||
hosts: homelab
|
hosts: homelab
|
||||||
user: root
|
user: root
|
||||||
|
|
@ -82,11 +85,25 @@
|
||||||
key: "{{ robo.authorized_key }}"
|
key: "{{ robo.authorized_key }}"
|
||||||
key_options: "command=\"{{ robo.allowed_commands | join('; ') }}\""
|
key_options: "command=\"{{ robo.allowed_commands | join('; ') }}\""
|
||||||
|
|
||||||
|
handlers:
|
||||||
|
- name: Restart sshd
|
||||||
|
ansible.builtin.service:
|
||||||
|
name: sshd
|
||||||
|
state: restarted
|
||||||
|
|
||||||
|
- name: Setup Docker
|
||||||
|
hosts: docker
|
||||||
|
user: root
|
||||||
|
vars_files:
|
||||||
|
../../variables/secrets.yaml
|
||||||
|
tasks:
|
||||||
- name: Install packages
|
- name: Install packages
|
||||||
ansible.builtin.package:
|
ansible.builtin.package:
|
||||||
state: present
|
state: present
|
||||||
name:
|
name:
|
||||||
- docker
|
- docker
|
||||||
|
- py3-pip
|
||||||
|
- py3-docker-py
|
||||||
|
|
||||||
- name: Start docker service
|
- name: Start docker service
|
||||||
ansible.builtin.service:
|
ansible.builtin.service:
|
||||||
|
|
@ -94,8 +111,28 @@
|
||||||
state: started
|
state: started
|
||||||
enabled: true
|
enabled: true
|
||||||
|
|
||||||
handlers:
|
- name: Setup Docker Swarm
|
||||||
- name: Restart sshd
|
when: docker_swarm_manager | bool
|
||||||
ansible.builtin.service:
|
block:
|
||||||
name: sshd
|
- name: Enable Docker Swarm mode
|
||||||
state: restarted
|
community.docker.docker_swarm:
|
||||||
|
state: present
|
||||||
|
advertise_addr: "{{ ansible_default_ipv4.address }}"
|
||||||
|
|
||||||
|
- name: Check if Docker context exists
|
||||||
|
local_action: ansible.builtin.command docker context inspect {{ ansible_hostname }}
|
||||||
|
register: context_exists
|
||||||
|
ignore_errors: true
|
||||||
|
|
||||||
|
- name: Create Docker context for each Swarm manager machine
|
||||||
|
local_action: >
|
||||||
|
ansible.builtin.command docker context create {{ ansible_hostname }} --docker "host=ssh://{{ ansible_default_ipv4.address }}"
|
||||||
|
when: context_exists.stderr != ''
|
||||||
|
|
||||||
|
- name: Join Docker Swarm as a worker
|
||||||
|
community.docker.docker_swarm:
|
||||||
|
state: join
|
||||||
|
join_token: "{{ hostvars['manager']['docker_swarm_worker_token'] }}"
|
||||||
|
remote_addrs: ["{{ hostvars['manager']['ansible_default_ipv4']['address'] }}"]
|
||||||
|
when: not docker_swarm_manager | bool
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue