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