Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
91 changes: 80 additions & 11 deletions cloudmon/ansible/project/roles/apimon_executor/tasks/main.yml
Original file line number Diff line number Diff line change
@@ -1,26 +1,95 @@
---
# tasks file for executor

- name: Include variables
include_vars: "{{ lookup('first_found', params) }}"
ansible.builtin.include_vars: "{{ lookup('first_found', params) }}"
vars:
params:
files: "{{ distro_lookup_path }}"
paths:
- "vars"

- name: Update apt cache on Ubuntu
ansible.builtin.apt:
update_cache: true
when:
- ansible_facts.distribution == 'Ubuntu'
- ansible_facts.pkg_mgr != 'atomic_container'

- name: Remove conflicting Ubuntu Docker packages
ansible.builtin.package:
state: absent
name: "{{ remove_packages }}"
when:
- ansible_facts.distribution == 'Ubuntu'
- remove_packages is defined
- ansible_facts.pkg_mgr != 'atomic_container'
register: remove_result
until: remove_result is success
retries: 5

- name: Install required packages
become: true
ansible.builtin.package:
state: present
name: "{{ item }}"
loop:
- "{{ packages }}"
name: "{{ packages }}"
when: "ansible_facts.pkg_mgr != 'atomic_container'"
register: task_result
until: task_result is success
register: install_result
until: install_result is success
retries: 5

- name: Clean up stale sockets after package changes
block:
- name: Stop Docker service and socket
ansible.builtin.systemd:
name: "{{ item }}"
state: stopped
loop:
- docker.service
- docker.socket
failed_when: false

- name: Remove stale Docker socket and PID files
ansible.builtin.file:
path: "{{ item }}"
state: absent
loop:
- /var/run/docker.sock
- /var/run/docker.pid
when:
- remove_result is changed or install_result is changed
- ansible_facts.distribution == 'Ubuntu'
- ansible_facts.distribution_major_version == '22'

- name: Clear systemd rate-limits and prepare containerd
block:
- name: Reset systemd failed state for Docker units
ansible.builtin.systemd:
name: "{{ item }}"
reset_failed: true
loop:
- docker.socket
- docker.service
failed_when: false

- name: Ensure containerd service is started and enabled
ansible.builtin.systemd:
name: containerd
state: started
enabled: true
when:
- ansible_facts.distribution == 'Ubuntu'
- ansible_facts.distribution_major_version == '22'

- name: Start and enable Docker socket and daemon
ansible.builtin.systemd:
name: "{{ item }}"
state: started
enabled: true
loop:
- docker.socket
- docker.service
when:
- ansible_facts.distribution == 'Ubuntu'
- ansible_facts.distribution_major_version == '22'

- name: Create executor group
become: yes
ansible.builtin.group:
Expand All @@ -33,7 +102,7 @@
name: "{{ executor_os_user }}"
group: "{{ executor_os_group }}"
groups: "{{ (container_command == 'docker') | ternary('docker', '', omit) }}"
state: "present"
state: present

- name: Write Executor SystemD unit file
become: true
Expand All @@ -47,7 +116,7 @@
become: true
ansible.builtin.file:
dest: "{{ item.dest }}"
state: "directory"
state: directory
owner: "{{ executor_os_user }}"
group: "{{ executor_os_group }}"
mode: "{{ item.mode | default(omit) }}"
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
---
ansible_python_interpreter: "/usr/bin/python3"
remove_packages: []

packages:
- docker.io
container_command: docker
17 changes: 17 additions & 0 deletions cloudmon/ansible/project/roles/apimon_executor/vars/Ubuntu.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
---
remove_packages:
- docker.io
- docker-doc
- docker-compose
- podman-docker
- containerd
- runc

packages:
- docker-ce
- docker-ce-cli
- containerd.io
- docker-buildx-plugin
- docker-compose-plugin

container_command: docker
90 changes: 81 additions & 9 deletions cloudmon/ansible/project/roles/apimon_scheduler/tasks/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,26 +2,98 @@
# tasks file for scheduler

- name: Include variables
include_vars: "{{ lookup('first_found', params) }}"
ansible.builtin.include_vars: "{{ lookup('first_found', params) }}"
vars:
params:
files: "{{ distro_lookup_path }}"
paths:
- "vars"

- name: Update apt cache on Ubuntu
ansible.builtin.apt:
update_cache: true
when:
- ansible_facts.distribution == 'Ubuntu'
- ansible_facts.pkg_mgr != 'atomic_container'

- name: Remove conflicting Ubuntu Docker packages
ansible.builtin.package:
state: absent
name: "{{ remove_packages }}"
when:
- ansible_facts.distribution == 'Ubuntu'
- remove_packages is defined
- ansible_facts.pkg_mgr != 'atomic_container'
register: remove_result
until: remove_result is success
retries: 5

- name: Install required packages
become: true
ansible.builtin.package:
state: present
name: "{{ item }}"
loop:
- "{{ packages }}"
name: "{{ packages }}"
when: "ansible_facts.pkg_mgr != 'atomic_container'"
register: task_result
until: task_result is success
register: install_result
until: install_result is success
retries: 5

- name: Clean up stale sockets after package changes
block:
- name: Stop Docker service and socket
ansible.builtin.systemd:
name: "{{ item }}"
state: stopped
loop:
- docker.service
- docker.socket
failed_when: false

- name: Remove stale Docker socket and PID files
ansible.builtin.file:
path: "{{ item }}"
state: absent
loop:
- /var/run/docker.sock
- /var/run/docker.pid
when:
- remove_result is changed or install_result is changed
- ansible_facts.distribution == 'Ubuntu'
- ansible_facts.distribution_major_version == '22'

- name: Clear systemd rate-limits and prepare containerd
block:
- name: Reset systemd failed state for Docker units
ansible.builtin.systemd:
name: "{{ item }}"
reset_failed: true
loop:
- docker.socket
- docker.service
failed_when: false

- name: Ensure containerd service is started and enabled
ansible.builtin.systemd:
name: containerd
state: started
enabled: true
when:
- ansible_facts.distribution == 'Ubuntu'
- ansible_facts.distribution_major_version == '22'

- name: Start and enable Docker socket and daemon
ansible.builtin.systemd:
name: "{{ item }}"
state: started
enabled: true
loop:
- docker.socket
- docker.service
when:
- ansible_facts.distribution == 'Ubuntu'
- ansible_facts.distribution_major_version == '22'

- include_tasks: firewall.yml
when: cloudmon_manage_firewall | default(true) | bool

- name: Create scheduler group
become: yes
Expand All @@ -35,7 +107,7 @@
name: "{{ scheduler_os_user }}"
group: "{{ scheduler_os_group }}"
groups: "{{ (container_command == 'docker') | ternary('docker', '', omit) }}"
state: "present"
state: present

- name: Write Scheduler SystemD unit file
become: true
Expand All @@ -49,7 +121,7 @@
become: true
ansible.builtin.file:
dest: "{{ item.dest }}"
state: "directory"
state: directory
owner: "{{ scheduler_os_user }}"
group: "{{ scheduler_os_group }}"
mode: "{{ item.mode | default(omit) }}"
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
---
ansible_python_interpreter: "/usr/bin/python3"
remove_packages: []

packages:
- docker.io
- firewalld
- python3-firewall
container_command: docker
17 changes: 17 additions & 0 deletions cloudmon/ansible/project/roles/apimon_scheduler/vars/Ubuntu.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
---
remove_packages:
- docker.io
- docker-doc
- docker-compose
- podman-docker
- containerd
- runc

packages:
- docker-ce
- docker-ce-cli
- containerd.io
- docker-buildx-plugin
- docker-compose-plugin

container_command: docker
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
deb http://de.archive.ubuntu.com/ubuntu jammy main universe
deb http://de.archive.ubuntu.com/ubuntu jammy-updates main universe
deb http://de.archive.ubuntu.com/ubuntu jammy-backports main universe
deb http://de.archive.ubuntu.com/ubuntu jammy-security main universe
deb [arch=amd64 signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu jammy stable
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
deb http://de.archive.ubuntu.com/ubuntu noble main universe
deb http://de.archive.ubuntu.com/ubuntu noble-updates main universe
deb http://de.archive.ubuntu.com/ubuntu noble-backports main universe
deb http://de.archive.ubuntu.com/ubuntu noble-security main universe
deb [arch=amd64 signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu noble stable
19 changes: 19 additions & 0 deletions cloudmon/ansible/project/roles/base/repos/tasks/Debian.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
- name: Ensure /etc/apt/keyrings directory exists
ansible.builtin.file:
path: /etc/apt/keyrings
state: directory
mode: '0755'

- name: Download Docker official GPG key
ansible.builtin.get_url:
url: https://download.docker.com/linux/ubuntu/gpg
dest: /etc/apt/keyrings/docker.asc
mode: '0644'
failed_when: false
when:
- ansible_facts.distribution == 'Ubuntu'
- ansible_facts.distribution_major_version == '22'

- name: Configure apt retries
copy:
mode: 0444
Loading