support_check_mode для не-Python модуля

Модуль Ansible, написанный на Python, может поддерживать режим проверки, установив supports_check_mode=True:

module = AnsibleModule(
    argument_spec = dict(...),
    supports_check_mode=True
)

Теперь у меня есть более 700 строк Ruby-скрипта, который я хотел бы превратить в модуль и не хотел бы переводить его на Python. Есть ли способ, как поддержать режим проверки для не-Python модулей?

1 ответ

Решение

Ansible передаст аргумент _ansible_check_mode к модулю, что верно, если вы находитесь в режиме проверки.

Помните, что аргументы помещаются в файл, а путь к файлу - аргумент №2.

Вот пример PHP:

./library/test_module.php

#!/usr/bin/env php
<?php

// WANT_JSON Causes ansible to store args in JSON

$args = json_decode(file_get_contents($argv[1]), true);

$check_mode = !empty($args['_ansible_check_mode']);

$output = array(
    'changed' => false,
    'checking' => $check_mode
);

echo json_encode($output);

Подходящий playbook:

./test_module.yml

---
- hosts: localhost
  gather_facts: no
  become: no
  tasks:
    - test_module:
        key: value
Другие вопросы по тегам