vagrant-zones 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (67) hide show
  1. checksums.yaml +7 -0
  2. data/.github/ISSUE_TEMPLATE/bug_report.md +27 -0
  3. data/.github/ISSUE_TEMPLATE/feature_request.md +20 -0
  4. data/.github/dependabot.yml +6 -0
  5. data/.github/workflows/codeql-analysis.yml +72 -0
  6. data/.github/workflows/lint-release-and-publish.yml +70 -0
  7. data/.github/workflows/ruby-lint.yml +35 -0
  8. data/.gitignore +35 -0
  9. data/.rspec +2 -0
  10. data/.rubocop.yml +143 -0
  11. data/CHANGELOG.md +0 -0
  12. data/CODE_OF_CONDUCT.md +128 -0
  13. data/CONTRIBUTING.md +96 -0
  14. data/Gemfile +14 -0
  15. data/LICENSE +651 -0
  16. data/PULL_REQUEST_TEMPLATE.md +39 -0
  17. data/README.md +81 -0
  18. data/RELEASE.md +15 -0
  19. data/Rakefile +32 -0
  20. data/SECURITY.md +19 -0
  21. data/docs/CNAME +1 -0
  22. data/docs/_config.yml +1 -0
  23. data/docs/css/main.css +55 -0
  24. data/docs/css/styles.css +8678 -0
  25. data/docs/index.html +127 -0
  26. data/lib/vagrant-zones/action/create.rb +29 -0
  27. data/lib/vagrant-zones/action/destroy.rb +27 -0
  28. data/lib/vagrant-zones/action/halt.rb +24 -0
  29. data/lib/vagrant-zones/action/import.rb +112 -0
  30. data/lib/vagrant-zones/action/is_created.rb +22 -0
  31. data/lib/vagrant-zones/action/network.rb +26 -0
  32. data/lib/vagrant-zones/action/not_created.rb +20 -0
  33. data/lib/vagrant-zones/action/package.rb +134 -0
  34. data/lib/vagrant-zones/action/prepare_nfs_valid_ids.rb +24 -0
  35. data/lib/vagrant-zones/action/restart.rb +53 -0
  36. data/lib/vagrant-zones/action/setup.rb +26 -0
  37. data/lib/vagrant-zones/action/shutdown.rb +47 -0
  38. data/lib/vagrant-zones/action/start.rb +25 -0
  39. data/lib/vagrant-zones/action/wait_till_boot.rb +59 -0
  40. data/lib/vagrant-zones/action/wait_till_up.rb +65 -0
  41. data/lib/vagrant-zones/action.rb +204 -0
  42. data/lib/vagrant-zones/command/configure_snapshots.rb +49 -0
  43. data/lib/vagrant-zones/command/console.rb +63 -0
  44. data/lib/vagrant-zones/command/create_snapshots.rb +46 -0
  45. data/lib/vagrant-zones/command/delete_snapshots.rb +38 -0
  46. data/lib/vagrant-zones/command/guest_power_controls.rb +58 -0
  47. data/lib/vagrant-zones/command/list_snapshots.rb +44 -0
  48. data/lib/vagrant-zones/command/restart_guest.rb +29 -0
  49. data/lib/vagrant-zones/command/shutdown_guest.rb +29 -0
  50. data/lib/vagrant-zones/command/vnc_console.rb +48 -0
  51. data/lib/vagrant-zones/command/webvnc_console.rb +49 -0
  52. data/lib/vagrant-zones/command/zfssnapshot.rb +67 -0
  53. data/lib/vagrant-zones/command/zlogin_console.rb +40 -0
  54. data/lib/vagrant-zones/command/zone.rb +73 -0
  55. data/lib/vagrant-zones/config.rb +78 -0
  56. data/lib/vagrant-zones/driver.rb +1710 -0
  57. data/lib/vagrant-zones/errors.rb +61 -0
  58. data/lib/vagrant-zones/executor.rb +38 -0
  59. data/lib/vagrant-zones/plugin.rb +79 -0
  60. data/lib/vagrant-zones/provider.rb +83 -0
  61. data/lib/vagrant-zones/util/subprocess.rb +31 -0
  62. data/lib/vagrant-zones/util/timer.rb +19 -0
  63. data/lib/vagrant-zones/version.rb +7 -0
  64. data/lib/vagrant-zones.rb +29 -0
  65. data/locales/en.yml +326 -0
  66. data/vagrant-zones.gemspec +51 -0
  67. metadata +412 -0
@@ -0,0 +1,61 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'vagrant'
4
+
5
+ module VagrantPlugins
6
+ module ProviderZone
7
+ module Errors
8
+ class VagrantZonesError < Vagrant::Errors::VagrantError
9
+ error_namespace('vagrant_zones.errors')
10
+ end
11
+
12
+ class SystemVersionIsTooLow < VagrantZonesError
13
+ error_key(:system_version_too_low)
14
+ end
15
+
16
+ class MissingCompatCheckTool < VagrantZonesError
17
+ error_key(:missing_compatability_check_tool)
18
+ end
19
+
20
+ class MissingBhyve < VagrantZonesError
21
+ error_key(:missing_bhyve)
22
+ end
23
+
24
+ class HasNoRootPrivilege < VagrantZonesError
25
+ error_key(:has_no_root_privilege)
26
+ end
27
+
28
+ class ExecuteError < VagrantZonesError
29
+ error_key(:execute_error)
30
+ end
31
+
32
+ class TimeoutError < VagrantZonesError
33
+ error_key(:timeout_error)
34
+ end
35
+
36
+ class VirtualBoxRunningConflictDetected < VagrantZonesError
37
+ error_key(:virtual_box_running_conflict_detected)
38
+ end
39
+
40
+ class NotYetImplemented < VagrantZonesError
41
+ error_key(:not_yet_implemented)
42
+ end
43
+
44
+ class TimeoutHalt < VagrantZonesError
45
+ error_key(:halt_timeout)
46
+ end
47
+
48
+ class InvalidbhyveBrand < VagrantZonesError
49
+ error_key(:invalidbhyve_brand)
50
+ end
51
+
52
+ class InvalidLXBrand < VagrantZonesError
53
+ error_key(:invalidLX_brand)
54
+ end
55
+
56
+ class ConsoleFailed < VagrantZonesError
57
+ error_key(:console_failed_exit)
58
+ end
59
+ end
60
+ end
61
+ end
@@ -0,0 +1,38 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'vagrant/util/busy'
4
+ require 'vagrant/util/subprocess'
5
+
6
+ module VagrantPlugins
7
+ module ProviderZone
8
+ module Executor
9
+ # This class is used to execute commands as subprocess.
10
+ class Exec
11
+ # When we need the command's exit code we should set parameter
12
+ # exit_code to true, otherwise this method will return executed
13
+ # command's stdout
14
+ def execute(exit_code, *cmd, **_opts, &block)
15
+ # Append in the options for subprocess
16
+ cmd << { notify: %i[stdout stderr] }
17
+
18
+ cmd.unshift('sh', '-c')
19
+ interrupted = false
20
+ # Lambda to change interrupted to true
21
+ int_callback = -> { interrupted = true }
22
+ result = ::Vagrant::Util::Busy.busy(int_callback) do
23
+ ::Vagrant::Util::Subprocess.execute(*cmd, &block)
24
+ end
25
+ return result.exit_code if exit_code
26
+
27
+ result.stderr.gsub!("\r\n", "\n")
28
+ result.stdout.gsub!("\r\n", "\n")
29
+ puts "Command Failed: #{cmd}" if result.exit_code != 0 || interrupted
30
+ puts "Exit Results: #{result.stderr}" if result.exit_code != 0 || interrupted
31
+ raise Errors::ExecuteError if result.exit_code != 0 || interrupted
32
+
33
+ result.stdout[0..-2]
34
+ end
35
+ end
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,79 @@
1
+ # frozen_string_literal: true
2
+
3
+ begin
4
+ require 'vagrant'
5
+ rescue LoadError
6
+ raise 'The Vagrant Zones plugin must be run within Vagrant.'
7
+ end
8
+
9
+ module VagrantPlugins
10
+ module ProviderZone
11
+ # This is a the plugin droping for the Vagrant-zones vagrant plugin
12
+ class Plugin < Vagrant.plugin('2')
13
+ name 'zone'
14
+ description <<-DESC
15
+ This plugin allows vagrant to manage bhyve, lx-branded zones or native zones on
16
+ OmniOSce or any other illumos based distribution
17
+ DESC
18
+
19
+ config(:zone, :provider) do
20
+ require_relative 'config'
21
+ Config
22
+ end
23
+ ## Experimental Parallel Execucution
24
+ ## provider(:zone, parallel: true) do
25
+ provider(:zone) do
26
+ require_relative 'provider'
27
+ Provider
28
+ end
29
+
30
+ # This initializes the internationalization strings.
31
+ def self.setup_i18n
32
+ I18n.load_path << File.expand_path('locales/en.yml', ProviderZone.source_root)
33
+ I18n.reload!
34
+ end
35
+
36
+ # This sets up our log level to be whatever VAGRANT_LOG is.
37
+ def self.setup_logging
38
+ require 'log4r'
39
+
40
+ level = nil
41
+ begin
42
+ level = Log4r.const_get(ENV['VAGRANT_LOG'].upcase)
43
+ rescue NameError
44
+ # This means that the logging constant wasn't found,
45
+ # which is fine. We just keep `level` as `nil`. But
46
+ # we tell the user.
47
+ level = nil
48
+ end
49
+
50
+ # Some constants, such as "true" resolve to booleans, so the
51
+ # above error checking doesn't catch it. This will check to make
52
+ # sure that the log level is an integer, as Log4r requires.
53
+ level = nil unless level.is_a?(Integer)
54
+
55
+ # Set the logging level on all "vagrant" namespaced
56
+ # logs as long as we have a valid level.
57
+
58
+ return unless level
59
+
60
+ logger = Log4r::Logger.new('vagrant_zones')
61
+ logger.outputters = Log4r::Outputter.stderr
62
+ logger.level = level
63
+ logger
64
+ end
65
+
66
+ # Setup logging and i18n before any autoloading loads other classes
67
+ # with logging configured as this prevents inheritance of the log level
68
+ # from the parent logger.
69
+ setup_logging
70
+ setup_i18n
71
+
72
+ ## This setups the zone commands master
73
+ command('zone') do
74
+ require_relative 'command/zone'
75
+ Command::Zone
76
+ end
77
+ end
78
+ end
79
+ end
@@ -0,0 +1,83 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'vagrant'
4
+ require 'log4r'
5
+
6
+ module VagrantPlugins
7
+ # This is a module to assist in managing, creating bhyve, kvm, and lx zones
8
+ module ProviderZone
9
+ autoload :Driver, 'vagrant-zones/driver'
10
+ # This is a module to assist in managing, creating bhyve, kvm, and lx zones
11
+ class Provider < Vagrant.plugin('2', :provider)
12
+ def initialize(machine)
13
+ @logger = Log4r::Logger.new('vagrant::provider::zone')
14
+ @machine = machine
15
+ super(machine)
16
+ end
17
+
18
+ def driver
19
+ return @driver if @driver
20
+
21
+ @driver = Driver.new(@machine)
22
+ end
23
+
24
+ def ssh_info
25
+ # We just return nil if were not able to identify the VM's IP and
26
+ # let Vagrant core deal with it like docker provider does
27
+ return nil if state.id != :running
28
+ return nil unless driver.get_ip_address('ssh_info')
29
+
30
+ passwordauth = 'passwordauth'
31
+ ssh_info = {
32
+ host: driver.get_ip_address('ssh_info'),
33
+ port: driver.sshport(@machine).to_s,
34
+ password: driver.vagrantuserpass(@machine).to_s,
35
+ username: driver.user(@machine),
36
+ private_key_path: driver.userprivatekeypath(@machine).to_s,
37
+ PasswordAuthentication: passwordauth
38
+ }
39
+ return ssh_info unless ssh_info.nil?
40
+ end
41
+
42
+ # This should return an action callable for the given name.
43
+ # @param [Symbol] name Name of the action.
44
+ # @return [Object] A callable action sequence object, whether it
45
+ # is a proc, object, etc.
46
+ def action(name)
47
+ # Attempt to get the action method from the Action class if it
48
+ # exists, otherwise return nil to show that we don't support the
49
+ # given action
50
+ action_method = "action_#{name}"
51
+ return Action.send(action_method) if Action.respond_to?(action_method)
52
+
53
+ nil
54
+ end
55
+
56
+ # This method is called if the underying machine ID changes. Providers
57
+ # can use this method to load in new data for the actual backing
58
+ # machine or to realize that the machine is now gone (the ID can
59
+ # become `nil`). No parameters are given, since the underlying machine
60
+ # is simply the machine instance given to this object. And no
61
+ # return value is necessary.
62
+ def machine_id_changed
63
+ nil
64
+ end
65
+
66
+ def state
67
+ state_id = nil
68
+ state_id = :not_created unless @machine.id
69
+ state_id = driver.state(@machine) if @machine.id && !state_id
70
+ # This is a special pseudo-state so that we don't set the
71
+ # NOT_CREATED_ID while we're setting up the machine. This avoids
72
+ # clearing the data dir.
73
+ state_id = :preparing if @machine.id == 'preparing'
74
+ # Get the short and long description
75
+ short = state_id.to_s.tr('_', ' ')
76
+ # If we're not created, then specify the special ID flag
77
+ state_id = Vagrant::MachineState::NOT_CREATED_ID if state_id == :not_created
78
+ # Return the MachineState object
79
+ Vagrant::MachineState.new(state_id, short, short)
80
+ end
81
+ end
82
+ end
83
+ end
@@ -0,0 +1,31 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'open3'
4
+ require 'log4r'
5
+ module VagrantPlugins
6
+ module ProviderZone
7
+ module Util
8
+ # This shiny device polishes bared foos
9
+ class Subprocess
10
+ def initialize(cmd, &_block)
11
+ Open3.popen3(cmd) do |_stdin, stdout, stderr, thread|
12
+ # read each stream from a new thread
13
+ { :out => stdout, :err => stderr }.each do |key, stream|
14
+ Thread.new do
15
+ until (line = stream.gets).nil?
16
+ # yield the block depending on the stream
17
+ if key == :out
18
+ yield line, nil, thread if block_given?
19
+ elsif block_given?
20
+ yield nil, line, thread
21
+ end
22
+ end
23
+ end
24
+ end
25
+ thread.join # don't exit until the external process is done
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ module VagrantPlugins
4
+ module ProviderZone
5
+ module Util
6
+ # This is a utlity to time commands and scripts
7
+ class Timer
8
+ # A basic utility method that times the execution of the given
9
+ # block and returns it.
10
+ def self.time
11
+ start_time = Time.now.to_f
12
+ yield
13
+ end_time = Time.now.to_f
14
+ end_time - start_time
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ module VagrantPlugins
4
+ module ProviderZone
5
+ VERSION = '0.0.1'
6
+ end
7
+ end
@@ -0,0 +1,29 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'pathname'
4
+
5
+ module VagrantPlugins
6
+ # This is used to configure, manage, create and destroy zones where vagrant by itself cannot
7
+ module ProviderZone
8
+ lib_path = Pathname.new(File.expand_path('vagrant-zones', __dir__))
9
+ autoload :Action, lib_path.join('action')
10
+ autoload :Executor, lib_path.join('executor')
11
+ autoload :Driver, lib_path.join('driver')
12
+ autoload :Errors, lib_path.join('errors')
13
+ # This function returns the path to the source of this plugin
14
+ # @return [Pathname]
15
+ def self.source_root
16
+ @source_root ||= Pathname.new(File.expand_path('..', __dir__))
17
+ end
18
+ end
19
+ end
20
+
21
+ begin
22
+ require 'vagrant'
23
+ rescue LoadError
24
+ raise 'The Vagrant vagrant-zones plugin must be run within Vagrant.'
25
+ end
26
+
27
+ raise 'The Vagrant vagrant-zones plugin is only compatible with Vagrant 2+.' if Vagrant::VERSION < '2'
28
+
29
+ require 'vagrant-zones/plugin'
data/locales/en.yml ADDED
@@ -0,0 +1,326 @@
1
+ en:
2
+ vagrant_zones:
3
+ states:
4
+ not_created: |-
5
+ Your instance of this box haven't been created
6
+ is_running: |-
7
+ Your instance has already be booted
8
+ errors:
9
+ not_yet_implemented: |-
10
+ Your configuration is not yet implemented
11
+ halt_timeout: |-
12
+ Zone failed to halt in alloted time after waiting for
13
+ invalidLX_brand: |-
14
+ Invalid LX brand configuration detected
15
+ invalidbhyve_brand: |-
16
+ Invalid bhyve configuration detected
17
+ console_failed: |-
18
+ Failed to access console
19
+ console_failed_exit: |-
20
+ Exiting
21
+ execute_error: |-
22
+ Failed when execute commands
23
+ timeout_error: |-
24
+ Timeout exceeded
25
+ system_version_too_low: |-
26
+ Please update to OmniOS r38 or higher
27
+ missing_compatability_check_tool: |-
28
+ Please install the Bhyve compatability tool from: https://omnios.org/info/bhyve
29
+ missing_bhyve: |-
30
+ Your system appears to be missing bhyve
31
+ virtual_box_running_conflict_detected: |-
32
+ Virtualbox Box appears to be running virtual machines, to continue, please shut these down!
33
+ meeting: |-
34
+ Beggining the zone creation sequence
35
+ leaving: |-
36
+ Beggining the zone destruction sequence
37
+ halting_zone: |-
38
+ Halting the zone
39
+ destroy_zone: |-
40
+ Starting zone destruction
41
+ graceful_shutdown_failed: |-
42
+ Zone failed to shutdown in alloted time ==>
43
+ graceful_shutdown: |-
44
+ Asking hypervisor to gracefully stop the zone
45
+ creating_vnic: |-
46
+ - Creating VNIC:
47
+ configure_interface_using_vnic: |-
48
+ - Configuring the interface in the zone for VNIC using netplan:
49
+ configure_win_interface_using_vnic: |-
50
+ - Waiting 60 seconds then configuring the Windows network interface in the zone:
51
+ configure_interface_using_vnic_dladm: |-
52
+ - Configuring the interface in the zone for VNIC using dladm:
53
+ os_detect: |-
54
+ - Detecting Operating System to configure networking:
55
+ ansible_detect: |-
56
+ - Detecting if Ansible is installed:
57
+ vnic_setup: |-
58
+ - Setting up VNIC:
59
+ networking_int_remove: |-
60
+ Removing network devices:
61
+ networking_int_add: |-
62
+ - Adding network devices:
63
+ removing_vnic: |-
64
+ - Deleting zone VNIC:
65
+ no_removing_vnic: |-
66
+ - No zone VNIC to remove
67
+ removing_host_vnic: |-
68
+ - Deleting host VNIC:
69
+ no_removing_host_vnic: |-
70
+ - No host VNIC to remove
71
+ network_setup: |-
72
+ Preparing zone OS networking interfaces:
73
+ delete_disks: |-
74
+ Removing associated disks:
75
+ zonelogincmd: |-
76
+ Running command with zLogin
77
+ user: |-
78
+ Filtering the user Vagrant will use
79
+ installing_zone: |-
80
+ Installing zone as brand:
81
+ netplan_remove: |-
82
+ - Removing stale netplan configurations
83
+ netplan_set: |-
84
+ - Generate fresh netplan configurations
85
+ dladm_applied: |-
86
+ - dladm and ipadm configurations Applied
87
+ dladm_route_applied: |-
88
+ - Route has been applied
89
+ dladm_dns_applied: |-
90
+ - DNS has been applied
91
+ netplan_applied: |-
92
+ - New Netplan configurations Applied
93
+ netplan_applied_dhcp: |-
94
+ - Set DHCP Netplan configurations
95
+ stale_netplan_removed: |-
96
+ - Stale Netplan configurations removed
97
+ netplan_applied_static: |-
98
+ - Set static Netplan configurations:
99
+
100
+ console_failednetplan: |-
101
+ Netplan configurations failed
102
+ lx_zone_dataset: |-
103
+ - Creating zoned ZFS dataset for LX zone:
104
+ bhyve_zone_dataset_root: |-
105
+ - ZFS root dataset:
106
+ begin_create_datasets: |-
107
+ Creating ZFS datasets and volumes:
108
+ bhyve_zone_dataset_boot: |-
109
+ - ZFS boot volume:
110
+ setting_cd_rom_configurations: |-
111
+ - Setting CDROM Configurations:
112
+ setting_additional_disks_configurations: |-
113
+ - Setting additional disk Configurations:
114
+ bhyve_zone_dataset_additional_volume: |-
115
+ - Additional ZFS volume:
116
+ bhyve_zone_dataset_additional_volume_destroy: |-
117
+ - Additional ZFS volume:
118
+ addtl_volume_destroy_root: |-
119
+ - ZFS root dataset for additional ZFS volume:
120
+ bhyve_zone_dataset_additional_volume_root: |-
121
+ - ZFS root dataset for additional ZFS volume:
122
+ destroy_root_dataset: |-
123
+ - ZFS root dataset:
124
+ destroy_dataset: |-
125
+ - ZFS Boot volume dataset:
126
+ lx_zone_config_gen: |-
127
+ Generating configuration for LX zone
128
+ bhyve_zone_config_gen: |-
129
+ Generating zone configuration:
130
+ bhyve_zone_config_remove: |-
131
+ Removing zonecfg configuration
132
+ bhyve_zone_config_uninstall: |-
133
+ Uninstalling the zone
134
+ preflight_checks: |-
135
+ Running Preflight checks:
136
+ vbox_run_check: |-
137
+ - Checking if VirtualBox is loaded as it may conflict with bhyve
138
+ lx_check: |-
139
+ Minimal checks performed for LX Branded zones on the host OS, please use with caution!
140
+ bhyve_check: |-
141
+ - Checking OmniOS release against version:
142
+ bhyve_compat_check: |-
143
+ - Checking bhyve installation environment
144
+ wait_for_boot: |-
145
+ Waiting for the zone to boot
146
+ sshport: |-
147
+ Filtering the SSH port that Vagrant will use
148
+ vagrantuserpass: |-
149
+ Filtering the Vagrant user Password
150
+ firmware: |-
151
+ Filtering the firmware that bhyve will use
152
+ inserting_ssh_key: |-
153
+ Inserting SSH key
154
+ booted_check_terminal_access: |-
155
+ Zone booted, checking for login access/prompt over Serial:
156
+ terminal_access_auto_login: |-
157
+ Could not login as root, will attempt to auto-login with supplied credentials:
158
+ detecting_box: |-
159
+ Detecting image
160
+ importing_vagrant_key: |-
161
+ Importing Vagrant key from Cloud:
162
+ datadir: |-
163
+ Vagrant datadir:
164
+ zfs_snapshot_stream_detected: |-
165
+ ZFS Snapshot Stream detected ==>
166
+ joyent_image_uuid_detected: |-
167
+ Joyent UUID detected ==>
168
+ vagrant_cloud_box_detected: |-
169
+ - Vagrant Cloud Box detected:
170
+ ssh_ready: |-
171
+ SSH appears to be ready
172
+ boot_ready: |-
173
+ The zone has booted
174
+ dhcp_boot_ready: |-
175
+ The zone is configured with NAT and booted
176
+ root_dataset_nil: |-
177
+ - No root dataset to remove
178
+ boot_dataset_nil: |-
179
+ - No boot volumes to remove
180
+ additional_dataset_nil: |-
181
+ - No additional volumes to remove
182
+ starting_zone: |-
183
+ Starting the zone
184
+ joyent_image_uuid_verified: |-
185
+ Joyent image UUID has been verified ==>
186
+ lx_zone_dataset: |-
187
+ LX zone dataset ==>
188
+ setting_dns_server: |-
189
+ Setting nameserver ==>
190
+ detected_ovf_format: |-
191
+ Detected OVF
192
+ importing_box_image: |-
193
+ - Importing Box image ==>
194
+ importing_box_image_to_disk: |-
195
+ - Importing Box template to disk ==>
196
+ template_import_path: |-
197
+ - Template path:
198
+ importing_joyent_image: |-
199
+ - Importing Joyent image ==>
200
+ graceful_restart: |-
201
+ Zone gracefully restarting
202
+ graceful_shutdown_started: |-
203
+ Zone gracefully shutting down
204
+ graceful_shutdown_complete: |-
205
+ Graceful shutdown complete
206
+ zone_gracefully_restarted: |-
207
+ Graceful restart complete
208
+ zone_gracefully_stopped_waiting_for_boot: |-
209
+ Zone gracefully shutdown, now waiting for boot
210
+ console: |-
211
+ Starting console:
212
+ setting_console_access: |-
213
+ - Setting console access port:
214
+ zfs_snapshot_cron: |-
215
+ Listing configured cron jobs
216
+ zfs_snapshot_create: |-
217
+ Creating ZFS snapshot(s):
218
+ setting_cloud_dnsdomain: |-
219
+ - Setting cloud-init DNS domain:
220
+ setting_cloud_password: |-
221
+ - Setting cloud-init password:
222
+ setting_cloud_resolvers: |-
223
+ - Setting cloud-init Resolvers:
224
+ setting_cloud_ssh_key: |-
225
+ - Setting cloud-init SSH key:
226
+ setting_cloud_init_access: |-
227
+ - Enabling cloud-init:
228
+ control_no_cmd: |-
229
+ No control command specified
230
+ ssh_run_command: |-
231
+ Running Command over SSH:
232
+ vtype: |-
233
+ Filtering zone type
234
+ nsservers: |-
235
+ Sanitizing Name Servers:
236
+ mac: |-
237
+ Sanitizing MAC address:
238
+ ipaddress: |-
239
+ Sanitizing IP address:
240
+ allowedaddress: |-
241
+ Sanitizing Allowed IP address:
242
+ vnic_name: |-
243
+ Sanitizing the VNIC name:
244
+ get_ip_address: |-
245
+ Gathering IP address
246
+ creating_etherstub: |-
247
+ - Creating etherstub for private network:
248
+ creating_etherhostvnic: |-
249
+ - Creating NAT VNIC for zone over etherstub:
250
+ creating_ethervnic: |-
251
+ - Creating VNIC for host over etherstub:
252
+ creating_networking_interfaces: |-
253
+ Creating networking interfaces for zone:
254
+ nat_vnic_setup: |-
255
+ - Setting up NAT VNIC:
256
+ forwarding_nat: |-
257
+ - Enabling NAT forwarding:
258
+ configuring_nat: |-
259
+ - Creating NAT entries:
260
+ deconfiguring_nat: |-
261
+ - Removing NAT configurations:
262
+ configuring_dhcp: |-
263
+ - Configuring DHCP
264
+ deconfiguring_dhcp: |-
265
+ - Removing DHCP configurations:
266
+ chk_dhcp_addr: |-
267
+ - Checking if zone has leased the address:
268
+ setting_alt_shared_disk_configurations: |-
269
+ Setting shared disk configurations
270
+ zonecfgcpu: |-
271
+ Setting the CPU for zone
272
+ pci: |-
273
+ Setting the PCI devices for zone
274
+ zfs_snapshot_list: |-
275
+ ZFS snapshots detected:
276
+ zfs_snapshot_destroy: |-
277
+ Destroying ZFS snapshots for zone:
278
+ cron_entries: |-
279
+ Listing cron entries for zone
280
+ cron_set: |-
281
+ Setting cron entries for zone
282
+ cron_delete: |-
283
+ Deleting cron entries for zone
284
+ control: |-
285
+ Running control command on zone:
286
+ delete_ethervnic: |-
287
+ - Deleting the etherstub:
288
+ no_delete_ethervnic: |-
289
+ - No etherstub to remove
290
+ automated-zlogin: |-
291
+ Automatic Login
292
+ automated-windows-zlogin: |-
293
+ Windows SAC Autologin
294
+ automated-zlogin-user: |-
295
+ - Entering username, Waiting a few seconds
296
+ automated-zlogin-pass: |-
297
+ - Entering password, Waiting a few seconds
298
+ automated-zbootunlock: |-
299
+ - Unlocking LUKS Keystore for the boot disk
300
+ automated-zlogin-root: |-
301
+ - Impersonatig root, Waiting a few seconds
302
+ windows_skip_first_boot: |-
303
+ - Skipping First EVENT for CMD due to Sysprep Reboot
304
+ windows_start_cmd: |-
305
+ - Starting CMD session
306
+ windows_access_session: |-
307
+ - Accessing Command Session
308
+ windows_access_session_presskey: |-
309
+ - Pressing Any Key enter Command Session
310
+ windows_enter_username: |-
311
+ - Entering Username
312
+ windows_enter_domain: |-
313
+ - Entering/Skipping Domain
314
+ windows_enter_password: |-
315
+ - Entering password
316
+ windows_cmd_accessible: |-
317
+ - CMD Accessible
318
+ win_applied_rename_adapter: |-
319
+ - Renamed Default Adapter
320
+ win_applied_static: |-
321
+ - Set Static Address
322
+ win_applied_dns1: |-
323
+ - Set Primary DNS
324
+ win_applied_dns2: |-
325
+ - Set Secondary DNS
326
+