Chef - Knife 设置

Knife 是 Chef 的命令行工具,用于与 Chef 服务器交互。人们使用它来上传Cookbook(食谱)和管理 Chef 的其他方面。它提供了本地机器上的 chefDK (Repo) 和 Chef 服务器之间的接口。它有助于管理 −

  • Chef 节点
  • Cookbook(食谱)
  • Kitchen(配方)
  • 环境
  • 云资源
  • 云配置
  • 在 Chef 节点上的 Chef 客户端上安装

Knife 提供了一组命令来管理 Chef 基础设施。

Bootstrap 命令

  • knife bootstrap [SSH_USER@]FQDN (options)

Client 命令

  • knife client bulk delete REGEX (options)
  • knife client create CLIENTNAME (options)
  • knife client delete CLIENT (options)
  • knife client edit CLIENT (options)
  • Usage: C:/opscode/chef/bin/knife (options)
  • knife client key delete CLIENT KEYNAME (options)
  • knife client key edit CLIENT KEYNAME (options)
  • knife client key list CLIENT (options)
  • knife client key show CLIENT KEYNAME (options)
  • knife client list (options)
  • knife client reregister CLIENT (options)
  • knife client show CLIENT (options)

Configure 命令

  • knife configure (options)
  • knife configure client DIRECTORY

Cookbook 命令

  • knife cookbook bulk delete REGEX (options)
  • knife cookbook create COOKBOOK (options)
  • knife cookbook delete COOKBOOK VERSION (options)
  • knife cookbook download COOKBOOK [VERSION] (options)
  • knife cookbook list (options)
  • knife cookbook metadata COOKBOOK (options)
  • knife cookbook metadata from FILE (options)
  • knife cookbook show COOKBOOK [VERSION] [PART] [FILENAME] (options)
  • knife cookbook test [COOKBOOKS...] (options)
  • knife cookbook upload [COOKBOOKS...] (options)

Cookbook Site 命令

  • knife cookbook site download COOKBOOK [VERSION] (options)
  • knife cookbook site install COOKBOOK [VERSION] (options)
  • knife cookbook site list (options)
  • knife cookbook site search QUERY (options)
  • knife cookbook site share COOKBOOK [CATEGORY] (options)
  • knife cookbook site show COOKBOOK [VERSION] (options)
  • knife cookbook site unshare COOKBOOK

Data Bag 命令

  • knife data bag create BAG [ITEM] (options)
  • knife data bag delete BAG [ITEM] (options)
  • knife data bag edit BAG ITEM (options)
  • knife data bag from file BAG FILE|FOLDER [FILE|FOLDER..] (options)
  • knife data bag list (options)
  • knife data bag show BAG [ITEM] (options)

Environment 命令

  • knife environment compare [ENVIRONMENT..] (options)
  • knife environment create ENVIRONMENT (options)
  • knife environment delete ENVIRONMENT (options)
  • knife environment edit ENVIRONMENT (options)
  • knife environment from file FILE [FILE..] (options)
  • knife environment list (options)
  • knife environment show ENVIRONMENT (options)

Exec 命令

  • knife exec [SCRIPT] (options)

Help 命令

  • knife help [list|TOPIC]

Index 命令

  • knife index rebuild (options)

Node 命令

  • knife node bulk delete REGEX (options)
  • knife node create NODE (options)
  • knife node delete NODE (options)
  • knife node edit NODE (options)
  • knife node environment set NODE ENVIRONMENT
  • knife node from file FILE (options)
  • knife node list (options)
  • knife node run_list add [NODE] [ENTRY[,ENTRY]] (options)
  • knife node run_list remove [NODE] [ENTRY[,ENTRY]] (options)
  • knife node run_list set NODE ENTRIES (options)
  • knife node show NODE (options)

OSC 命令

  • knife osc_user create USER (options)
  • knife osc_user delete USER (options)
  • knife osc_user edit USER (options)
  • knife osc_user list (options)
  • knife osc_user reregister USER (options)
  • knife osc_user show USER (options)

基于路径的命令

  • knife delete [PATTERN1 ... PATTERNn]
  • knife deps PATTERN1 [PATTERNn]
  • knife diff PATTERNS
  • knife download PATTERNS
  • knife edit [PATTERN1 ... PATTERNn]
  • knife list [-dfR1p] [PATTERN1 ... PATTERNn]
  • knife show [PATTERN1 ... PATTERNn]
  • knife upload PATTERNS
  • knife xargs [COMMAND]

Raw 命令

  • knife raw REQUEST_PATH

Recipe 命令

  • knife recipe list [PATTERN]

Role 命令

  • knife role bulk delete REGEX (options)
  • knife role create ROLE (options)
  • knife role delete ROLE (options)
  • knife role edit ROLE (options)
  • knife role env_run_list add [ROLE] [ENVIRONMENT] [ENTRY[,ENTRY]] (options)
  • knife role env_run_list clear [ROLE] [ENVIRONMENT]
  • knife role env_run_list remove [ROLE] [ENVIRONMENT] [ENTRIES]
  • knife role env_run_list replace [ROLE] [ENVIRONMENT] [OLD_ENTRY] [NEW_ENTRY]
  • knife role env_run_list set [ROLE] [ENVIRONMENT] [ENTRIES]
  • knife role from file FILE [FILE..] (options)
  • knife role list (options)
  • knife role run_list add [ROLE] [ENTRY[,ENTRY]] (options)
  • knife role run_list clear [ROLE]
  • knife role run_list remove [ROLE] [ENTRY]
  • knife role run_list replace [ROLE] [OLD_ENTRY] [NEW_ENTRY]
  • knife role run_list set [ROLE] [ENTRIES]
  • knife role show ROLE (options)

Serve 命令

  • knife serve (options)

SSH 命令

  • knife ssh QUERY COMMAND (options)

SSL 命令

  • knife ssl check [URL] (options)
  • knife ssl fetch [URL] (options)

Status 命令

  • knife status QUERY (options)

Tag 命令

  • knife tag create NODE TAG ...
  • knife tag delete NODE TAG ...
  • knife tag list NODE

user 命令

  • knife user create USERNAME DISPLAY_NAME FIRST_NAME LAST_NAME EMAIL PASSWORD (options)
  • knife user delete USER (options)
  • knife user edit USER (options)
  • knife user key create USER (options)
  • knife user key delete USER KEYNAME (options)
  • knife user key edit USER KEYNAME (options)
  • knife user key list USER (options)
  • knife user key show USER KEYNAME (options)
  • knife user list (options)
  • knife user reregister USER (options)
  • knife user show USER (options)

Knife 设置

为了设置 Knife,需要转到 .chef 目录并在 chef repo 中创建一个 knife.rb,该文件会告诉 Knife 有关配置的详细信息。这将包含一些详细信息。

current_dir = File.dirname(__FILE__) 
log_level                :info 
log_location             STDOUT 
node_name                'node_name' 
client_key               "#{current_dir}/USER.pem" 
validation_client_name   'ORG_NAME-validator' 
validation_key           "#{current_dir}/ORGANIZATION-validator.pem" 
chef_server_url          'https://api.chef.io/organizations/ORG_NAME' 
cache_type               'BasicFile' 
cache_options( :path =>  "#{ENV['HOME']}/.chef/checksums" ) 
cookbook_path            ["#{current_dir}/../cookbooks"] 

在上面的代码中,我们使用托管的 Chef 服务器,它使用以下两个键。

validation_client_name   'ORG_NAME-validator' 
validation_key           "#{current_dir}/ORGANIZATION-validator.pem" 

在这里,knife.rb 告诉 knife 使用哪个组织以及在哪里找到私钥。它告诉 knife 在哪里找到用户的私钥。

client_key               "#{current_dir}/USER.pem" 

下面一行代码告诉 knife 我们正在使用托管服务器。

chef_server_url        'https://api.chef.io/organizations/ORG_NAME' 

Using the knife.rb file, the validator knife can now connect to your organization's hosted Opscode.