2014-10-13 4 views
2

Мне нужно найти способ, которым я могу сравнить шаблоны шаблонов elasticsearch в заданном elasticsearch. Группа хостов данных. Значение, если в каталоге находится /usr/local/elasticsearch/config/templates/, мне нужно убедиться, что все файлы внутри этого каталога в той группе, которая существует, являются такими же.Сравнение файлов с использованием Ansible

Нет дополнительных файлов шаблонов или файлов шаблонов разной версии. Я не мог понять, как это сделать.

+0

вы смотрели на http://docs.ansible.com/synchronize_module.html модуль ли? – Mxx

ответ

0

Я сделал это, сначала сравнив количество файлов на всех хостах в данной группе под папкой шаблона, затем получив список файлов и их соответствующие значения md5sum и экспортировав их в текущую playbook с помощью include_vars. Затем я сравнивал каждый файл md5sum с тем, который был экспортирован с include_vars и with_items.

1

Попробуйте соединить анзибль с Rsync сухого прогона с помощью модуля оболочки:

ansible -i production data_hosts -l '!~host1' -f 1 -m shell \ 
    -a 'rsync --checksum --delete --dry-run -r -v host1.example.com:/usr/local/elasticsearch/config/templates/ /usr/local/elasticsearch/config/templates' 

Пояснение

  • Сравнивает ЕГР elasticsearch конфигурационный каталог// локальный///шаблоны на всех хостов [data_hosts] в host1
  • Исключает host1.example.com с использованием аргумента предела -l: -l '!~host1'
  • Использует -f 1, чтобы выполнять только одно сравнение за раз. Необязательно, но помог в моем случае, так как каталоги содержали большое количество файлов (> 10K)
  • использует --dry-run, чтобы предотвратить Rsync от фактически sync'ing каталоги
  • Использует --delete в список посторонних файлов в каталоге назначения
  • Использование --checksum для сравнения файлов на основе контрольной суммы, а не моды времени и размера

Notes

  • Вы можете изменить этот однострочный интервал, чтобы выполнить синхронизацию, удалив --dry-run. Подумайте о добавлении -z для сжатия данных файла во время передачи и -a для архивного режима.
  • Файл инвентаризации производства будет выглядеть следующим образом:

    [data_hosts] 
    host1.example.com 
    host2.example.com 
    host3.example.com 
    host4.example.com