Рейтинг:0

незаметная регистрирующая переменная выводит неопределенную переменную

флаг bo

Я пытаюсь сделать этот playbook в течение полдня. Я использую модуль stat для проверки sha1sum файла, и если он не равен второму файлу, он должен заменить правильный файл. Но при регистрации некоторых переменных вывод говорит, что переменные не определены Что я делаю не так ?

---
- хозяева: все
  удаленный_пользователь: корень
  задачи:
    - имя: получить сумму файла
      стат:
        путь: /home/roundcube/config.php
        checksum_algorithm: sha1
        get_checksum: да
      регистр: сумма      
      
      стат:
        путь: /home/archive/config.php
        checksum_algorithm: sha1
        get_checksum: да
      регистр: сумма2
      
    - название: результат
      доступная.встроенная.копия:
        источник: /home/archive/config.php
        место назначения: /home/roundcube/config.php
      когда: sum.stat.checksum != sum2.stat.checksum
флаг br
Две задачи *stat* избыточны. Модуль [*copy*](https://docs.ansible.com/ansible/latest/collections/ansible/builtin/copy_module.html#ansible-builtin-copy-copy-files-to-remote-locations) сравнивает *контрольная сумма* *src* и *dest* по умолчанию. Цитата из [*checksum*](https://docs.ansible.com/ansible/latest/collections/ansible/builtin/copy_module.html#parameter-checksum): ``'... Если это не указано, ansible будет использовать локальную вычисленную контрольную сумму файла src.'``
Рейтинг:1
флаг in

Вам не хватает дефиса, который определяет вторую статистику как задачу.

---
- хозяева: все
  удаленный_пользователь: корень
  задачи:
    - имя: получить сумму файла
      стат:
        путь: /home/roundcube/config.php
        checksum_algorithm: sha1
        get_checksum: да
      регистр: сумма      
      
    - стат:
        путь: /home/archive/config.php
        checksum_algorithm: sha1
        get_checksum: да
      регистр: сумма2
      
    - название: результат
      доступная.встроенная.копия:
        источник: /home/archive/config.php
        место назначения: /home/roundcube/config.php
        remote_src: да
      когда: sum.stat.checksum != sum2.stat.checksum

Обратите внимание, что вам также не хватает remote_src: да параметр в задаче копирования. Без него Ansible предполагает, что файл находится на вашем локальном компьютере, а не на удаленном хосте.

Zeitounator avatar
флаг fr
Обратите внимание, что все эти проверки совершенно бесполезны, поскольку ansible будет копировать файл только в том случае, если источник (локальный или удаленный) и место назначения действительно отличаются. В противном случае он просто сообщит «ОК».
DeviC3 avatar
флаг bo
Спасибо, Джеральд. Вы сделали мой день, теперь он работает правильно. Это было так просто.
флаг in
Отлично, но прислушайтесь к совету Zeitounator и Владимира. Эти проверки ЯВЛЯЮТСЯ излишними, Ansible снова выполнит те же проверки в задаче `copy`.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.