From 6d127803da33b3d6b8b13d4e487369f7c7ae029c Mon Sep 17 00:00:00 2001 From: Denis Savosin Date: Mon, 15 Aug 2022 10:23:42 +0700 Subject: [PATCH] homework 8.6: complete other tasks move module files to separate dir --- .../8.6/{ => module}/my_own_module.py | 0 .../08-ansible/8.6/{ => module}/payload.json | 0 .../8.6/{ => module}/test_module.yml | 0 .../08-ansible/8.6/playbook/my_playbook.yml | 5 ++ src/homework/08-ansible/8.6/readme.md | 76 ++++++++++++++++--- 5 files changed, 69 insertions(+), 12 deletions(-) rename src/homework/08-ansible/8.6/{ => module}/my_own_module.py (100%) rename src/homework/08-ansible/8.6/{ => module}/payload.json (100%) rename src/homework/08-ansible/8.6/{ => module}/test_module.yml (100%) create mode 100644 src/homework/08-ansible/8.6/playbook/my_playbook.yml diff --git a/src/homework/08-ansible/8.6/my_own_module.py b/src/homework/08-ansible/8.6/module/my_own_module.py similarity index 100% rename from src/homework/08-ansible/8.6/my_own_module.py rename to src/homework/08-ansible/8.6/module/my_own_module.py diff --git a/src/homework/08-ansible/8.6/payload.json b/src/homework/08-ansible/8.6/module/payload.json similarity index 100% rename from src/homework/08-ansible/8.6/payload.json rename to src/homework/08-ansible/8.6/module/payload.json diff --git a/src/homework/08-ansible/8.6/test_module.yml b/src/homework/08-ansible/8.6/module/test_module.yml similarity index 100% rename from src/homework/08-ansible/8.6/test_module.yml rename to src/homework/08-ansible/8.6/module/test_module.yml diff --git a/src/homework/08-ansible/8.6/playbook/my_playbook.yml b/src/homework/08-ansible/8.6/playbook/my_playbook.yml new file mode 100644 index 0000000..5d8cd45 --- /dev/null +++ b/src/homework/08-ansible/8.6/playbook/my_playbook.yml @@ -0,0 +1,5 @@ +--- +- name: my playbook + hosts: localhost + roles: + - my_own_namespace.yandex_cloud_cvl.my_own_role diff --git a/src/homework/08-ansible/8.6/readme.md b/src/homework/08-ansible/8.6/readme.md index 45b78b7..38d8c16 100644 --- a/src/homework/08-ansible/8.6/readme.md +++ b/src/homework/08-ansible/8.6/readme.md @@ -16,6 +16,8 @@ > 8. Если все шаги прошли успешно - выйти из виртуального окружения `deactivate` > 9. Ваше окружение настроено, для того чтобы запустить его, нужно находиться в директории `ansible` и выполнить конструкцию `./venv/bin/activate && ./hacking/env-setup` +Репозиторий: [Dannecron/netology-devops-ansible-yandex-cloud-cvl](https://github.com/Dannecron/netology-devops-ansible-yandex-cloud-cvl). + Дополнительные действия: 1. В ubuntu-дистрибутивах модуль `venv` не установлен по умолчанию, поэтому нужно его установить самостоятельно @@ -53,7 +55,7 @@ > 3. Заполните файл в соответствии с требованиями ansible так, чтобы он выполнял основную задачу: module должен создавать текстовый файл на удалённом хосте по пути, > определённом в параметре `path`, с содержимым, определённым в параметре `content`. -Код модуля доступен в файле [my_own_module.py](./my_own_module.py). Внутри репозитория `ansible` его +Код модуля доступен в файле [my_own_module.py](./module/my_own_module.py). Внутри репозитория `ansible` его необходимо положить по пути `lib/ansible/modules`. > 4. Проверьте module на исполняемость локально @@ -103,7 +105,7 @@ python3 -m ansible.modules.my_own_module payload.json > 6. Проверьте через playbook на идемпотентность > 7. Выйдите из виртуального окружения -Playbook будет выглядеть следующим образом: [test_module.yml](./test_module.yml). +Playbook будет выглядеть следующим образом: [test_module.yml](./module/test_module.yml). Данный файл нужно положить в корень репозитория `ansible` и выполнить следующую команду: ```shell @@ -147,38 +149,88 @@ ok: [localhost] PLAY RECAP *************************************************************************************************** localhost : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 ``` -> 8. Инициализируйте новую collection: `ansible-galaxy collection init my_own_namespace.yandex_cloud_elk` -// todo +Выход из виртуального окружения: + +```shell +deactivate +``` + +> 8. Инициализируйте новую collection: `ansible-galaxy collection init my_own_namespace.yandex_cloud_cvl`. + +```shell +ansible-galaxy collection init my_own_namespace.yandex_cloud_cvl +``` + +```text +- Collection my_own_namespace.yandex_cloud_cvl was created successfully +``` + +Новая коллекция сразу перенесена в репозиторий [netology-devops-ansible-yandex-cloud-cvl](https://github.com/Dannecron/netology-devops-ansible-yandex-cloud-cvl). > 9. В данную collection перенесите свой module в соответствующую директорию. -// todo +Модуль размещён в директории `modules` в репозитории [netology-devops-ansible-yandex-cloud-cvl](https://github.com/Dannecron/netology-devops-ansible-yandex-cloud-cvl). > 10. Single task playbook преобразуйте в single task role и перенесите в collection. > У role должны быть default всех параметров module -// todo +Роль размещена в директории `my_own_role` в репозитории [netology-devops-ansible-yandex-cloud-cvl](https://github.com/Dannecron/netology-devops-ansible-yandex-cloud-cvl). > 11. Создайте playbook для использования этой role -// todo +Playbook для работы с ролью расположен в файле [playbook/my_playbook.yml](./playbook/my_playbook.yml). > 12. Заполните всю документацию по collection, выложите в свой репозиторий, поставьте тег `1.0.0` на этот коммит. -// todo +[netology-devops-ansible-yandex-cloud-cvl:1.0.0](https://github.com/Dannecron/netology-devops-ansible-yandex-cloud-cvl/releases/tag/1.0.0). > 13. Создайте .tar.gz этой collection: `ansible-galaxy collection build` в корневой директории collection. -// todo +```shell +ansible-galaxy collection build +``` + +```text +Created collection for my_own_namespace.yandex_cloud_cvl at netology-devops-ansible-yandex-cloud-cvl/my_own_namespace-yandex_cloud_cvl-1.0.0.tar.gz +``` + > 14. Создайте ещё одну директорию любого наименования, перенесите туда single task playbook и архив c collection. -// todo +Директория с playbook, который создан на шаге 11. > 15. Установите collection из локального архива: `ansible-galaxy collection install .tar.gz` -// todo +```shell +ansible-galaxy collection install my_own_namespace-yandex_cloud_cvl-1.0.0.tar.gz +``` + +```text +Starting galaxy collection install process +Process install dependency map +Starting collection install process +Installing 'my_own_namespace.yandex_cloud_cvl:1.0.0' to '~/.ansible/collections/ansible_collections/my_own_namespace/yandex_cloud_cvl' +my_own_namespace.yandex_cloud_cvl:1.0.0 was installed successfully +``` > 16. Запустите playbook, убедитесь, что он работает. -// todo +```shell +ansible-playbook my_playbook.yml +``` + +```text +[WARNING]: No inventory was parsed, only implicit localhost is available +[WARNING]: provided hosts list is empty, only localhost is available. Note that the implicit localhost does +not match 'all' + +PLAY [my playbook] ***************************************************************************************** +TASK [Gathering Facts] ************************************************************************************* +ok: [localhost] + +TASK [my_own_namespace.yandex_cloud_cvl.my_own_role : create file] ***************************************** +changed: [localhost] + +PLAY RECAP ************************************************************************************************* +localhost : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 +```