Образовательный проект «SnakeProject» Михаила Козлова

Навигация

⇒ FreeBSD and Nix ⇐

CISCO

Voice(Asterisk\Cisco)

Microsoft

Powershell

Python

SQL\T-SQL

Общая

WEB Разработка

ORACLE SQL \ JAVA

Мото

Стрельба, пневматика, оружие

Саморазвитие и психология


Роли Ansible


Роли Ansible

Есть большая вероятность, что кто-то до Вас уже разработал решение Вашей задачи.
Используйте готовые роли Ansible Galaxy или пишите свои.
По сути, роли - способ логического разделения файлов Ansible.

По умолчанию ansible ищет роли в каталогах:

  • ./roles (уровень каталога c файлом playbook)
  • /etc/ansible/roles

Возможно указать параметр roles_path в ansible.cfg для другого места поиска ролей.

Типовая структура роли ansible:

  • defaults: переменные по умолчанию для роли, которые могут быть перезаписаны в playbook.
  • vars: стандартные переменные роли, которые не должны быть перезаписаны в playbook.
  • tasks: набор задач, которые выполняет роль.
  • handlers: набор обработчиков, используемых в роли.
  • templates: шаблоны Jinja2, используемых в роли.
  • files: статические файлы.
  • meta: метаданные роли, информация об авторе, лицензии, зависимостях и т.п.
  • tests: может содержать доп. файлы инвентаря или playbook для тестирования роли.

Пример логической структуры каталогов с 3 плейбуками и двумя ролями:

Как можно догадаться, первые три файла - playbook, использующие роли.

Способы, как можно указать роли в playbook:
- ключевое слово roles для статического импорта ролей
- модуль include_role для динамического импорта ролей
- модуль import_role


Синтаксис статического импорта роли в playbook

Первый вариант записи using_all_roles.yml:

Второй вариант записи с полным путем using_all_roles.yml:

Теги позволяют запускать определенную роль и игнорировать другие роли, пример:

Запуск определенной роли(redhat), пример:
# ansible-playbook --tags redhat /etc/ansible/using_all_roles.yml -i hosts.yml


На примере установки сервиса nginx

В одной из статей уже делал пример nginx + ansible без ролей, возьмем за основу:
https://snakeproject.ru/rubric/article.php?art=terraform_ansible

Наша задача та-же - установить nginx + на основе шаблонов сделать конфиги

Galaxy - по сути репозиторий готовых плейбуков и ролей
См. документацию:
https://galaxy.ansible.com/ui/
Синтаксис установки: ansible-galaxy install название

# mkdir -p /root/ansible-nginx/{inventory,roles}

/root/ansible-nginx/inventory/hosts.yml:

# ansible all -i inventory/hosts.yml -m ping
192.168.0.1 | SUCCESS => {
"changed": false, 
"ping": "pong"
}

/root/ansible-nginx/webserver.yml:

# cd /root/ansible-nginx/roles

# ansible-galaxy init nginx
- nginx was created successfully

Получили структуру nginx:
# tree roles/
roles/
└── nginx
    ├── README.md
    ├── defaults
    │          └── main.yml
    ├── handlers
    │          └── main.yml
    ├── meta
    │          └── main.yml
    ├── tasks
    │          └── main.yml
    ├── tests
    │          ├── inventory
    │          └── test.yml
    └── vars
        └── main.yml


/root/ansible-nginx/roles/nginx/tasks/main.yml:

/root/ansible-nginx/roles/nginx/vars/main.yml:

/root/ansible-nginx/roles/nginx/templates/nginx.j2:

/root/ansible-nginx/roles/nginx/templates/vhost.j2:

/root/ansible-nginx/roles/nginx/templates/index.j2:

Проверка синтаксиса и запуск:
# cd /root/ansible-nginx/
# ansible-playbook -i inventory/hosts.yml webserver.yml --syntax-check
# ansible-playbook -i inventory/hosts.yml webserver.yml

 


Комментарии пользователей

Эту новость ещё не комментировалиНаписать комментарий
Анонимам нельзя оставоять комментарии, зарегистрируйтесь!

Контакты Группа ВК Сборник материалов по Cisco, Asterisk, Windows Server, Python и Django, SQL и T-SQL, FreeBSD и LinuxКод обмена баннерами Видео к IT статьям на YoutubeВидео на другие темы Смотреть
Мои друзья: Советы, помощь, инструменты для сис.админа, статическая и динамическая маршрутизация, FreeBSD

© Snakeproject.ru создан в 2013 году.
При копировании материала с сайта - оставьте ссылку.
Весь материал на сайте носит ознакомительный характер,
за его использование другими людьми, автор ответственности не несет.

Рейтинг@Mail.ru
Рейтинг@Mail.ru Яндекс.Метрика





Поддержать автора и проект