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"]]|| {{{#!highlight bash ansible-galaxy install -p ./roles geerlingguy.docker # --- or git submodule add git@github.com:geerlingguy/ansible-role-docker.git roles/geerlingguy.docker }}} == Galaxy == Работа с galaxy {{{#!highlight bash # список ролей ansible-galaxy list # Установка роли ansible-galaxy install -p ./roles bennojoy.ntp # Удаление роли ansible-galaxy remove bennojoy.ntp }}} Выгрузка роли из github в galaxy {{{#!highlight bash ansible-galaxy role import --role-name MY_ROLE_NAME \ --api-key SECRET \ --branch BRANCH_IN_REPO \ GITHUB_USERNAME GITHUB_PROJECT }}} == Общие сведения == ''Роли'' в 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'' {{{#!highlight ini [defaults] roles_path = ~/ansible_roles }}} Подключение ролей к сценариям {{{#!highlight yaml - 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` можно записать компактнее {{{#!highlight yaml ... roles: - database - mezzanine }}} Определение зависимостей между ролями {{{#!highlight yaml # roles/web/meta/main.yml dependencies: - { roles: ntp, ntp_server=ntp.ubuntu.com } # roles/django/meta/main.yml dependencies: - { roles: web } - { role: memcached } }}}
