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