Добавить playbooks/parse_docker_tmp.yml
This commit is contained in:
56
playbooks/parse_docker_tmp.yml
Normal file
56
playbooks/parse_docker_tmp.yml
Normal 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 }}, полученному из контейнера!"
|
||||
Reference in New Issue
Block a user