This commit is contained in:
parent
068fabbc2c
commit
44d3cfa8dd
@ -1,24 +1,35 @@
|
|||||||
# Standards: 0.1
|
|
||||||
---
|
---
|
||||||
# @var custodian_image:description: Docker image to use
|
# @var dockertidy_image:description: Docker image to use.
|
||||||
custodian_image: toolhippie/docker-custodian:latest
|
dockertidy_image: xoxys/docker-tidy:latest
|
||||||
|
|
||||||
# @var custodian_interval:description: Interval for the systemd timer
|
# @var dockertidy_interval:description: Interval for the systemd timer.
|
||||||
custodian_interval: daily
|
dockertidy_interval: daily
|
||||||
|
|
||||||
# @var custodian_max_container_age:description: Max container age
|
# @var dockertidy_dry_run:description: Only log actions, don't cleanup anything.
|
||||||
custodian_max_container_age: 3days
|
dockertidy_dry_run: False
|
||||||
|
|
||||||
# @var custodian_max_image_age:description: Max image age
|
# @var dockertidy_log_level:description: Current log level.
|
||||||
custodian_max_image_age: 3days
|
dockertidy_log_level: warning
|
||||||
|
|
||||||
# @var custodian_dangling_volumes:description: Remove dangling volumes
|
# @var dockertidy_max_container_age:description: >
|
||||||
custodian_dangling_volumes: False
|
# Maximum age for a container, containers older than this age will be removed.
|
||||||
|
# @end
|
||||||
|
dockertidy_max_container_age: "5 days ago"
|
||||||
|
|
||||||
# @var custodian_exclude_image:description: List of images to exclude
|
# @var dockertidy_max_image_age:description: >
|
||||||
custodian_exclude_image: []
|
# Maxium age for an image, images older than this age will be removed.
|
||||||
|
# @end
|
||||||
|
dockertidy_max_image_age: "3 days ago"
|
||||||
|
|
||||||
# @var custodian_exclude_container_label:description: List of labels to exclude+
|
# @var dockertidy_dangling_volumes:description: Remove dangling volumes.
|
||||||
custodian_exclude_container_label: []
|
dockertidy_dangling_volumes: False
|
||||||
|
|
||||||
...
|
# @var dockertidy_exclude_image:description: Never remove images with this tag.
|
||||||
|
dockertidy_exclude_images: []
|
||||||
|
|
||||||
|
# @var dockertidy_exclude_container_label:description: >
|
||||||
|
# Never remove containers with this label `key` or label `key=value`.
|
||||||
|
# @end
|
||||||
|
dockertidy_exclude_container_labels: []
|
||||||
|
|
||||||
|
dockertidy_docker_socket_path: /var/run/docker.sock
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
# Standards: 0.1
|
|
||||||
---
|
---
|
||||||
- name: Restart custodian
|
- name: Restart docker-tidy
|
||||||
systemd:
|
systemd:
|
||||||
name: custodian.timer
|
|
||||||
state: restarted
|
state: restarted
|
||||||
daemon_reload: True
|
daemon_reload: yes
|
||||||
|
name: tidy
|
||||||
...
|
listen: __tidy_restart
|
||||||
|
become: True
|
||||||
|
become_user: root
|
||||||
|
@ -4,7 +4,7 @@ dependency:
|
|||||||
driver:
|
driver:
|
||||||
name: delegated
|
name: delegated
|
||||||
platforms:
|
platforms:
|
||||||
- name: centos7-bitwardenrs
|
- name: centos7-dockertidy
|
||||||
region_id: fra1
|
region_id: fra1
|
||||||
image_id: centos-7-x64
|
image_id: centos-7-x64
|
||||||
size_id: s-1vcpu-1gb
|
size_id: s-1vcpu-1gb
|
||||||
|
@ -8,8 +8,3 @@
|
|||||||
name: xoxys.docker_engine
|
name: xoxys.docker_engine
|
||||||
scm: git
|
scm: git
|
||||||
version: master
|
version: master
|
||||||
|
|
||||||
- src: https://gitea.rknet.org/ansible/xoxys.postgres.git
|
|
||||||
name: xoxys.postgres
|
|
||||||
scm: git
|
|
||||||
version: master
|
|
||||||
|
@ -10,7 +10,7 @@ testinfra_hosts = testinfra.utils.ansible_runner.AnsibleRunner(
|
|||||||
|
|
||||||
|
|
||||||
def test_tidy_running_and_enabled(host):
|
def test_tidy_running_and_enabled(host):
|
||||||
service = host.service("custodian.timer")
|
service = host.service("tidy.timer")
|
||||||
|
|
||||||
assert service.is_running
|
assert service.is_running
|
||||||
assert service.is_enabled
|
assert service.is_enabled
|
||||||
|
@ -1,31 +1,3 @@
|
|||||||
# Standards: 0.1
|
|
||||||
---
|
---
|
||||||
- name: Write timer file
|
- include_tasks: setup.yml
|
||||||
notify:
|
- include_tasks: post.yml
|
||||||
- Restart custodian
|
|
||||||
template:
|
|
||||||
src: timer.j2
|
|
||||||
dest: /etc/systemd/system/custodian.timer
|
|
||||||
tags:
|
|
||||||
- custodian
|
|
||||||
|
|
||||||
- name: Write service file
|
|
||||||
notify:
|
|
||||||
- Restart custodian
|
|
||||||
template:
|
|
||||||
src: service.j2
|
|
||||||
dest: /etc/systemd/system/custodian.service
|
|
||||||
tags:
|
|
||||||
- custodian
|
|
||||||
|
|
||||||
- name: Start custodian timer
|
|
||||||
systemd:
|
|
||||||
name: custodian.timer
|
|
||||||
state: started
|
|
||||||
daemon_reload: True
|
|
||||||
masked: False
|
|
||||||
enabled: True
|
|
||||||
tags:
|
|
||||||
- custodian
|
|
||||||
|
|
||||||
...
|
|
||||||
|
9
tasks/post.yml
Normal file
9
tasks/post.yml
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
---
|
||||||
|
- name: Ensure dockertidy timer is up and running
|
||||||
|
systemd:
|
||||||
|
name: tidy.timer
|
||||||
|
daemon_reload: yes
|
||||||
|
enabled: yes
|
||||||
|
state: started
|
||||||
|
become: True
|
||||||
|
become_user: root
|
21
tasks/setup.yml
Normal file
21
tasks/setup.yml
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
---
|
||||||
|
- block:
|
||||||
|
- name: Write environment file
|
||||||
|
template:
|
||||||
|
src: etc/sysconfig/tidy.j2
|
||||||
|
dest: /etc/sysconfig/tidy
|
||||||
|
notify: __tidy_restart
|
||||||
|
|
||||||
|
- name: Write timer file
|
||||||
|
template:
|
||||||
|
src: etc/systemd/system/tidy.timer.j2
|
||||||
|
dest: /etc/systemd/system/tidy.timer
|
||||||
|
notify: __tidy_restart
|
||||||
|
|
||||||
|
- name: Write service file
|
||||||
|
template:
|
||||||
|
src: etc/systemd/system/tidy.service.j2
|
||||||
|
dest: /etc/systemd/system/tidy.service
|
||||||
|
notify: __tidy_restart
|
||||||
|
become: True
|
||||||
|
become_user: root
|
11
templates/etc/sysconfig/tidy.j2
Normal file
11
templates/etc/sysconfig/tidy.j2
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
#jinja2:lstrip_blocks: True
|
||||||
|
{{ ansible_managed | comment }}
|
||||||
|
TIDY_DRY_RUN={{ dockertidy_dry_run }}
|
||||||
|
TIDY_HTTP_TIMEOUT=60
|
||||||
|
TIDY_LOG_LEVEL={{ dockertidy_log_level }}
|
||||||
|
TIDY_LOG_JSON=False
|
||||||
|
TIDY_GC_MAX_CONTAINER_AGE={{ dockertidy_max_container_age }}
|
||||||
|
TIDY_GC_MAX_IMAGE_AGE={{ dockertidy_max_image_age }}
|
||||||
|
TIDY_GC_DANGLING_VOLUMES={{ dockertidy_dangling_volumes }}
|
||||||
|
TIDY_GC_EXCLUDE_IMAGES={{ dockertidy_exclude_images | join(",") }}
|
||||||
|
TIDY_GC_EXCLUDE_CONTAINER_LABELS={{ dockertidy_exclude_container_labels | join(",") }}
|
23
templates/etc/systemd/system/tidy.service.j2
Normal file
23
templates/etc/systemd/system/tidy.service.j2
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
#jinja2:lstrip_blocks: True
|
||||||
|
{{ ansible_managed | comment }}
|
||||||
|
[Unit]
|
||||||
|
Description=Docker GC
|
||||||
|
Requires=docker.service network-online.target
|
||||||
|
After=docker.service network-online.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=oneshot
|
||||||
|
EnvironmentFile=/etc/sysconfig/tidy
|
||||||
|
|
||||||
|
ExecStartPre=/bin/sh -c '/usr/bin/docker ps | /bin/grep %p 1> /dev/null && /usr/bin/docker kill %p || true'
|
||||||
|
ExecStartPre=/bin/sh -c '/usr/bin/docker ps -a | /bin/grep %p 1> /dev/null && /usr/bin/docker rm %p || true'
|
||||||
|
ExecStartPre=/usr/bin/docker pull {{ dockertidy_image }}
|
||||||
|
ExecStart=/usr/bin/docker run --rm \
|
||||||
|
--name %p \
|
||||||
|
--hostname %p \
|
||||||
|
--volume {{ dockertidy_docker_socket_path }}:/var/run/docker.sock \
|
||||||
|
--privileged=true \
|
||||||
|
{{ dockertidy_image }} \
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
@ -1,8 +1,8 @@
|
|||||||
[Unit]
|
[Unit]
|
||||||
Description=Custodian
|
Description=Docker GC
|
||||||
|
|
||||||
[Timer]
|
[Timer]
|
||||||
OnCalendar={{ custodian_interval }}
|
OnCalendar={{ dockertidy_interval }}
|
||||||
Persistent=true
|
Persistent=true
|
||||||
|
|
||||||
[Install]
|
[Install]
|
@ -1,33 +0,0 @@
|
|||||||
[Unit]
|
|
||||||
Description=Custodian
|
|
||||||
|
|
||||||
Wants=docker.service
|
|
||||||
After=docker.service
|
|
||||||
|
|
||||||
[Service]
|
|
||||||
Type=oneshot
|
|
||||||
EnvironmentFile=/etc/environment
|
|
||||||
|
|
||||||
ExecStartPre=/bin/sh -c '/usr/bin/docker ps | /bin/grep %p 1> /dev/null && /usr/bin/docker kill %p || true'
|
|
||||||
ExecStartPre=/bin/sh -c '/usr/bin/docker ps -a | /bin/grep %p 1> /dev/null && /usr/bin/docker rm %p || true'
|
|
||||||
ExecStartPre=/usr/bin/docker pull {{ custodian_image }}
|
|
||||||
ExecStart=/usr/bin/docker run --rm \
|
|
||||||
--name %p \
|
|
||||||
--hostname %p \
|
|
||||||
--label traefik.enable=false \
|
|
||||||
--volume /var/run/docker.sock:/var/run/docker.sock \
|
|
||||||
{{ custodian_image }} \
|
|
||||||
{% if custodian_dangling_volumes %}
|
|
||||||
--dangling-volumes \
|
|
||||||
{% endif %}
|
|
||||||
{% for item in custodian_exclude_image %}
|
|
||||||
--exclude-image {{ item }} \
|
|
||||||
{% endfor %}
|
|
||||||
{% for item in custodian_exclude_container_label %}
|
|
||||||
----exclude-container-label {{ item }} \
|
|
||||||
{% endfor %}
|
|
||||||
--max-container-age {{ custodian_max_container_age }} \
|
|
||||||
--max-image-age {{ custodian_max_image_age }}
|
|
||||||
|
|
||||||
[Install]
|
|
||||||
WantedBy=multi-user.target
|
|
Loading…
Reference in New Issue
Block a user