Class: Chef::Knife::Bootstrap::ChefVaultHandler

Inherits:
Object
  • Object
show all
Defined in:
lib/chef/knife/bootstrap/chef_vault_handler.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(knife_config: {}, ui: nil) ⇒ ChefVaultHandler

Returns a new instance of ChefVaultHandler

Parameters:

  • knife_config (Hash)

    knife merged config, typically @config

  • ui (Chef::Knife::UI)

    ui object for output


36
37
38
39
# File 'lib/chef/knife/bootstrap/chef_vault_handler.rb', line 36

def initialize(knife_config: {}, ui: nil)
  @knife_config = knife_config
  @ui           = ui
end

Instance Attribute Details

#clientChef::ApiClient (readonly)

Returns vault client

Returns:


32
33
34
# File 'lib/chef/knife/bootstrap/chef_vault_handler.rb', line 32

def client
  @client
end

#knife_configHash

Returns knife merged config, typically @config

Returns:

  • (Hash)

    knife merged config, typically @config


26
27
28
# File 'lib/chef/knife/bootstrap/chef_vault_handler.rb', line 26

def knife_config
  @knife_config
end

#uiChef::Knife::UI

Returns ui object for output

Returns:


29
30
31
# File 'lib/chef/knife/bootstrap/chef_vault_handler.rb', line 29

def ui
  @ui
end

Instance Method Details

#doing_chef_vault?Boolean

Returns if we've got chef vault options to act on or not

Returns:

  • (Boolean)

    if we've got chef vault options to act on or not


71
72
73
# File 'lib/chef/knife/bootstrap/chef_vault_handler.rb', line 71

def doing_chef_vault?
  !!(bootstrap_vault_json || bootstrap_vault_file || bootstrap_vault_item)
end

#load_chef_bootstrap_vault_item(vault, item) ⇒ Object

Hook to stub out ChefVault

Parameters:

  • vault (String)

    name of the chef-vault encrypted data bag

  • item (String)

    name of the chef-vault encrypted item


135
136
137
# File 'lib/chef/knife/bootstrap/chef_vault_handler.rb', line 135

def load_chef_bootstrap_vault_item(vault, item)
  ChefVault::Item.load(vault, item)
end

#run(client) ⇒ Object

Updates the chef vault items for the newly created client.

Parameters:


44
45
46
47
48
49
50
51
52
# File 'lib/chef/knife/bootstrap/chef_vault_handler.rb', line 44

def run(client)
  return unless doing_chef_vault?

  sanity_check

  @client = client

  update_bootstrap_vault_json!
end

#update_bootstrap_vault_json!Object

Iterate through all the vault items to update. Items may be either a String or an Array of Strings:

{ "vault1": "item", "vault2": [ "item1", "item2", "item2" ] }


62
63
64
65
66
67
68
# File 'lib/chef/knife/bootstrap/chef_vault_handler.rb', line 62

def update_bootstrap_vault_json!
  vault_json.each do |vault, items|
    [ items ].flatten.each do |item|
      update_vault(vault, item)
    end
  end
end