class Chef::Knife::BootstrapAzurerm

Public Instance Methods

connect!() click to toggle source

Following methods are not required

# File lib/chef/knife/bootstrap_azurerm.rb, line 77
def connect!; end
perform_bootstrap(bootstrap_path) click to toggle source
# File lib/chef/knife/bootstrap_azurerm.rb, line 85
def perform_bootstrap(bootstrap_path); end
plugin_create_instance!() click to toggle source
# File lib/chef/knife/bootstrap_azurerm.rb, line 52
def plugin_create_instance!
  if @name_args.length == 1
    ui.log("Creating VirtualMachineExtension....")
    ext_params = set_ext_params
    vm_extension = service.create_vm_extension(ext_params)
    if vm_extension
      if ext_params[:chef_extension_public_param][:extendedLogs] == "true"
        service.fetch_chef_client_logs(ext_params[:azure_resource_group_name], ext_params[:azure_vm_name], ext_params[:chef_extension], Time.now)
      end
      ui.log("VirtualMachineExtension creation successfull.")
      ui.log("Virtual Machine Extension name is: #{vm_extension.name}")
      ui.log("Virtual Machine Extension ID is: #{vm_extension.id}")
    end
  else
    raise ArgumentError, "Please specify the SERVER name which needs to be bootstrapped via the Chef Extension." if @name_args.empty?
    raise ArgumentError, "Please specify only one SERVER name which needs to be bootstrapped via the Chef Extension." if @name_args.length > 1
  end
rescue StandardError => error
  service.common_arm_rescue_block(error)
end
plugin_finalize() click to toggle source
# File lib/chef/knife/bootstrap_azurerm.rb, line 73
def plugin_finalize; end
plugin_setup!() click to toggle source

run() would be executing from parent class Chef::Knife::Bootstrap, defined in core. Required methods have been overridden here

run() execution begins ####
# File lib/chef/knife/bootstrap_azurerm.rb, line 43
def plugin_setup!; end
plugin_validate_options!() click to toggle source
# File lib/chef/knife/bootstrap_azurerm.rb, line 47
def plugin_validate_options!
  ui.log("Validating...")
  validate_arm_keys!(:azure_resource_group_name, :azure_service_location)
end
register_client() click to toggle source
# File lib/chef/knife/bootstrap_azurerm.rb, line 79
def register_client; end
render_template() click to toggle source
# File lib/chef/knife/bootstrap_azurerm.rb, line 81
def render_template; end
set_ext_params() click to toggle source

run() execution ends ####

# File lib/chef/knife/bootstrap_azurerm.rb, line 89
def set_ext_params
  server = service.find_server(config[:azure_resource_group_name], name_args[0])

  if server
    if service.extension_already_installed?(server)
      raise "Virtual machine #{server.name} already has Chef extension installed on it."
    else
      ext_params = {}
      case server.storage_profile.os_disk.os_type.downcase
      when "windows"
        ext_params[:chef_extension] = "ChefClient"
      when "linux"
        if %w{ubuntu debian rhel centos}.any? { |platform| server.storage_profile.image_reference.offer.downcase.include? platform }
          ext_params[:chef_extension] = "LinuxChefClient"
        else
          raise "Offer #{server.storage_profile.image_reference.offer} is not supported in the extension."
        end
      else
        raise "OS type #{server.storage_profile.os_disk.os_type} is not supported."
      end

      ext_params[:azure_resource_group_name] = config[:azure_resource_group_name]
      ext_params[:azure_vm_name] = @name_args[0]
      ext_params[:azure_service_location] = config[:azure_service_location]
      ext_params[:chef_extension_publisher] = get_chef_extension_publisher
      ext_params[:chef_extension_version] = get_chef_extension_version(ext_params[:chef_extension])
      ext_params[:chef_extension_public_param] = get_chef_extension_public_params
      ext_params[:chef_extension_private_param] = get_chef_extension_private_params
    end
  else
    raise "The given server '#{@name_args[0]}' does not exist under resource group '#{config[:azure_resource_group_name]}'"
  end

  ext_params
end
upload_bootstrap(content) click to toggle source
# File lib/chef/knife/bootstrap_azurerm.rb, line 83
def upload_bootstrap(content); end
validate_name_args!() click to toggle source
# File lib/chef/knife/bootstrap_azurerm.rb, line 45
def validate_name_args!; end