Files
semaphore/playbooks/parse_docker_tmp.yml

56 lines
2.7 KiB
YAML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
# -------------------------------------------------------------------------
# ПЛЕЙ 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 }}, полученному из контейнера!"