Выложил ansible_module
crate для написания модулей Ansible на Rust.
Можно посмотреть документацию через cargo doc
или посмотреть секцию examples.
Тестим
Я добавил переписанный ansible.builtin.slurp
модуль на Rust в секции с примерами, так что давайте протестим:
git clone https://github.com/bakanovskii/ansible_module_rs.git
cd ansible_module_rs/
cargo build --examples --r
cd examples/
Тест на маленьком файл
Для начала проверим на маленьком файле:
ANSIBLE_LIBRARY=../target/release/examples/ ansible-playbook test_slurp.yml
Итак, версия на Rust выполнилась за 0.03s, на Python за 0.21s
Неплохо!
Тест на большом файле
Теперь проверим на большом файле:
ANSIBLE_LIBRARY=../target/release/examples/ ansible-playbook test_slurp_big.yml
Теперь, версия на Rust выполнилась за 16.87s, на Python за 23.41s
Почему разница не огромная? Python использует вызовы языка C для кодирования/декодирования base64