Роли в Chef — это логический способ группировки узлов. Типичными случаями являются роли для веб-серверов, серверов баз данных и т. Д. Можно настроить пользовательский список выполнения для всех узлов и переопределить значение атрибута в ролях.
Создать роль
vipin@laptop:~/chef-repo $ subl roles/web_servers.rb name "web_servers" description "This role contains nodes, which act as web servers" run_list "recipe[ntp]" default_attributes 'ntp' => { 'ntpdate' => { 'disable' => true } }
Как только мы создали роль, нам нужно загрузить ее на сервер Chef.
Загрузить роль на сервер Chef
vipin@laptop:~/chef-repo $ knife role from file web_servers.rb
Теперь нам нужно назначить роль узлу с именем server.
Определите роль в файле Ruby внутри папки ролей репозитория Chef.
Роль состоит из имени и атрибута описания.
Роль состоит из списка выполнения для конкретной роли и параметров атрибута для конкретной роли.
У каждого узла, который имеет роль в своем списке выполнения, список выполнения роли будет определен как отдельный.
Все рецепты в списке выполнения роли будут выполнены на узле.
Роль будет загружена на сервер Chef с помощью роли ножа из команды file.
Роль будет добавлена в список выполнения узла.
Запуск клиента Chef на узле, имеющем роль в его списке выполнения, выполнит все рецепты, перечисленные в роли.