Добавить playbooks/parse_docker_tmp.yml

This commit is contained in:
2025-12-10 07:18:23 +00:00
parent 75867ce8e1
commit 9e3dbfcdcd

View File

@@ -0,0 +1,56 @@
---
# -------------------------------------------------------------------------
# ПЛЕЙ 1: Подключение к Docker-хосту и извлечение данных
# -------------------------------------------------------------------------
- name: Extract inventory from Docker container
hosts: docker_servers # Группа в Semaphore, где лежит ваш Docker-сервер
become: true # Обычно нужно sudo для команд docker
vars:
container_name: "my_app_container" # Имя вашего контейнера
file_path_in_container: "/app/hosts.txt" # Путь к файлу внутри контейнера
tasks:
- name: Check if container is running
shell: "docker ps -q -f name={{ container_name }}"
register: container_check
- name: Fail if container is not running
fail:
msg: "Контейнер {{ container_name }} не запущен!"
when: container_check.stdout == ""
- name: Read file content from container
# Используем docker exec для чтения файла
command: "docker exec {{ container_name }} cat {{ file_path_in_container }}"
register: file_content
changed_when: false
- name: Parse output and add to in-memory inventory
# add_host работает локально в памяти Ansible во время выполнения
add_host:
name: "{{ item }}"
groups: extracted_hosts # Создаем новую временную группу
# Можно добавить переменные, например, способ подключения:
# ansible_ssh_user: root
# Разделяем вывод cat по строкам и убираем пустые
loop: "{{ file_content.stdout_lines | select('match', '^.+$') | list }}"
- name: Debug info
debug:
msg: "Добавлен хост: {{ item }}"
loop: "{{ file_content.stdout_lines | select('match', '^.+$') | list }}"
# -------------------------------------------------------------------------
# ПЛЕЙ 2: Работа с новыми хостами
# -------------------------------------------------------------------------
- name: Configure the extracted hosts
hosts: extracted_hosts # Обращаемся к группе, созданной в предыдущем шаге
gather_facts: false # Отключаем, если нет SSH доступа или нужно ускорить
tasks:
- name: Ping new hosts
ping:
- name: Echo Hello
debug:
msg: "Я подключился к хосту {{ inventory_hostname }}, полученному из контейнера!"