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