foreman_azure_rm 2.1.1 → 2.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +5 -5
- data/README.md +1 -1
- data/app/controllers/foreman_azure_rm/concerns/compute_resources_controller_extensions.rb +1 -0
- data/app/helpers/azure_compute_resource_helper.rb +3 -0
- data/app/models/concerns/foreman_azure_rm/vm_extensions/managed_vm.rb +32 -17
- data/app/models/foreman_azure_rm/azure_rm.rb +32 -18
- data/app/models/foreman_azure_rm/azure_rm_compute.rb +5 -1
- data/app/views/api/v2/compute_resources/azurerm.json.rabl +1 -1
- data/app/views/compute_resources/form/_azurerm.html.erb +8 -2
- data/app/views/compute_resources_vms/form/azurerm/_base.html.erb +10 -0
- data/lib/foreman_azure_rm/azure_sdk_adapter.rb +54 -13
- data/lib/foreman_azure_rm/engine.rb +1 -1
- data/lib/foreman_azure_rm/version.rb +1 -1
- data/locale/ko/LC_MESSAGES/foreman_azure_rm.mo +0 -0
- data/locale/ko/foreman_azure_rm.po +7 -6
- data/locale/nl_NL/LC_MESSAGES/foreman_azure_rm.mo +0 -0
- data/locale/nl_NL/foreman_azure_rm.po +2 -1
- data/locale/pl/LC_MESSAGES/foreman_azure_rm.mo +0 -0
- data/locale/pl/foreman_azure_rm.po +3 -2
- data/locale/pt_BR/LC_MESSAGES/foreman_azure_rm.mo +0 -0
- data/locale/pt_BR/foreman_azure_rm.po +11 -9
- data/locale/ru/LC_MESSAGES/foreman_azure_rm.mo +0 -0
- data/locale/ru/foreman_azure_rm.po +11 -9
- metadata +34 -48
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
|
-
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
2
|
+
SHA1:
|
|
3
|
+
metadata.gz: d9bd1762fee080c446b9a5b9f8563cc4c8c8ac02
|
|
4
|
+
data.tar.gz: 1ae71a51e1f0515020aaa08d58e66e39ea4bfac3
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 79d07e33953a24f2e865885302f66631d98fea51e7feb2579d663ed26427e3056030c02ef7fcdd247af868f40f152b8c473649f3e6b44eb0ef5f34cacdf38174
|
|
7
|
+
data.tar.gz: 515fca26a081c6f2706962f3e80d1390ae97ce8e8733fb79934716e2922bd4e38022e11ce973d8d5f0b081f1a66970b46ae0306faf6de090aad367f1312f4e57
|
data/README.md
CHANGED
|
@@ -67,6 +67,7 @@ Then run `bundle install` from the same directory
|
|
|
67
67
|
* Limited extension support
|
|
68
68
|
* Microsoft's custom script extension
|
|
69
69
|
* Puppet Lab's Puppet agent extension for Windows
|
|
70
|
+
* Azure Gov Cloud Support
|
|
70
71
|
|
|
71
72
|
## Configuration
|
|
72
73
|
Go to **Infrastructure > Compute Resources** and click on "New Compute Resource".
|
|
@@ -86,7 +87,6 @@ That's it. You're now ready to create and manage Azure resources in your new Azu
|
|
|
86
87
|
|
|
87
88
|
|
|
88
89
|
## Planned Features
|
|
89
|
-
* Azure Gov Cloud Support
|
|
90
90
|
* Support for http_proxy
|
|
91
91
|
|
|
92
92
|
## Known Limitations
|
|
@@ -10,6 +10,7 @@ module ForemanAzureRm
|
|
|
10
10
|
param :app_ident, String, :desc => N_("Client ID for AzureRm")
|
|
11
11
|
param :secret_key, String, :desc => N_("Client Secret for AzureRm")
|
|
12
12
|
param :sub_id, String, :desc => N_("Subscription ID for AzureRm")
|
|
13
|
+
param :cloud, String, :desc => N_("Cloud")
|
|
13
14
|
end
|
|
14
15
|
end
|
|
15
16
|
|
|
@@ -10,4 +10,7 @@ module AzureComputeResourceHelper
|
|
|
10
10
|
end
|
|
11
11
|
selectable_f(f, :url, regions, {}, {:label => _('Azure Region'), :disabled => regions.empty?, :required => true, :help_inline_permanent => load_button_f(f, regions.present?, _("Load Regions")) })
|
|
12
12
|
end
|
|
13
|
+
def azure_doc_version
|
|
14
|
+
doc_version = Foreman::Plugin.find(:foreman_azure_rm).version.scan(/\d+\.\d+/).first + '.x'
|
|
15
|
+
end
|
|
13
16
|
end
|
|
@@ -4,7 +4,7 @@ module ForemanAzureRm
|
|
|
4
4
|
module ManagedVM
|
|
5
5
|
extend ActiveSupport::Concern
|
|
6
6
|
|
|
7
|
-
def define_managed_storage_profile(vm_name, os_disk_caching, platform, premium_os_disk)
|
|
7
|
+
def define_managed_storage_profile(vm_name, os_disk_caching, platform, premium_os_disk, os_disk_size_gb)
|
|
8
8
|
storage_profile = ComputeModels::StorageProfile.new
|
|
9
9
|
os_disk = ComputeModels::OSDisk.new
|
|
10
10
|
managed_disk_params = ComputeModels::ManagedDiskParameters.new
|
|
@@ -12,6 +12,7 @@ module ForemanAzureRm
|
|
|
12
12
|
# Create OS disk
|
|
13
13
|
os_disk.name = "#{vm_name}-osdisk"
|
|
14
14
|
os_disk.os_type = platform
|
|
15
|
+
os_disk.disk_size_gb = os_disk_size_gb
|
|
15
16
|
os_disk.create_option = ComputeModels::DiskCreateOptionTypes::FromImage
|
|
16
17
|
os_disk.caching = disk_caching(os_disk_caching)
|
|
17
18
|
managed_disk_params.storage_account_type = if premium_os_disk == 'true'
|
|
@@ -187,21 +188,23 @@ module ForemanAzureRm
|
|
|
187
188
|
os_profile.admin_password = vm_hash[:password]
|
|
188
189
|
|
|
189
190
|
# Adding the ssh-key support for authentication
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
191
|
+
if vm_hash[:platform] == 'Linux'
|
|
192
|
+
os_profile.linux_configuration = ComputeModels::LinuxConfiguration.new.tap do |linux|
|
|
193
|
+
linux.disable_password_authentication = vm_hash[:disable_password_authentication]
|
|
194
|
+
linux.ssh = ComputeModels::SshConfiguration.new.tap do |ssh_config|
|
|
195
|
+
ssh_config.public_keys = [
|
|
196
|
+
ComputeModels::SshPublicKey.new.tap do |foreman_key|
|
|
197
|
+
foreman_key.key_data = key_pair.public
|
|
198
|
+
foreman_key.path = "/home/#{vm_hash[:username]}/.ssh/authorized_keys"
|
|
199
|
+
end
|
|
200
|
+
]
|
|
201
|
+
if vm_hash[:ssh_key_data].present?
|
|
202
|
+
key_data = vm_hash[:ssh_key_data]
|
|
203
|
+
pub_key = ComputeModels::SshPublicKey.new
|
|
204
|
+
pub_key.key_data = key_data
|
|
205
|
+
pub_key.path = "/home/#{vm_hash[:username]}/.ssh/authorized_keys"
|
|
206
|
+
ssh_config.public_keys << pub_key
|
|
197
207
|
end
|
|
198
|
-
]
|
|
199
|
-
if vm_hash[:ssh_key_data].present?
|
|
200
|
-
key_data = vm_hash[:ssh_key_data]
|
|
201
|
-
pub_key = ComputeModels::SshPublicKey.new
|
|
202
|
-
pub_key.key_data = key_data
|
|
203
|
-
pub_key.path = "/home/#{vm_hash[:username]}/.ssh/authorized_keys"
|
|
204
|
-
ssh_config.public_keys << pub_key
|
|
205
208
|
end
|
|
206
209
|
end
|
|
207
210
|
end
|
|
@@ -212,7 +215,8 @@ module ForemanAzureRm
|
|
|
212
215
|
vm_hash[:name],
|
|
213
216
|
vm_hash[:os_disk_caching],
|
|
214
217
|
vm_hash[:platform],
|
|
215
|
-
vm_hash[:premium_os_disk]
|
|
218
|
+
vm_hash[:premium_os_disk],
|
|
219
|
+
vm_hash[:os_disk_size_gb]
|
|
216
220
|
)
|
|
217
221
|
vm.hardware_profile = ComputeModels::HardwareProfile.new.tap do |hw_profile|
|
|
218
222
|
hw_profile.vm_size = vm_hash[:vm_size]
|
|
@@ -235,11 +239,22 @@ module ForemanAzureRm
|
|
|
235
239
|
if args[:script_command].present? || args[:script_uris].present?
|
|
236
240
|
args[:script_uris] ||= args[:script_uris].to_s
|
|
237
241
|
extension = ComputeModels::VirtualMachineExtension.new
|
|
238
|
-
|
|
242
|
+
|
|
243
|
+
case args[:platform]
|
|
244
|
+
# https://docs.microsoft.com/en-us/azure/virtual-machines/extensions/custom-script-linux
|
|
245
|
+
when 'Linux'
|
|
239
246
|
extension.publisher = 'Microsoft.Azure.Extensions'
|
|
240
247
|
extension.virtual_machine_extension_type = 'CustomScript'
|
|
241
248
|
extension.type_handler_version = '2.0'
|
|
249
|
+
# https://docs.microsoft.com/en-us/azure/virtual-machines/extensions/custom-script-windows
|
|
250
|
+
when 'Windows'
|
|
251
|
+
extension.publisher = 'Microsoft.Compute'
|
|
252
|
+
extension.virtual_machine_extension_type = 'CustomScriptExtension'
|
|
253
|
+
extension.type_handler_version = '1.10'
|
|
254
|
+
else
|
|
255
|
+
raise RuntimeError, "Unsupported platform #{args[:platform]}"
|
|
242
256
|
end
|
|
257
|
+
|
|
243
258
|
extension.auto_upgrade_minor_version = true
|
|
244
259
|
extension.location = region
|
|
245
260
|
extension.settings = {
|
|
@@ -11,6 +11,7 @@ module ForemanAzureRm
|
|
|
11
11
|
alias_attribute :secret_key, :password
|
|
12
12
|
alias_attribute :region, :url
|
|
13
13
|
alias_attribute :tenant, :uuid
|
|
14
|
+
alias_attribute :azure_environment, :cloud
|
|
14
15
|
|
|
15
16
|
validates :user, :password, :uuid, :app_ident, :presence => true
|
|
16
17
|
|
|
@@ -41,8 +42,16 @@ module ForemanAzureRm
|
|
|
41
42
|
attrs[:app_ident] = name
|
|
42
43
|
end
|
|
43
44
|
|
|
45
|
+
def cloud
|
|
46
|
+
attrs[:cloud]
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
def cloud=(name)
|
|
50
|
+
attrs[:cloud] = name
|
|
51
|
+
end
|
|
52
|
+
|
|
44
53
|
def sdk
|
|
45
|
-
@sdk ||= ForemanAzureRm::AzureSdkAdapter.new(tenant, app_ident, secret_key, sub_id)
|
|
54
|
+
@sdk ||= ForemanAzureRm::AzureSdkAdapter.new(tenant, app_ident, secret_key, sub_id, azure_environment)
|
|
46
55
|
end
|
|
47
56
|
|
|
48
57
|
def to_label
|
|
@@ -81,7 +90,7 @@ module ForemanAzureRm
|
|
|
81
90
|
|
|
82
91
|
def test_connection(options = {})
|
|
83
92
|
super
|
|
84
|
-
errors[:user].empty? && errors[:password].empty? && errors[:uuid].empty? && errors[:app_ident].empty? && regions
|
|
93
|
+
errors[:user].empty? && errors[:password].empty? && errors[:uuid].empty? && errors[:app_ident].empty? && errors[:cloud].empty? && regions
|
|
85
94
|
rescue StandardError => e
|
|
86
95
|
errors[:base] << e.message
|
|
87
96
|
rescue Excon::Error::Socket => e
|
|
@@ -106,7 +115,8 @@ module ForemanAzureRm
|
|
|
106
115
|
platform: opts[:platform],
|
|
107
116
|
ssh_key_data: opts[:ssh_key_data],
|
|
108
117
|
os_disk_caching: opts[:os_disk_caching],
|
|
109
|
-
premium_os_disk: opts[:premium_os_disk]
|
|
118
|
+
premium_os_disk: opts[:premium_os_disk],
|
|
119
|
+
os_disk_size_gb: opts[:os_disk_size_gb]
|
|
110
120
|
)
|
|
111
121
|
if opts[:interfaces].present?
|
|
112
122
|
ifaces = []
|
|
@@ -259,23 +269,26 @@ module ForemanAzureRm
|
|
|
259
269
|
args = args.to_h.deep_symbolize_keys
|
|
260
270
|
args[:vm_name] = args[:name].split('.')[0]
|
|
261
271
|
nics = create_nics(region, args)
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
#
|
|
269
|
-
|
|
270
|
-
|
|
272
|
+
|
|
273
|
+
if args[:platform] == 'Linux'
|
|
274
|
+
if args[:password].present? && !args[:ssh_key_data].present?
|
|
275
|
+
# Any change to sudoers_cmd and formation of new
|
|
276
|
+
# args[:script_command] must be accordingly changed
|
|
277
|
+
# in script_command method in AzureRmCompute class
|
|
278
|
+
sudoers_cmd = "$echo #{args[:password]} | sudo -S echo '\"#{args[:username]}\" ALL=(ALL) NOPASSWD: ALL' > /etc/sudoers.d/waagent"
|
|
279
|
+
if args[:script_command].present?
|
|
280
|
+
# to run the script_cmd given through form as username
|
|
281
|
+
user_command = args[:script_command]
|
|
282
|
+
args[:script_command] = sudoers_cmd + " ; su - \"#{args[:username]}\" -c \"#{user_command}\""
|
|
283
|
+
else
|
|
284
|
+
args[:script_command] = sudoers_cmd
|
|
285
|
+
end
|
|
286
|
+
disable_password_auth = false
|
|
287
|
+
elsif args[:ssh_key_data].present? && !args[:password].present?
|
|
288
|
+
disable_password_auth = true
|
|
271
289
|
else
|
|
272
|
-
|
|
290
|
+
disable_password_auth = false
|
|
273
291
|
end
|
|
274
|
-
disable_password_auth = false
|
|
275
|
-
elsif args[:ssh_key_data].present? && !args[:password].present?
|
|
276
|
-
disable_password_auth = true
|
|
277
|
-
else
|
|
278
|
-
disable_password_auth = false
|
|
279
292
|
end
|
|
280
293
|
|
|
281
294
|
vm = create_managed_virtual_machine(
|
|
@@ -292,6 +305,7 @@ module ForemanAzureRm
|
|
|
292
305
|
image_id: args[:image_id],
|
|
293
306
|
os_disk_caching: args[:os_disk_caching],
|
|
294
307
|
premium_os_disk: args[:premium_os_disk],
|
|
308
|
+
os_disk_size_gb: args[:os_disk_size_gb],
|
|
295
309
|
data_disks: args[:volumes_attributes],
|
|
296
310
|
custom_data: args[:user_data],
|
|
297
311
|
script_command: args[:script_command],
|
|
@@ -10,7 +10,7 @@ module ForemanAzureRm
|
|
|
10
10
|
delegate :name, to: :azure_vm, allow_nil: true
|
|
11
11
|
|
|
12
12
|
def initialize(azure_vm: ComputeModels::VirtualMachine.new,
|
|
13
|
-
sdk:
|
|
13
|
+
sdk: nil,
|
|
14
14
|
resource_group: azure_vm.resource_group,
|
|
15
15
|
nics: [],
|
|
16
16
|
volumes: [],
|
|
@@ -179,6 +179,10 @@ module ForemanAzureRm
|
|
|
179
179
|
@azure_vm.storage_profile.os_disk.managed_disk.storage_account_type
|
|
180
180
|
end
|
|
181
181
|
|
|
182
|
+
def os_disk_size_gb
|
|
183
|
+
@azure_vm.storage_profile.os_disk.disk_size_gb
|
|
184
|
+
end
|
|
185
|
+
|
|
182
186
|
def os_disk_caching
|
|
183
187
|
@azure_vm.storage_profile.os_disk.caching
|
|
184
188
|
end
|
|
@@ -1 +1 @@
|
|
|
1
|
-
attributes :tenant, :app_ident, :sub_id, :
|
|
1
|
+
attributes :azure_environment, :tenant, :app_ident, :sub_id, :region
|
|
@@ -1,6 +1,12 @@
|
|
|
1
|
-
<%=
|
|
1
|
+
<%= selectable_f f, :cloud, [
|
|
2
|
+
['Public / Standard', 'azure'],
|
|
3
|
+
['US Government', 'azureusgovernment'],
|
|
4
|
+
['China', 'azurechina'],
|
|
5
|
+
['Germany', 'azuregermancloud'],
|
|
6
|
+
], {}, { :label => _('Cloud'), :required => true } %>
|
|
7
|
+
<%= text_f f, :app_ident, :label => _('Client ID'), :required => true, :help_inline => link_to('Documentation', external_link_path(type: 'plugin_manual', name: 'foreman_azure', version: azure_doc_version), :kind => 'pficon', :rel => 'external', :class => 'btn btn-default btn-docs', :target => '_blank') %>
|
|
2
8
|
<%= password_f f, :password, :label => _('Client Secret'), :keep_value => true, :required => true %>
|
|
3
9
|
<%= text_f f, :user, :label => _('Subscription ID'), :required => true %>
|
|
4
10
|
<%= text_f f, :uuid, :label => _('Tenant ID'), :required => true %>
|
|
5
11
|
|
|
6
|
-
<%= regions_list(@compute_resource, f) %>
|
|
12
|
+
<%= regions_list(@compute_resource, f) %>
|
|
@@ -154,6 +154,16 @@
|
|
|
154
154
|
'false'
|
|
155
155
|
%>
|
|
156
156
|
|
|
157
|
+
<%= number_f f, :os_disk_size_gb,
|
|
158
|
+
{
|
|
159
|
+
:label => _('Override OS Disk Size (GB)'),
|
|
160
|
+
:label_help => _("Leave empty to use default image size"),
|
|
161
|
+
:required => false,
|
|
162
|
+
:min => 1,
|
|
163
|
+
:class => "col-md-2",
|
|
164
|
+
}
|
|
165
|
+
%>
|
|
166
|
+
|
|
157
167
|
<%= selectable_f f, :os_disk_caching, %w(None ReadOnly ReadWrite),
|
|
158
168
|
{ :include_blank => _("Azure's Default") },
|
|
159
169
|
{
|
|
@@ -1,46 +1,87 @@
|
|
|
1
1
|
module ForemanAzureRm
|
|
2
2
|
class AzureSdkAdapter
|
|
3
|
-
def initialize(tenant, app_ident, secret_key, sub_id)
|
|
4
|
-
@tenant
|
|
5
|
-
@app_ident
|
|
6
|
-
@secret_key
|
|
7
|
-
@sub_id
|
|
3
|
+
def initialize(tenant, app_ident, secret_key, sub_id, azure_environment)
|
|
4
|
+
@tenant = tenant
|
|
5
|
+
@app_ident = app_ident
|
|
6
|
+
@secret_key = secret_key
|
|
7
|
+
@sub_id = sub_id
|
|
8
|
+
@azure_environment = azure_environment
|
|
9
|
+
@ad_settings = ad_environment_settings(azure_environment)
|
|
10
|
+
@environment_settings = environment_settings(azure_environment)
|
|
8
11
|
end
|
|
9
12
|
|
|
10
13
|
def resource_client
|
|
11
|
-
|
|
14
|
+
#resource_manager_endpoint_url
|
|
15
|
+
@resource_client ||= Resources::Client.new(azure_credentials(@environment_settings.resource_manager_endpoint_url))
|
|
12
16
|
end
|
|
13
17
|
|
|
14
18
|
def compute_client
|
|
15
|
-
@compute_client ||= Compute::Client.new(azure_credentials)
|
|
19
|
+
@compute_client ||= Compute::Client.new(azure_credentials(@environment_settings.resource_manager_endpoint_url))
|
|
16
20
|
end
|
|
17
21
|
|
|
18
22
|
def network_client
|
|
19
|
-
@network_client ||= Network::Client.new(azure_credentials)
|
|
23
|
+
@network_client ||= Network::Client.new(azure_credentials(@environment_settings.resource_manager_endpoint_url))
|
|
20
24
|
end
|
|
21
25
|
|
|
22
26
|
def storage_client
|
|
23
|
-
@storage_client ||= Storage::Client.new(azure_credentials)
|
|
27
|
+
@storage_client ||= Storage::Client.new(azure_credentials(@environment_settings.resource_manager_endpoint_url))
|
|
24
28
|
end
|
|
25
29
|
|
|
26
30
|
def subscription_client
|
|
27
|
-
@subscription_client ||= Subscriptions::Client.new(azure_credentials)
|
|
31
|
+
@subscription_client ||= Subscriptions::Client.new(azure_credentials(@environment_settings.resource_manager_endpoint_url))
|
|
28
32
|
end
|
|
29
33
|
|
|
30
|
-
def azure_credentials
|
|
34
|
+
def azure_credentials(base_url)
|
|
31
35
|
provider = MsRestAzure::ApplicationTokenProvider.new(
|
|
32
36
|
@tenant,
|
|
33
37
|
@app_ident,
|
|
34
|
-
@secret_key
|
|
38
|
+
@secret_key,
|
|
39
|
+
@ad_settings)
|
|
35
40
|
|
|
36
41
|
credentials = MsRest::TokenCredentials.new(provider)
|
|
37
42
|
|
|
38
43
|
{
|
|
39
44
|
credentials: credentials,
|
|
40
|
-
|
|
45
|
+
tenant_id: @tenant,
|
|
46
|
+
client_id: @app_ident,
|
|
47
|
+
client_secret: @secret_key,
|
|
48
|
+
subscription_id: @sub_id,
|
|
49
|
+
base_url: base_url
|
|
41
50
|
}
|
|
42
51
|
end
|
|
43
52
|
|
|
53
|
+
# https://github.com/Azure/azure-sdk-for-ruby/issues/850
|
|
54
|
+
# Retrieves a [MsRestAzure::ActiveDirectoryServiceSettings] object representing the settings for the given cloud.
|
|
55
|
+
# @param azure_environment [String] The Azure environment to retrieve settings for.
|
|
56
|
+
#
|
|
57
|
+
# @return [MsRestAzure::ActiveDirectoryServiceSettings] Settings to be used for subsequent requests
|
|
58
|
+
#
|
|
59
|
+
def ad_environment_settings(azure_environment)
|
|
60
|
+
case azure_environment.downcase
|
|
61
|
+
when 'azureusgovernment'
|
|
62
|
+
MsRestAzure::ActiveDirectoryServiceSettings.get_azure_us_government_settings
|
|
63
|
+
when 'azurechina'
|
|
64
|
+
MsRestAzure::ActiveDirectoryServiceSettings.get_azure_china_settings
|
|
65
|
+
when 'azuregermancloud'
|
|
66
|
+
MsRestAzure::ActiveDirectoryServiceSettings.get_azure_german_settings
|
|
67
|
+
when 'azure'
|
|
68
|
+
MsRestAzure::ActiveDirectoryServiceSettings.get_azure_settings
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
def environment_settings(azure_environment)
|
|
73
|
+
case azure_environment.downcase
|
|
74
|
+
when 'azureusgovernment'
|
|
75
|
+
MsRestAzure::AzureEnvironments::AzureUSGovernment
|
|
76
|
+
when 'azurechina'
|
|
77
|
+
MsRestAzure::AzureEnvironments::AzureChinaCloud
|
|
78
|
+
when 'azuregermancloud'
|
|
79
|
+
MsRestAzure::AzureEnvironments::AzureGermanCloud
|
|
80
|
+
when 'azure'
|
|
81
|
+
MsRestAzure::AzureEnvironments::AzureCloud
|
|
82
|
+
end
|
|
83
|
+
end
|
|
84
|
+
|
|
44
85
|
def list_regions(subscription_id)
|
|
45
86
|
subscription_client.subscriptions.list_locations(subscription_id)
|
|
46
87
|
end
|
|
@@ -11,7 +11,7 @@ module ForemanAzureRm
|
|
|
11
11
|
Foreman::Plugin.register :foreman_azure_rm do
|
|
12
12
|
requires_foreman '>= 1.17'
|
|
13
13
|
compute_resource ForemanAzureRm::AzureRm
|
|
14
|
-
parameter_filter ComputeResource, :azure_vm, :tenant, :app_ident, :secret_key, :sub_id, :region
|
|
14
|
+
parameter_filter ComputeResource, :azure_vm, :tenant, :app_ident, :secret_key, :sub_id, :region, :cloud
|
|
15
15
|
end
|
|
16
16
|
end
|
|
17
17
|
|
|
Binary file
|
|
@@ -7,9 +7,10 @@
|
|
|
7
7
|
# 0868a4d1af5275b3f70b0a6dac4c99a4, 2020
|
|
8
8
|
# Bryan Kearney <bryan.kearney@gmail.com>, 2020
|
|
9
9
|
#
|
|
10
|
+
#, fuzzy
|
|
10
11
|
msgid ""
|
|
11
12
|
msgstr ""
|
|
12
|
-
"Project-Id-Version: foreman_azure_rm 2.
|
|
13
|
+
"Project-Id-Version: foreman_azure_rm 2.1.1\n"
|
|
13
14
|
"Report-Msgid-Bugs-To: \n"
|
|
14
15
|
"PO-Revision-Date: 2020-04-21 13:58+0000\n"
|
|
15
16
|
"Last-Translator: Bryan Kearney <bryan.kearney@gmail.com>, 2020\n"
|
|
@@ -24,7 +25,7 @@ msgid "%{vm_size} VM Size"
|
|
|
24
25
|
msgstr ""
|
|
25
26
|
|
|
26
27
|
msgid "Action with sub plans"
|
|
27
|
-
msgstr ""
|
|
28
|
+
msgstr "하위 계획이 있는 작업"
|
|
28
29
|
|
|
29
30
|
msgid "Actions"
|
|
30
31
|
msgstr "동작 "
|
|
@@ -78,13 +79,13 @@ msgid "Image"
|
|
|
78
79
|
msgstr "이미지 "
|
|
79
80
|
|
|
80
81
|
msgid "Import Puppet classes"
|
|
81
|
-
msgstr ""
|
|
82
|
+
msgstr "Puppet 클래스 가져오기"
|
|
82
83
|
|
|
83
84
|
msgid "Import facts"
|
|
84
|
-
msgstr ""
|
|
85
|
+
msgstr "팩트 불러오기"
|
|
85
86
|
|
|
86
87
|
msgid "Load Regions"
|
|
87
|
-
msgstr ""
|
|
88
|
+
msgstr "지역 로드 "
|
|
88
89
|
|
|
89
90
|
msgid "Marketplace Image URN"
|
|
90
91
|
msgstr ""
|
|
@@ -132,7 +133,7 @@ msgid "Reload Images, Sizes, vNets"
|
|
|
132
133
|
msgstr ""
|
|
133
134
|
|
|
134
135
|
msgid "Remote action:"
|
|
135
|
-
msgstr ""
|
|
136
|
+
msgstr "원격 작업:"
|
|
136
137
|
|
|
137
138
|
msgid "Resource Group"
|
|
138
139
|
msgstr ""
|
|
Binary file
|
|
@@ -7,9 +7,10 @@
|
|
|
7
7
|
# Maxim Burgerhout <maxim@wzzrd.com>, 2020
|
|
8
8
|
# EmielK <emiel@kremers.us>, 2020
|
|
9
9
|
#
|
|
10
|
+
#, fuzzy
|
|
10
11
|
msgid ""
|
|
11
12
|
msgstr ""
|
|
12
|
-
"Project-Id-Version: foreman_azure_rm 2.
|
|
13
|
+
"Project-Id-Version: foreman_azure_rm 2.1.1\n"
|
|
13
14
|
"Report-Msgid-Bugs-To: \n"
|
|
14
15
|
"PO-Revision-Date: 2020-04-21 13:58+0000\n"
|
|
15
16
|
"Last-Translator: EmielK <emiel@kremers.us>, 2020\n"
|
|
Binary file
|
|
@@ -7,9 +7,10 @@
|
|
|
7
7
|
# sziolkow <sziolkow@gmail.com>, 2020
|
|
8
8
|
# Michał Foryt <michal.foryt@gmail.com>, 2020
|
|
9
9
|
#
|
|
10
|
+
#, fuzzy
|
|
10
11
|
msgid ""
|
|
11
12
|
msgstr ""
|
|
12
|
-
"Project-Id-Version: foreman_azure_rm 2.
|
|
13
|
+
"Project-Id-Version: foreman_azure_rm 2.1.1\n"
|
|
13
14
|
"Report-Msgid-Bugs-To: \n"
|
|
14
15
|
"PO-Revision-Date: 2020-04-21 13:58+0000\n"
|
|
15
16
|
"Last-Translator: Michał Foryt <michal.foryt@gmail.com>, 2020\n"
|
|
@@ -86,7 +87,7 @@ msgid "Import facts"
|
|
|
86
87
|
msgstr ""
|
|
87
88
|
|
|
88
89
|
msgid "Load Regions"
|
|
89
|
-
msgstr ""
|
|
90
|
+
msgstr "Załaduj regiony"
|
|
90
91
|
|
|
91
92
|
msgid "Marketplace Image URN"
|
|
92
93
|
msgstr ""
|
|
Binary file
|
|
@@ -4,18 +4,20 @@
|
|
|
4
4
|
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
|
5
5
|
#
|
|
6
6
|
# Translators:
|
|
7
|
-
# Flamarion Jorge <jorge.flamarion@gmail.com>, 2020
|
|
8
7
|
# 0868a4d1af5275b3f70b0a6dac4c99a4, 2020
|
|
8
|
+
# Bruno Emanuel Silva <bemanuel.pe@gmail.com>, 2020
|
|
9
|
+
# Flamarion Jorge <jorge.flamarion@gmail.com>, 2020
|
|
9
10
|
# Bryan Kearney <bryan.kearney@gmail.com>, 2020
|
|
10
11
|
# Luiz Henrique Vasconcelos <luizvasconceloss@yahoo.com.br>, 2020
|
|
11
|
-
# Bruno Emanuel Silva <bemanuel.pe@gmail.com>, 2020
|
|
12
12
|
#
|
|
13
|
+
#, fuzzy
|
|
13
14
|
msgid ""
|
|
14
15
|
msgstr ""
|
|
15
|
-
"Project-Id-Version: foreman_azure_rm 2.
|
|
16
|
+
"Project-Id-Version: foreman_azure_rm 2.1.1\n"
|
|
16
17
|
"Report-Msgid-Bugs-To: \n"
|
|
17
18
|
"PO-Revision-Date: 2020-04-21 13:58+0000\n"
|
|
18
|
-
"Last-Translator:
|
|
19
|
+
"Last-Translator: Luiz Henrique Vasconcelos <luizvasconceloss@yahoo.com.br>, 20"
|
|
20
|
+
"20\n"
|
|
19
21
|
"Language-Team: Portuguese (Brazil) (https://www.transifex.com/foreman/teams/11"
|
|
20
22
|
"4/pt_BR/)\n"
|
|
21
23
|
"MIME-Version: 1.0\n"
|
|
@@ -28,7 +30,7 @@ msgid "%{vm_size} VM Size"
|
|
|
28
30
|
msgstr ""
|
|
29
31
|
|
|
30
32
|
msgid "Action with sub plans"
|
|
31
|
-
msgstr ""
|
|
33
|
+
msgstr "Ação com subplanos"
|
|
32
34
|
|
|
33
35
|
msgid "Actions"
|
|
34
36
|
msgstr "Ações"
|
|
@@ -82,13 +84,13 @@ msgid "Image"
|
|
|
82
84
|
msgstr "Imagem"
|
|
83
85
|
|
|
84
86
|
msgid "Import Puppet classes"
|
|
85
|
-
msgstr ""
|
|
87
|
+
msgstr "Importar classes de Puppet"
|
|
86
88
|
|
|
87
89
|
msgid "Import facts"
|
|
88
|
-
msgstr ""
|
|
90
|
+
msgstr "Importar fatos"
|
|
89
91
|
|
|
90
92
|
msgid "Load Regions"
|
|
91
|
-
msgstr ""
|
|
93
|
+
msgstr "Carregar regiões"
|
|
92
94
|
|
|
93
95
|
msgid "Marketplace Image URN"
|
|
94
96
|
msgstr ""
|
|
@@ -136,7 +138,7 @@ msgid "Reload Images, Sizes, vNets"
|
|
|
136
138
|
msgstr ""
|
|
137
139
|
|
|
138
140
|
msgid "Remote action:"
|
|
139
|
-
msgstr ""
|
|
141
|
+
msgstr "Ação remota:"
|
|
140
142
|
|
|
141
143
|
msgid "Resource Group"
|
|
142
144
|
msgstr ""
|
|
Binary file
|
|
@@ -4,17 +4,19 @@
|
|
|
4
4
|
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
|
5
5
|
#
|
|
6
6
|
# Translators:
|
|
7
|
-
# 0868a4d1af5275b3f70b0a6dac4c99a4, 2020
|
|
8
7
|
# Andrei Burd <burdandrei@gmail.com>, 2020
|
|
9
|
-
# Bryan Kearney <bryan.kearney@gmail.com>, 2020
|
|
10
8
|
# Vladimir Pavlov <v.pavlov@i-teco.ru>, 2020
|
|
9
|
+
# Yulia <yulia.poyarkova@redhat.com>, 2020
|
|
10
|
+
# 0868a4d1af5275b3f70b0a6dac4c99a4, 2020
|
|
11
|
+
# Bryan Kearney <bryan.kearney@gmail.com>, 2020
|
|
11
12
|
#
|
|
13
|
+
#, fuzzy
|
|
12
14
|
msgid ""
|
|
13
15
|
msgstr ""
|
|
14
|
-
"Project-Id-Version: foreman_azure_rm 2.
|
|
16
|
+
"Project-Id-Version: foreman_azure_rm 2.1.1\n"
|
|
15
17
|
"Report-Msgid-Bugs-To: \n"
|
|
16
18
|
"PO-Revision-Date: 2020-04-21 13:58+0000\n"
|
|
17
|
-
"Last-Translator:
|
|
19
|
+
"Last-Translator: Bryan Kearney <bryan.kearney@gmail.com>, 2020\n"
|
|
18
20
|
"Language-Team: Russian (https://www.transifex.com/foreman/teams/114/ru/)\n"
|
|
19
21
|
"MIME-Version: 1.0\n"
|
|
20
22
|
"Content-Type: text/plain; charset=UTF-8\n"
|
|
@@ -28,7 +30,7 @@ msgid "%{vm_size} VM Size"
|
|
|
28
30
|
msgstr ""
|
|
29
31
|
|
|
30
32
|
msgid "Action with sub plans"
|
|
31
|
-
msgstr ""
|
|
33
|
+
msgstr "Действия с подпланами"
|
|
32
34
|
|
|
33
35
|
msgid "Actions"
|
|
34
36
|
msgstr "Действия"
|
|
@@ -82,13 +84,13 @@ msgid "Image"
|
|
|
82
84
|
msgstr "Образ"
|
|
83
85
|
|
|
84
86
|
msgid "Import Puppet classes"
|
|
85
|
-
msgstr ""
|
|
87
|
+
msgstr "Импорт классов Puppet"
|
|
86
88
|
|
|
87
89
|
msgid "Import facts"
|
|
88
|
-
msgstr ""
|
|
90
|
+
msgstr "Импорт фактов"
|
|
89
91
|
|
|
90
92
|
msgid "Load Regions"
|
|
91
|
-
msgstr ""
|
|
93
|
+
msgstr "Загрузить регионы"
|
|
92
94
|
|
|
93
95
|
msgid "Marketplace Image URN"
|
|
94
96
|
msgstr ""
|
|
@@ -136,7 +138,7 @@ msgid "Reload Images, Sizes, vNets"
|
|
|
136
138
|
msgstr ""
|
|
137
139
|
|
|
138
140
|
msgid "Remote action:"
|
|
139
|
-
msgstr ""
|
|
141
|
+
msgstr "Удаленное действие:"
|
|
140
142
|
|
|
141
143
|
msgid "Resource Group"
|
|
142
144
|
msgstr ""
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: foreman_azure_rm
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 2.
|
|
4
|
+
version: 2.2.2
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Aditi Puntambekar
|
|
@@ -10,124 +10,110 @@ authors:
|
|
|
10
10
|
autorequire:
|
|
11
11
|
bindir: bin
|
|
12
12
|
cert_chain: []
|
|
13
|
-
date:
|
|
13
|
+
date: 2021-04-12 00:00:00.000000000 Z
|
|
14
14
|
dependencies:
|
|
15
|
-
- !ruby/object:Gem::Dependency
|
|
16
|
-
name: deface
|
|
17
|
-
requirement: !ruby/object:Gem::Requirement
|
|
18
|
-
requirements:
|
|
19
|
-
- - "<"
|
|
20
|
-
- !ruby/object:Gem::Version
|
|
21
|
-
version: '2.0'
|
|
22
|
-
type: :runtime
|
|
23
|
-
prerelease: false
|
|
24
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
25
|
-
requirements:
|
|
26
|
-
- - "<"
|
|
27
|
-
- !ruby/object:Gem::Version
|
|
28
|
-
version: '2.0'
|
|
29
15
|
- !ruby/object:Gem::Dependency
|
|
30
16
|
name: azure_mgmt_resources
|
|
31
17
|
requirement: !ruby/object:Gem::Requirement
|
|
32
18
|
requirements:
|
|
33
|
-
- -
|
|
19
|
+
- - ~>
|
|
34
20
|
- !ruby/object:Gem::Version
|
|
35
|
-
version: 0.
|
|
21
|
+
version: 0.18.1
|
|
36
22
|
type: :runtime
|
|
37
23
|
prerelease: false
|
|
38
24
|
version_requirements: !ruby/object:Gem::Requirement
|
|
39
25
|
requirements:
|
|
40
|
-
- -
|
|
26
|
+
- - ~>
|
|
41
27
|
- !ruby/object:Gem::Version
|
|
42
|
-
version: 0.
|
|
28
|
+
version: 0.18.1
|
|
43
29
|
- !ruby/object:Gem::Dependency
|
|
44
30
|
name: azure_mgmt_network
|
|
45
31
|
requirement: !ruby/object:Gem::Requirement
|
|
46
32
|
requirements:
|
|
47
|
-
- -
|
|
33
|
+
- - ~>
|
|
48
34
|
- !ruby/object:Gem::Version
|
|
49
|
-
version: 0.
|
|
35
|
+
version: 0.26.1
|
|
50
36
|
type: :runtime
|
|
51
37
|
prerelease: false
|
|
52
38
|
version_requirements: !ruby/object:Gem::Requirement
|
|
53
39
|
requirements:
|
|
54
|
-
- -
|
|
40
|
+
- - ~>
|
|
55
41
|
- !ruby/object:Gem::Version
|
|
56
|
-
version: 0.
|
|
42
|
+
version: 0.26.1
|
|
57
43
|
- !ruby/object:Gem::Dependency
|
|
58
44
|
name: azure_mgmt_storage
|
|
59
45
|
requirement: !ruby/object:Gem::Requirement
|
|
60
46
|
requirements:
|
|
61
|
-
- -
|
|
47
|
+
- - ~>
|
|
62
48
|
- !ruby/object:Gem::Version
|
|
63
|
-
version: 0.
|
|
49
|
+
version: 0.23.0
|
|
64
50
|
type: :runtime
|
|
65
51
|
prerelease: false
|
|
66
52
|
version_requirements: !ruby/object:Gem::Requirement
|
|
67
53
|
requirements:
|
|
68
|
-
- -
|
|
54
|
+
- - ~>
|
|
69
55
|
- !ruby/object:Gem::Version
|
|
70
|
-
version: 0.
|
|
56
|
+
version: 0.23.0
|
|
71
57
|
- !ruby/object:Gem::Dependency
|
|
72
58
|
name: azure_mgmt_compute
|
|
73
59
|
requirement: !ruby/object:Gem::Requirement
|
|
74
60
|
requirements:
|
|
75
|
-
- -
|
|
61
|
+
- - ~>
|
|
76
62
|
- !ruby/object:Gem::Version
|
|
77
|
-
version: 0.
|
|
63
|
+
version: 0.22.0
|
|
78
64
|
type: :runtime
|
|
79
65
|
prerelease: false
|
|
80
66
|
version_requirements: !ruby/object:Gem::Requirement
|
|
81
67
|
requirements:
|
|
82
|
-
- -
|
|
68
|
+
- - ~>
|
|
83
69
|
- !ruby/object:Gem::Version
|
|
84
|
-
version: 0.
|
|
70
|
+
version: 0.22.0
|
|
85
71
|
- !ruby/object:Gem::Dependency
|
|
86
72
|
name: azure_mgmt_subscriptions
|
|
87
73
|
requirement: !ruby/object:Gem::Requirement
|
|
88
74
|
requirements:
|
|
89
|
-
- -
|
|
75
|
+
- - ~>
|
|
90
76
|
- !ruby/object:Gem::Version
|
|
91
|
-
version: 0.18.
|
|
77
|
+
version: 0.18.5
|
|
92
78
|
type: :runtime
|
|
93
79
|
prerelease: false
|
|
94
80
|
version_requirements: !ruby/object:Gem::Requirement
|
|
95
81
|
requirements:
|
|
96
|
-
- -
|
|
82
|
+
- - ~>
|
|
97
83
|
- !ruby/object:Gem::Version
|
|
98
|
-
version: 0.18.
|
|
84
|
+
version: 0.18.5
|
|
99
85
|
- !ruby/object:Gem::Dependency
|
|
100
86
|
name: rubocop
|
|
101
87
|
requirement: !ruby/object:Gem::Requirement
|
|
102
88
|
requirements:
|
|
103
|
-
- -
|
|
89
|
+
- - '>='
|
|
104
90
|
- !ruby/object:Gem::Version
|
|
105
91
|
version: '0'
|
|
106
92
|
type: :development
|
|
107
93
|
prerelease: false
|
|
108
94
|
version_requirements: !ruby/object:Gem::Requirement
|
|
109
95
|
requirements:
|
|
110
|
-
- -
|
|
96
|
+
- - '>='
|
|
111
97
|
- !ruby/object:Gem::Version
|
|
112
98
|
version: '0'
|
|
113
99
|
- !ruby/object:Gem::Dependency
|
|
114
100
|
name: mocha
|
|
115
101
|
requirement: !ruby/object:Gem::Requirement
|
|
116
102
|
requirements:
|
|
117
|
-
- -
|
|
103
|
+
- - ~>
|
|
118
104
|
- !ruby/object:Gem::Version
|
|
119
105
|
version: '1.2'
|
|
120
|
-
- -
|
|
106
|
+
- - '>='
|
|
121
107
|
- !ruby/object:Gem::Version
|
|
122
108
|
version: 1.2.1
|
|
123
109
|
type: :development
|
|
124
110
|
prerelease: false
|
|
125
111
|
version_requirements: !ruby/object:Gem::Requirement
|
|
126
112
|
requirements:
|
|
127
|
-
- -
|
|
113
|
+
- - ~>
|
|
128
114
|
- !ruby/object:Gem::Version
|
|
129
115
|
version: '1.2'
|
|
130
|
-
- -
|
|
116
|
+
- - '>='
|
|
131
117
|
- !ruby/object:Gem::Version
|
|
132
118
|
version: 1.2.1
|
|
133
119
|
description: This gem provides Azure Resource Manager as a compute resource for The
|
|
@@ -140,9 +126,6 @@ executables: []
|
|
|
140
126
|
extensions: []
|
|
141
127
|
extra_rdoc_files: []
|
|
142
128
|
files:
|
|
143
|
-
- LICENSE
|
|
144
|
-
- README.md
|
|
145
|
-
- Rakefile
|
|
146
129
|
- app/controllers/foreman_azure_rm/concerns/compute_resources_controller_extensions.rb
|
|
147
130
|
- app/controllers/foreman_azure_rm/concerns/hosts_controller_extensions.rb
|
|
148
131
|
- app/helpers/azure_compute_resource_helper.rb
|
|
@@ -211,6 +194,9 @@ files:
|
|
|
211
194
|
- locale/zh_CN/foreman_azure_rm.po
|
|
212
195
|
- locale/zh_TW/LC_MESSAGES/foreman_azure_rm.mo
|
|
213
196
|
- locale/zh_TW/foreman_azure_rm.po
|
|
197
|
+
- LICENSE
|
|
198
|
+
- Rakefile
|
|
199
|
+
- README.md
|
|
214
200
|
homepage: https://github.com/theforeman/foreman_azure_rm
|
|
215
201
|
licenses:
|
|
216
202
|
- GPL-3.0
|
|
@@ -221,17 +207,17 @@ require_paths:
|
|
|
221
207
|
- lib
|
|
222
208
|
required_ruby_version: !ruby/object:Gem::Requirement
|
|
223
209
|
requirements:
|
|
224
|
-
- -
|
|
210
|
+
- - '>='
|
|
225
211
|
- !ruby/object:Gem::Version
|
|
226
212
|
version: '0'
|
|
227
213
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
228
214
|
requirements:
|
|
229
|
-
- -
|
|
215
|
+
- - '>='
|
|
230
216
|
- !ruby/object:Gem::Version
|
|
231
217
|
version: '0'
|
|
232
218
|
requirements: []
|
|
233
219
|
rubyforge_project:
|
|
234
|
-
rubygems_version: 2.
|
|
220
|
+
rubygems_version: 2.0.14.1
|
|
235
221
|
signing_key:
|
|
236
222
|
specification_version: 4
|
|
237
223
|
summary: Azure Resource Manager as a compute resource for The Foreman
|