From 9e3dbfcdcdcf1fbfb5bc0df4a3514e4bc710bc4f Mon Sep 17 00:00:00 2001 From: ogrechko Date: Wed, 10 Dec 2025 07:18:23 +0000 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D1=82?= =?UTF-8?q?=D1=8C=20playbooks/parse=5Fdocker=5Ftmp.yml?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- playbooks/parse_docker_tmp.yml | 56 ++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 playbooks/parse_docker_tmp.yml diff --git a/playbooks/parse_docker_tmp.yml b/playbooks/parse_docker_tmp.yml new file mode 100644 index 0000000..02ab45d --- /dev/null +++ b/playbooks/parse_docker_tmp.yml @@ -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 }}, полученному из контейнера!" \ No newline at end of file