#######

from ansible.parsing.parser import AnsibleParser
from ansible.inventory.manager import InventoryManager
import os
import shutil

Функция для получения файла из инвентаря и копирования содержимого

def get_and_copy_file(file_path):

Получаем файл в папке /tmp/с/последним_директорием/именем_файла

tmp_dir = "/tmp/"
last_directory = os.listdir(tmp_dir)[-1] # Получаем последнюю директорию
file_name = os.listdir(os.path.join(tmp_dir, last_directory))[0] # Получаем имя файла

file_path_to_copy = os.path.join(tmp_dir, last_directory, file_name)

Перемещение файла в папку с хостом и копирование его содержимого

hostname = "your_host" # Замените на ваш хост
destination_path = f"/tmp/{hostname}/"

if not os.path.exists(destination_path):
os.makedirs(destination_path)

shutil.copy2(file_path_to_copy, destination_path)
print(f"Copied {file_name} to {destination_path}")

Основная функция для работы с Ansible

def main():
inventory_manager = InventoryManager.load_from_file("/path/to/your/inventory.ini")
parser = AnsibleParser()

Получаем файлы из инвентаря, соответствующие фильтруемому перечню

for group in inventory_manager.hosts.values():
if "group_name" in group: # Замените 'group_name' на имя группы
files = [f for f in group.files if os.path.isfile(f)]
for file_path in files:
get_and_copy_file(file_path)

if __name__ == "__main__":
main()

[file-name 000079_2025-03-27_08-20-10.txt]