class Chef::Knife::AzurermServerCreate

Attributes

initial_sleep_delay[RW]

Public Instance Methods

connect!() click to toggle source

Following methods are not required for ARM

# File lib/chef/knife/azurerm_server_create.rb, line 145
def connect!; end
create_server_def() click to toggle source

run() execution ends ####

# File lib/chef/knife/azurerm_server_create.rb, line 157
def create_server_def
  server_def = {
    azure_resource_group_name: config[:azure_resource_group_name],
    azure_storage_account: config[:azure_storage_account],
    azure_storage_account_type: config[:azure_storage_account_type],
    azure_vm_name: config[:azure_vm_name],
    azure_service_location: config[:azure_service_location],
    azure_os_disk_name: config[:azure_os_disk_name],
    azure_os_disk_caching: config[:azure_os_disk_caching],
    azure_os_disk_create_option: config[:azure_os_disk_create_option],
    azure_vm_size: config[:azure_vm_size],
    azure_image_reference_publisher: config[:azure_image_reference_publisher],
    azure_image_reference_offer: config[:azure_image_reference_offer],
    azure_image_reference_sku: config[:azure_image_reference_sku],
    azure_image_reference_version: config[:azure_image_reference_version],
    azure_availability_set: config[:azure_availability_set],
    azure_vnet_name: config[:azure_vnet_name],
    azure_vnet_subnet_name: config[:azure_vnet_subnet_name],
    ssl_cert_fingerprint: config[:thumbprint],
    cert_path: config[:cert_path],
    cert_password: config[:cert_passphrase],
    vnet_subnet_address_prefix: config[:vnet_subnet_address_prefix],
    server_count: config[:server_count],
  }

  server_def[:tcp_endpoints] = config[:tcp_endpoints] if config[:tcp_endpoints]

  # We assign azure_vm_name to chef_node_name If node name is nill because storage account name is combination of hash value and node name.
  config[:chef_node_name] ||= config[:azure_vm_name]

  server_def[:azure_storage_account] = config[:azure_vm_name] if server_def[:azure_storage_account].nil?
  server_def[:azure_storage_account] = server_def[:azure_storage_account].gsub(/[!@#$%^&*()_-]/, "")

  server_def[:azure_os_disk_name] = config[:azure_vm_name] if server_def[:azure_os_disk_name].nil?
  server_def[:azure_os_disk_name] = server_def[:azure_os_disk_name].gsub(/[!@#$%^&*()_-]/, "")

  server_def[:azure_vnet_name] = config[:azure_vm_name] if server_def[:azure_vnet_name].nil?
  server_def[:azure_vnet_subnet_name] = config[:azure_vm_name] if config[:azure_vnet_subnet_name].nil?

  server_def[:chef_extension] = get_chef_extension_name
  server_def[:chef_extension_publisher] = get_chef_extension_publisher
  server_def[:chef_extension_version] = config[:azure_chef_extension_version]
  server_def[:chef_extension_public_param] = get_chef_extension_public_params
  server_def[:chef_extension_private_param] = get_chef_extension_private_params
  server_def[:auto_upgrade_minor_version] = false
  server_def[:connection_user] = config[:connection_user]
  server_def[:disablePasswordAuthentication] = if config[:ssh_public_key]
                                                 server_def[:ssh_public_key] = File.read(config[:ssh_public_key])
                                                 "true"
                                               else
                                                 server_def[:connection_password] = config[:connection_password]
                                                 "false"
                                               end

  server_def
end
format_ohai_hints(ohai_hints) click to toggle source
# File lib/chef/knife/azurerm_server_create.rb, line 222
def format_ohai_hints(ohai_hints)
  ohai_hints = ohai_hints.split(",").each(&:strip!)
  ohai_hints.join(",")
end
is_supported_ohai_hint?(hint) click to toggle source
# File lib/chef/knife/azurerm_server_create.rb, line 227
def is_supported_ohai_hint?(hint)
  supported_ohai_hints.any? { |supported_ohai_hint| hint.eql? supported_ohai_hint }
end
perform_bootstrap(bootstrap_path) click to toggle source
# File lib/chef/knife/azurerm_server_create.rb, line 153
def perform_bootstrap(bootstrap_path); end
plugin_create_instance!() click to toggle source
# File lib/chef/knife/azurerm_server_create.rb, line 133
def plugin_create_instance!
  set_defaults
  vm_details = service.create_server(create_server_def)
rescue => error
  service.common_arm_rescue_block(error)
  exit
end
plugin_finalize() click to toggle source
# File lib/chef/knife/azurerm_server_create.rb, line 141
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/azurerm_server_create.rb, line 116
def plugin_setup!
  # Check azure cli version due to azure changed `azure` to `az` in azure-cli2.0
  get_azure_cli_version
  set_default_image_reference!
end
plugin_validate_options!() click to toggle source
# File lib/chef/knife/azurerm_server_create.rb, line 124
def plugin_validate_options!
  validate_arm_keys!(
    :azure_resource_group_name,
    :azure_vm_name,
    :azure_service_location
  )
  validate_params!
end
register_client() click to toggle source
# File lib/chef/knife/azurerm_server_create.rb, line 147
def register_client; end
render_template() click to toggle source
# File lib/chef/knife/azurerm_server_create.rb, line 149
def render_template; end
supported_ohai_hints() click to toggle source
# File lib/chef/knife/azurerm_server_create.rb, line 214
def supported_ohai_hints
  %w{
    vm_name
    public_fqdn
    platform
  }
end
upload_bootstrap(content) click to toggle source
# File lib/chef/knife/azurerm_server_create.rb, line 151
def upload_bootstrap(content); end
validate_name_args!() click to toggle source
# File lib/chef/knife/azurerm_server_create.rb, line 122
def validate_name_args!; end
validate_ohai_hints() click to toggle source
# File lib/chef/knife/azurerm_server_create.rb, line 231
def validate_ohai_hints
  hint_values = config[:ohai_hints].split(",")
  hint_values.each do |hint|
    unless is_supported_ohai_hint?(hint)
      raise ArgumentError, "Ohai Hint name #{hint} passed is not supported. Please run the command help to see the list of supported values."
    end
  end
end

Private Instance Methods

is_image_os_type?() click to toggle source
# File lib/chef/knife/azurerm_server_create.rb, line 298
def is_image_os_type?
  config[:azure_image_reference_publisher] && config[:azure_image_reference_offer] && config[:azure_image_reference_sku] && config[:azure_image_reference_version]
end
set_configs() click to toggle source
# File lib/chef/knife/azurerm_server_create.rb, line 247
def set_configs
  unless config[:connection_user].nil?
    config[:connection_user] = config[:connection_user]
  end

  unless config[:connection_password].nil?
    config[:connection_password] = config[:connection_password]
  end
end
set_default_image_reference!() click to toggle source
# File lib/chef/knife/azurerm_server_create.rb, line 257
def set_default_image_reference!
  begin
    if config[:azure_image_os_type]
      validate_publisher_and_offer
      ## if azure_image_os_type is given (with or without azure-image-reference-sku) and other image reference parameters are not given,
      # set default image reference parameters
      case config[:azure_image_os_type]
      when "ubuntu"
        set_os_image("Canonical", "UbuntuServer", "14.04.2-LTS")
      when "centos"
        set_os_image("OpenLogic", "CentOS", "7.1")
      when "rhel"
        set_os_image("RedHat", "RHEL", "7.2")
      when "debian"
        set_os_image("credativ", "Debian", "7")
      when "windows"
        set_os_image("MicrosoftWindowsServer", "WindowsServer", "2012-R2-Datacenter")
      else
        raise ArgumentError, "Invalid value of --azure-image-os-type. Accepted values ubuntu|centos|rhel|debian|windows"
      end
    else
      validate_arm_keys!(:azure_image_os_type) unless is_image_os_type?
    end
  rescue => error
    ui.error("#{error.message}")
    Chef::Log.debug("#{error.backtrace.join("\n")}")
    exit
  end
  # final verification for image reference parameters
  validate_arm_keys!(:azure_image_reference_publisher,
    :azure_image_reference_offer,
    :azure_image_reference_sku,
    :azure_image_reference_version)
end
set_defaults() click to toggle source
# File lib/chef/knife/azurerm_server_create.rb, line 242
def set_defaults
  # set_default_image_reference!
  set_configs
end
set_os_image(publisher, img_offer, default_os_version) click to toggle source
# File lib/chef/knife/azurerm_server_create.rb, line 292
def set_os_image(publisher, img_offer, default_os_version)
  config[:azure_image_reference_publisher] = publisher
  config[:azure_image_reference_offer] = img_offer
  config[:azure_image_reference_sku] = config[:azure_image_reference_sku] || default_os_version
end
validate_publisher_and_offer() click to toggle source
# File lib/chef/knife/azurerm_server_create.rb, line 302
def validate_publisher_and_offer
  if config[:azure_image_reference_publisher] || config[:azure_image_reference_offer]
    # if azure_image_os_type is given and any of the other image reference parameters like publisher or offer are also given,
    # raise error
    raise ArgumentError, 'Please specify either --azure-image-os-type OR --azure-image-os-type with --azure-image-reference-sku or 4 image reference parameters i.e.
      --azure-image-reference-publisher, --azure-image-reference-offer, --azure-image-reference-sku, --azure-image-reference-version."'
  end
end