Создание собственных модулей Ansible

by moiseevrus

Настроить Ansible под свои нужды так просто

Каждый день количество модулей Ansible продолжает расти, и по мере использования приложения добавляется дополнительная поддержка. Так зачем вам создавать свои собственные модули Ansible. Ну, есть ряд причин, но я думаю, что самая веская из них — это то, что вы можете понять, как работают модули. Несмотря на то, что этот новый навык может не проявляться очень часто, существует большая вероятность того, что вам потребуется устранять ошибки или проблемы с существующими модулями Ansible, поэтому знание того, как все работает, может быть ценным навыком.

Вы также должны помнить, что существует множество старых устаревших приложений или внутренних приложений, которые может использовать ваша организация, но у которых нет собственных модулей. Существуют и другие варианты развертывания этих приложений через Ansible и предоставления шаблонов для их настройки, но может быть проще создать собственный модуль для этих приложений. В любом случае, следующий документ предоставит вам подробную информацию для начала работы и, надеюсь, позволит вам расширить его.

.Это довольно простой пример, но я надеюсь, вы увидите, что все, что вам нужно, это немного знаний о Python, в сочетании с вашими навыками Ansible, и вы сможете начать создавать свои собственные модули Ansible… Не волнуйтесь. если ваши знания немного недостаточны, все будет объяснено, когда мы пройдем это вместе.

Мы просто рассмотрим базовый модуль «Hello World», чтобы показать вам, насколько это просто. Этот пост не будет охватывать установку и основы Ansible, поэтому не стесняйтесь проверять наши предыдущие посты для получения более подробной информации.

1. Начните с доступа к вашей рабочей среде, в которой уже установлен Ansible. В каталоге вы работаете над созданием каталога библиотеки:

mkdir library

2. В каталоге библиотеки создайте новый файл модуля с именем hello_module.py:

touch library/hello_module.py

3. В вашем любимом текстовом редакторе откройте новый файл и добавьте следующий код (числа слева приведены только для справки и не должны добавляться в файл):

1 #!/usr/bin/python
  2 
  3 from ansible.module_utils.basic import *
  4 
  5 def main():
  6     module = AnsibleModule(argument_spec={})
  7     response = {"hello": "world!"}
  8     module.exit_json(changed=False, meta=response)
  9 
 10 if __name__ == "__main__":
 11     main()

Здесь нет ничего слишком сложного, но если вы не знакомы с Python, вот разбивка каждой из строк. Строка 1 указывает, что необходимо использовать локально установленную версию Python. Строка 3 импортирует определенные модули, которые будут работать с Ansible. Строки с 5 по 8 — это функция, которая будет выполняться как часть вашего модуля, в частности, строка 6 предоставляет класс AnsibleModule, который позволяет нам обрабатывать входящие параметры и позволяет нам выйти из программы с ответом «hello», а затем «world! ” в строке 7. Строки 10 и 11 затем запускают функцию при вызове модуля.

4. Теперь мы можем создать playbook для запуска модуля. В рабочем каталоге создайте файл newmodule_test.yml:

touch newmodule_test.yml

5. Теперь вы можете запустить свой текстовый редактор и добавить следующие данные, чтобы ваш плейбук заработал.

  1 ---
  2 - hosts: 127.0.0.1
  3   tasks:
  4   - name: testing our new module
  5     hello_module:
  6     register: result
  7 
  8   - debug: var=result

6. Теперь мы можем запустить новую книгу с помощью следующей команды:
ansible-playbook newmodule_test.yml

Что дает вам следующий вывод:

PLAY [127.0.0.1] ***************************************TASK [Gathering Facts] *********************************
ok: [127.0.0.1]TASK [testing our new module] **************************
ok: [127.0.0.1]TASK [debug] *******************************************
ok: [127.0.0.1] => {
    "result": {
        "changed": false,
        "failed": false,
        "meta": {
            "hello": "world!"
        }
    }
}PLAY RECAP **********************************************
127.0.0.1: ok=3    changed=0    unreachable=0    failed=0

Если все прошло хорошо, вы должны увидеть вышеупомянутый вывод, выдающий вам приятное «привет»: «мир!» как выход.

Хорошо, мы были здесь довольно быстрыми и грязными, и это было целью поста, но все, что вам нужно, это расширить свои знания о Python, и вы также сможете расширить возможности своих модулей.

Статья является переводом medium.com

You may also like

Leave a Comment