WIP
This commit is contained in:
parent
244cb48f91
commit
be661e09de
5 changed files with 10 additions and 83 deletions
|
@ -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
|
|
@ -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:
|
||||
|
|
|
@ -514,6 +514,5 @@ def main() -> None:
|
|||
|
||||
module.exit_json(**ret) # pyright: ignore[reportUnknownMemberType]
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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] }}"
|
||||
|
|
Loading…
Add table
Reference in a new issue