Syntax highlighting of 7e528a1 ~( devops/ansible/roles)
= Ansible Roles = <<TableOfContents()>> == Полезные роли == https://galaxy.ansible.com/ ||Service||Role names||Links|| ===== ||docker||geerlingguy.docker||[[https://galaxy.ansible.com/geerlingguy/docker|Galaxy|class=" moin-https"]]|| ||nginx||geerlingguy.nginx||[[https://galaxy.ansible.com/geerlingguy/nginx|Galaxy|class=" moin-https"]]|| ||nginx basic auth||geerlingguy.htpasswd||[[https://galaxy.ansible.com/geerlingguy/htpasswd|Galaxy|class=" moin-https"]]|| ||ssh||willshersystems.sshd||[[https://galaxy.ansible.com/willshersystems/sshd|Galaxy|class=" moin-https"]]|| ||systemd||cimon-io.systemd-service||[[https://galaxy.ansible.com/cimon-io/systemd-service|Galaxy|class=" moin-https"]]|| {{{ ansible-galaxy install -p ./roles geerlingguy.docker # --- or git submodule add git@github.com:geerlingguy/ansible-role-docker.git roles/geerlingguy.docker }}} == Общие сведения == ''Роли'' в Ansible - это основной механизм деления сценария на отдельные файлы. Они упрощают написание сценариев и их повторное использование. Например, файлы, связанные с ролью `database`, хранятся в каталоге ''roles/database'' со следующей структурой Каталог/файл | Описание ---|--- ''roles/database/defaults/main.yml'' | Переменные, которые могут переопределяться ''roles/database/files/'' | Файлы, выгружаемые на хосты ''roles/database/handlers/main.yml'' | Обработчики ''roles/database/meta/main.yml'' | Информация о зависимостях данной роли ''roles/database/tasks/main.yml'' | Список задач без высокоуровневой операции ''roles/database/templates/'' | Файлы шаблонов Jinja2 ''roles/database/vars/main.yml'' | Переменные, которые не должны переопределяться По-умолчанию роли располагаются в каталоге ''/etc/ansible/roles'' или ''./roles'' проекта. Изменение каталога ролей осуществляется через ''ansible.cfg'' {{{ [defaults] roles_path = ~/ansible_roles }}} Подключение ролей к сценариям {{{ - name: deploy something on somewhere hosts: web vars_files: - secrets.yml roles: - role: database database_name: "{{ dbname }}" database_user: "{{ dbuser }}" - role: mezzanine live_hostname: 192.168.0.1 }}} Если никакие переменные не переопределяются, то `roles` можно записать компактнее {{{ ... roles: - database - mezzanine }}} Определение зависимостей между ролями {{{ # roles/web/meta/main.yml dependencies: - { roles: ntp, ntp_server=ntp.ubuntu.com } # roles/django/meta/main.yml dependencies: - { roles: web } - { role: memcached } }}} Работа с Galaxy {{{ # список ролей ansible-galaxy list # Установка роли ansible-galaxy install -p ./roles bennojoy.ntp # Удаление роли ansible-galaxy remove bennojoy.ntp }}}
