📜  Chef-角色

📅  最后修改于: 2020-11-04 04:50:50             🧑  作者: Mango


 

Chef中的角色是对节点进行分组的逻辑方法。典型的情况是具有Web服务器,数据库服务器等的角色。可以为所有节点设置自定义运行列表,并覆盖角色中的属性值。

创建角色

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 

现在,我们需要为一个称为服务器的节点分配一个角色。

向节点分配角色

vipin@laptop:~/chef-repo $ knife node edit server 
"run_list": [ 
   "role[web_servers]" 
] 
Saving updated run_list on node server 

运行厨师客户端

user@server:~$ sudo chef-client 
...TRUNCATED OUTPUT... 
[2013-07-25T13:28:24+00:00] INFO: Run List is [role[web_servers]] 
[2013-07-25T13:28:24+00:00] INFO: Run List expands to [ntp] 
...TRUNCATED OUTPUT... 

怎么运行的

  • 在Chef存储库的role文件夹内的Ruby文件中定义一个角色。
  • 角色由名称和描述属性组成。
  • 角色由特定于角色的运行列表和特定于角色的属性设置组成。
  • 在其运行列表中具有角色的每个节点都会将角色的运行列表精确地划分到自己的节点中。
  • 角色运行列表中的所有配方都将在节点上执行。
  • 该角色将使用文件命令中的小刀角色上载到Chef服务器。
  • 该角色将添加到节点运行列表中。
  • 在其运行列表中具有该角色的节点上运行Chef客户端将执行该角色中列出的所有配方。