This commit is contained in:
Luca Bilke 2025-01-19 13:25:53 +01:00
parent 244cb48f91
commit be661e09de
Signed by: luca
GPG key ID: C9E851809C1A5BDE
5 changed files with 10 additions and 83 deletions
plugins
roles/ez_docker/tasks

View file

@ -1,73 +0,0 @@
# Copyright: (c) 2025, Luca Bilke <luca@bil.ke>
# MIT License (see LICENSE)
# ruff: noqa: E402,ANN001,ANN003,ANN201
# pyright: basic
from __future__ import annotations
DOCUMENTATION = """
---
name: container_names
version_added: 1.0.0
short_description: Discover container names from ez_docker projects
description:
- This module is needed by ez_cp to find the names of containers to copy files into.
- It takes a project definition and returns a dict of name/container_name key/value pairs.
author:
- "Luca Bilke (@ssnailed)"
options:
_terms:
description:
- "name: definition dict of project to search in"
type: list
elements: dict
required: true
"""
EXAMPLES = """
- name: Discover container names in projects
ansible.builtin.set_fact:
containers: "{{ lookup('snailed.ez_docker.container_names', ez_docker_projects) }}"
"""
RETURN = """
_list:
description:
- List of discovered services in items format
- [{key: name, value: container_name}, ...]
type: list
"""
from ansible.plugins.lookup import LookupBase
class LookupModule(LookupBase):
def run(self, terms, variables=None, **kwargs):
self.set_options(var_options=variables, direct=kwargs)
ret = []
for term in terms:
project_name = term.key
project = term.value
for service_name, service in project.items():
if not (overwrite := service.get("overwrite")):
overwrite = service.get("definition")
if overwrite and (container_name := overwrite.get("container_name")):
ret.append(
{
"key": service_name,
"value": container_name,
}
)
continue
ret.append(
{
"key": service_name,
"value": f"{project_name}_{service_name}",
}
)
return ret

View file

@ -64,7 +64,7 @@ class LookupModule(LookupBase):
contents = base64.b64encode(b_contents)
ret.append(contents)
else:
msg = "file not found, use -vvvvv to see paths searched"
msg = "file not found, use -vvvv to see paths searched"
raise AnsibleOptionsError(msg)
except AnsibleError as e:

View file

@ -514,6 +514,5 @@ def main() -> None:
module.exit_json(**ret) # pyright: ignore[reportUnknownMemberType]
if __name__ == "__main__":
main()

View file

@ -6,16 +6,17 @@
settings: "{{ ez_docker_settings }}"
project_dir: "{{ ez_docker_project_dir }}"
no_log: true
register: compose
- name: "project | Start project: {{ project.name }}"
- name: "project | Start project: {{ project_definition.key }}"
community.docker.docker_compose_v2:
pull: missing
project_src: "{{ ez_docker_project_dir }}/{{ project_definition.key }}"
project_src: "{{ ez_docker_project_dir }}/{{ compose.after.name }}"
state: "present"
- name: "project | Import per-service tasks: {{ project_definition.key }}"
ansible.builtin.include_tasks: service.yml
with_snailed.ez_docker.container_names: "{{ project_definition }}"
loop: compose.diff.after.services | dict2items
loop_control:
loop_var: service

View file

@ -1,7 +1,7 @@
---
- name: "service | Copy files into container: {{ service.key }}"
- name: "service | Copy files into container: {{ service.value.container_name }}"
community.docker.docker_container_copy_into:
container: "{{ service.value }}"
container: "{{ service.value.container_name }}"
container_path: "/{{ item.path }}"
content: >-
{{ snailed.ez_docker.slurp(
@ -14,9 +14,9 @@
- "{{ ez_cp_controller_files_root }}/{{ project.key }}/{{ service.key }}"
register: copy
- name: "service | Template files into container: {{ service.key }}"
- name: "service | Template files into container: {{ service.value.container_name }}"
community.docker.docker_container_copy_into:
container: "{{ service.value }}"
container: "{{ service.value.container_name }}"
container_path: "/{{ item.path }}"
content: >-
{{ ansible.builtin.template(
@ -29,6 +29,6 @@
- "{{ ez_cp_controller_templates_root }}/{{ project.key }}/{{ service.key }}"
register: template
- name: "service | Register file changes: {{ service.key }}"
- name: "service | Register file changes: {{ service.value.container_name }}"
ansible.builtin.set_fact:
services_changed: "{{ services_changed | default([]) + [service.key] }}"