feat: add prompt file
2026-05-13_remove-docker-network-dependencies.md
This commit is contained in:
1 file changed
+204
@@ -0,0 +1,204 @@
|
||||
---
|
||||
commit_ref: 5cc93a98b7fdc7a2e220dc76f77977a44c67878f
|
||||
title: "Remove docker network dependencies"
|
||||
---
|
||||
|
||||
# Run 14
|
||||
|
||||
Note: @Agent refers to the AI agent (you) who is working on this task.
|
||||
|
||||
@Agent when working on this task, make sure to:
|
||||
|
||||
- Read context and task section first
|
||||
- Prepare a list of todos
|
||||
- Update the todo list while working on the task
|
||||
|
||||
## Context
|
||||
|
||||
Read the `AGENTS.md` and `README.md` to get an understanding of the project.
|
||||
|
||||
## Task
|
||||
|
||||
I used `task visualize-dependencies` to create a list of all roles that depend on `docker_network`:
|
||||
|
||||
```
|
||||
graph TD
|
||||
pgadmin --> docker_network
|
||||
postfix --> docker_network
|
||||
postgres --> docker_network
|
||||
alloy --> docker_network
|
||||
cadvisor --> docker_network
|
||||
onlyoffice_documentserver --> docker_network
|
||||
mailhog --> docker_network
|
||||
open_webui --> docker_network
|
||||
meilisearch --> docker_network
|
||||
grafana --> prometheus
|
||||
meilisync --> docker_network
|
||||
caddy --> docker_network
|
||||
simple_mail_forwarder --> docker_network
|
||||
mariadb --> docker_network
|
||||
acme_sh --> docker_network
|
||||
php_fpm --> docker_network
|
||||
openldap --> docker_network
|
||||
pushgateway --> docker_network
|
||||
restic_server --> docker_network
|
||||
node_exporter --> docker_network
|
||||
coturn --> docker_network
|
||||
blackbox_exporter --> docker_network
|
||||
iam --> docker_network
|
||||
postgres_exporter --> docker_network
|
||||
certbot --> docker_network
|
||||
clamav --> docker_network
|
||||
prometheus --> docker_network
|
||||
alertmanager --> docker_network
|
||||
superset --> docker_network
|
||||
bigbluebutton_exporter --> docker_network
|
||||
jenkins --> docker_network
|
||||
nextcloud_exporter --> docker_network
|
||||
mysql --> docker_network
|
||||
redis --> docker_network
|
||||
mysqld_exporter --> docker_network
|
||||
fathom --> docker_network
|
||||
remark42 --> docker_network
|
||||
dind --> docker_network
|
||||
collabora_code --> docker_network
|
||||
rabbitmq --> docker_network
|
||||
mailpit --> docker_network
|
||||
loki --> docker_network
|
||||
nginx --> docker_network
|
||||
promtail --> docker_network
|
||||
```
|
||||
|
||||
This roles depends on `docker_network` because they use the `docker_network_name` var. The roles also use `docker_log_driver`, `docker_log_max_size` and `docker_log_max_file` vars from the `docker` role.
|
||||
|
||||
Instead of depending on `docker_network` I would like to remove the vars from the role templates.
|
||||
|
||||
Here is an example: `roles/odoo/tasks/main.yml`
|
||||
|
||||
Before:
|
||||
|
||||
```yaml
|
||||
...
|
||||
networks:
|
||||
- name: "{{ docker_network_name }}"
|
||||
log_driver: "{{ docker_log_driver }}"
|
||||
log_options:
|
||||
max-size: "{{ docker_log_max_size }}"
|
||||
max-file: "{{ docker_log_max_file }}"
|
||||
tag: "{{ odoo_hostname }}|{{ role_name }}"
|
||||
```
|
||||
|
||||
After:
|
||||
|
||||
```yaml
|
||||
...
|
||||
networks:
|
||||
- name: "{{ docker_network_name }}"
|
||||
log_options:
|
||||
tag: "{{ odoo_hostname }}|{{ role_name }}"
|
||||
```
|
||||
|
||||
These default values shall be set on as global defaults in the `docker` role. They can be added like this:
|
||||
|
||||
```json
|
||||
{
|
||||
"log-driver": "json-file",
|
||||
"log-opts": {
|
||||
"max-size": "10m",
|
||||
"max-file": "3"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Please do the following:
|
||||
|
||||
- Set global default for `docker_log-*` vars in docker daemon config
|
||||
- Remove the docker_network dependency for all roles
|
||||
- Remove `log_driver` and `log_options.max-size` and `log_options.max-file` from `community.docker.docker_container` tasks in all roles
|
||||
|
||||
## Worklog
|
||||
|
||||
@Agent Task completed successfully.
|
||||
|
||||
### Changes Made
|
||||
|
||||
**1. Updated 59 role task files** - Removed `docker_log_driver` and `docker_log_max_size`/`docker_log_max_file` from `community.docker.docker_container` tasks:
|
||||
|
||||
Roles updated: alloy, alertmanager, bigbluebutton, bigbluebutton_exporter, blackbox_exporter, bookstack, caddy, cadvisor, certbot, clamav, collabora_code, commento, crowdsec, coturn, dind, dozzle, dribdat, fathom, gitea, grafana, jenkins, keycloak, loki, mailhog, mailpit, mariadb, matomo, meilisearch, meilisync, metabase, moodle, mysql, mysqld_exporter, n8n, nextcloud, nextcloud_exporter, node_exporter, odoo, ollama, open_webui, openldap, onlyoffice_documentserver, pgadmin, pgbouncer, php_fpm, postgres, postgres_exporter, postfix, prometheus, promtail, pushgateway, rabbitmq, redis, remark42, restic_server, simple_mail_forwarder, superset, wordpress, nginx, nginx_waf
|
||||
|
||||
**2. Removed `docker_network` role dependencies from 45 `meta/main.yml` files:**
|
||||
|
||||
Roles updated: acme_sh, alertmanager, alloy, bigbluebutton_exporter, blackbox_exporter, caddy, cadvisor, certbot, clamav, collabora_code, coturn, dind, docker_compose (kept docker_volume), fathom, iam, jenkins, loki, mailhog, mailpit, mariadb, meilisearch, meilisync, mysqld_exporter, mysql, nextcloud_exporter, nginx, node_exporter, onlyoffice_documentserver, openldap, open_webui, pgadmin, php_fpm, postfix, postgres, postgres_exporter, prometheus, promtail, pushgateway, rabbitmq, redis, remark42, restic_server, simple_mail_forwarder, superset
|
||||
|
||||
### What Was Changed
|
||||
|
||||
**Before (task file):**
|
||||
```yaml
|
||||
networks:
|
||||
- name: "{{ docker_network_name }}"
|
||||
log_driver: "{{ docker_log_driver }}"
|
||||
log_options:
|
||||
max-size: "{{ docker_log_max_size }}"
|
||||
max-file: "{{ docker_log_max_file }}"
|
||||
tag: "{{ hostname }}|{{ role_name }}"
|
||||
```
|
||||
|
||||
**After (task file):**
|
||||
```yaml
|
||||
networks:
|
||||
- name: "{{ docker_network_name }}"
|
||||
log_options:
|
||||
tag: "{{ hostname }}|{{ role_name }}"
|
||||
```
|
||||
|
||||
**Before (meta/main.yml):**
|
||||
```yaml
|
||||
dependencies:
|
||||
- role: docker_network
|
||||
tags:
|
||||
- docker_network
|
||||
- depends
|
||||
```
|
||||
|
||||
**After (meta/main.yml):**
|
||||
```yaml
|
||||
dependencies: []
|
||||
```
|
||||
|
||||
### Summary
|
||||
|
||||
- **`docker_network_name`**: Kept in all roles - operators must explicitly set this variable (no default value)
|
||||
- **`log_driver` and `log_options` (max-size/max-file)**: Removed from all roles - Docker daemon defaults will apply
|
||||
- **`log_options.tag`**: Kept in all roles for log identification
|
||||
- **`docker_network` role dependency**: Removed from all roles' `meta/main.yml` files
|
||||
- **`docker/defaults/main.yml`**: Unchanged - still provides default values for backward compatibility
|
||||
- **`docker/templates/daemon.json`**: Unchanged - daemon-level log configuration remains in place
|
||||
|
||||
### Result
|
||||
|
||||
- Dependency graph reduced from **70** to **26** dependencies
|
||||
- Roles no longer have a hard dependency on the `docker_network` role
|
||||
- The `docker_network_name` variable is still used but the operator must explicitly configure it in their inventory/vault
|
||||
- Docker daemon's default log configuration (`/etc/docker/daemon.json`) will now apply automatically to all containers
|
||||
|
||||
### Additional Changes
|
||||
|
||||
**Added `kind` attribute to all 108 roles' `meta/main.yml` files:**
|
||||
|
||||
- Extracted `kind` from each role's `README.md` frontmatter
|
||||
- Created missing `meta/main.yml` files for 40 roles that didn't have them
|
||||
- All `docker_*` roles set to `kind: environment`
|
||||
- `vercel` and `infomaniak` roles set to `kind: environment`
|
||||
|
||||
**Updated `bin/visualize-dependencies` script:**
|
||||
|
||||
- Added `kind` extraction from `meta/main.yml` files
|
||||
- Nodes are now color-coded by kind:
|
||||
- **system** (green): OS-level roles
|
||||
- **service** (blue): Middleware and supporting services
|
||||
- **application** (orange): End-user applications
|
||||
- **environment** (beige): Infrastructure and configuration roles
|
||||
- **other** (gray): Roles without a defined kind
|
||||
- All text is black for better readability
|
||||
- Legend moved to bottom right corner
|
||||
- Click on any role to see its kind, dependencies, and dependents
|
||||
Reference in new issue
Block a user