foreman_salt 13.2.1 → 14.0.0
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 +4 -4
- data/README.md +1 -0
- data/app/controllers/foreman_salt/api/v2/salt_autosign_controller.rb +31 -1
- data/app/controllers/foreman_salt/api/v2/salt_variables_controller.rb +1 -2
- data/app/lib/proxy_api/salt.rb +16 -2
- data/app/models/foreman_salt/concerns/host_managed_extensions.rb +64 -15
- data/app/models/foreman_salt/salt_status.rb +12 -0
- data/app/services/foreman_salt/report_importer.rb +1 -1
- data/config/routes.rb +1 -0
- data/db/migrate/20210312150333_add_salt_autosign_to_host.rb +6 -0
- data/db/seeds.d/76-job_templates.rb +1 -1
- data/lib/foreman_salt/engine.rb +2 -4
- data/lib/foreman_salt/extensions.rb +0 -3
- data/lib/foreman_salt/version.rb +1 -1
- data/locale/ca/LC_MESSAGES/foreman_salt.mo +0 -0
- data/locale/ca/foreman_salt.po +541 -0
- data/locale/cs_CZ/LC_MESSAGES/foreman_salt.mo +0 -0
- data/locale/cs_CZ/foreman_salt.po +541 -0
- data/locale/de/LC_MESSAGES/foreman_salt.mo +0 -0
- data/locale/de/foreman_salt.po +0 -18
- data/locale/en/LC_MESSAGES/foreman_salt.mo +0 -0
- data/locale/en/foreman_salt.po +0 -18
- data/locale/en_GB/LC_MESSAGES/foreman_salt.mo +0 -0
- data/locale/en_GB/foreman_salt.po +541 -0
- data/locale/es/LC_MESSAGES/foreman_salt.mo +0 -0
- data/locale/es/foreman_salt.po +541 -0
- data/locale/foreman_salt.pot +22 -46
- data/locale/fr/LC_MESSAGES/foreman_salt.mo +0 -0
- data/locale/fr/foreman_salt.po +541 -0
- data/locale/gl/LC_MESSAGES/foreman_salt.mo +0 -0
- data/locale/gl/foreman_salt.po +541 -0
- data/locale/it/LC_MESSAGES/foreman_salt.mo +0 -0
- data/locale/it/foreman_salt.po +541 -0
- data/locale/ja/LC_MESSAGES/foreman_salt.mo +0 -0
- data/locale/ja/foreman_salt.po +541 -0
- data/locale/ko/LC_MESSAGES/foreman_salt.mo +0 -0
- data/locale/ko/foreman_salt.po +541 -0
- data/locale/nl_NL/LC_MESSAGES/foreman_salt.mo +0 -0
- data/locale/nl_NL/foreman_salt.po +541 -0
- data/locale/pl/LC_MESSAGES/foreman_salt.mo +0 -0
- data/locale/pl/foreman_salt.po +542 -0
- data/locale/pt_BR/LC_MESSAGES/foreman_salt.mo +0 -0
- data/locale/pt_BR/foreman_salt.po +541 -0
- data/locale/ru/LC_MESSAGES/foreman_salt.mo +0 -0
- data/locale/ru/foreman_salt.po +542 -0
- data/locale/sv_SE/LC_MESSAGES/foreman_salt.mo +0 -0
- data/locale/sv_SE/foreman_salt.po +541 -0
- data/locale/zh_CN/LC_MESSAGES/foreman_salt.mo +0 -0
- data/locale/zh_CN/foreman_salt.po +541 -0
- data/locale/zh_TW/LC_MESSAGES/foreman_salt.mo +0 -0
- data/locale/zh_TW/foreman_salt.po +541 -0
- data/test/functional/api/v2/salt_autosign_controller_test.rb +2 -0
- data/test/integration/salt_autosign_test.rb +2 -2
- data/test/integration/salt_keys_test.rb +2 -3
- data/test/unit/host_extensions_test.rb +55 -11
- metadata +40 -15
- data/app/models/foreman_salt/fact_name.rb +0 -14
- data/app/services/foreman_salt/fact_importer.rb +0 -15
- data/app/services/foreman_salt/fact_parser.rb +0 -114
- data/test/unit/grains_centos.json +0 -113
- data/test/unit/salt_fact_importer_test.rb +0 -24
- data/test/unit/salt_fact_parser_test.rb +0 -44
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 287507e11ca2f63bc8341eae5bc832e7d95ad5b848922b9eba44b85486fd9dc3
|
|
4
|
+
data.tar.gz: e1a70ace048abbcf30d57e0631f8b1ad1627bbad3c5261b2196d0a92663ef833
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: '08395ab98cb79f8dfc725268cfcb9dc8b11c015562625ea56f90315edaa9bcf1c76601d123481d57eed865212cc7212cfa36be6ea1506d8e59d1ac15afaa5f2b'
|
|
7
|
+
data.tar.gz: f7a59b6f52e80340520a8ed4523e39727659612a737fb848c33731013684f09dcbe83e27c02c928a22614f18842120ce3d53908bc2ec4176a153bb69c2124527
|
data/README.md
CHANGED
|
@@ -4,7 +4,15 @@ module ForemanSalt
|
|
|
4
4
|
module Api
|
|
5
5
|
module V2
|
|
6
6
|
class SaltAutosignController < ::ForemanSalt::Api::V2::BaseController
|
|
7
|
-
|
|
7
|
+
include ::Foreman::Controller::SmartProxyAuth
|
|
8
|
+
include ::Foreman::Controller::Parameters::Host
|
|
9
|
+
|
|
10
|
+
# The add_smart_proxy_filters must be executed first! Otherwise, resource_finder won't work properly
|
|
11
|
+
add_smart_proxy_filters :auth
|
|
12
|
+
|
|
13
|
+
before_action :find_proxy, except: [:auth]
|
|
14
|
+
before_action :find_host, :find_proxy_via_host, only: [:auth]
|
|
15
|
+
before_action :setup_proxy
|
|
8
16
|
|
|
9
17
|
api :GET, '/salt_autosign/:smart_proxy_id', N_('List all autosign records')
|
|
10
18
|
param :smart_proxy_id, :identifier_dottable, :required => true
|
|
@@ -28,6 +36,18 @@ module ForemanSalt
|
|
|
28
36
|
render :json => { root_node_name => _('Record deleted.') }
|
|
29
37
|
end
|
|
30
38
|
|
|
39
|
+
api :PUT, '/salt_autosign_auth', N_("Set the salt_status as \'successful authentication\' and remove the corresponding autosign key from the Smart Proxy")
|
|
40
|
+
param :name, String, :required => true
|
|
41
|
+
def auth
|
|
42
|
+
Rails.logger.info("Removing Salt autosign key and update status for host #{@host}")
|
|
43
|
+
@api.autosign_remove_key(@host.salt_autosign_key) unless @host.salt_autosign_key.nil?
|
|
44
|
+
@host.update(:salt_status => ForemanSalt::SaltStatus.minion_auth_success)
|
|
45
|
+
render :json => { :message => "Removed autosign key and updated status succesfully" }, :status => 204
|
|
46
|
+
rescue ::Foreman::Exception => e
|
|
47
|
+
Rails.logger.warn("Cannot delete autosign key of host (id => #{params[:name]}) state: #{e}")
|
|
48
|
+
render :json => { :message => e.to_s }, :status => :unprocessable_entity
|
|
49
|
+
end
|
|
50
|
+
|
|
31
51
|
def metadata_total
|
|
32
52
|
@total ||= all_autosign.count
|
|
33
53
|
end
|
|
@@ -50,11 +70,21 @@ module ForemanSalt
|
|
|
50
70
|
@_autosigns ||= @api.autosign_list.map { |record| OpenStruct.new(:record => record) }
|
|
51
71
|
end
|
|
52
72
|
|
|
73
|
+
def find_host
|
|
74
|
+
@host = resource_finder(Host.authorized(:view_hosts), params[:name])
|
|
75
|
+
not_found unless @host
|
|
76
|
+
end
|
|
77
|
+
|
|
53
78
|
def find_proxy
|
|
54
79
|
@proxy = ::SmartProxy.friendly.find(params[:smart_proxy_id])
|
|
55
80
|
not_found unless @proxy
|
|
56
81
|
end
|
|
57
82
|
|
|
83
|
+
def find_proxy_via_host
|
|
84
|
+
@proxy = ::SmartProxy.friendly.find(@host.salt_proxy.id)
|
|
85
|
+
not_found unless @proxy
|
|
86
|
+
end
|
|
87
|
+
|
|
58
88
|
def setup_proxy
|
|
59
89
|
@api = ProxyAPI::Salt.new(:url => @proxy.url)
|
|
60
90
|
end
|
|
@@ -6,7 +6,6 @@ module ForemanSalt
|
|
|
6
6
|
# API controller for Salt Variables
|
|
7
7
|
class SaltVariablesController < ::ForemanSalt::Api::V2::BaseController
|
|
8
8
|
include ::ForemanSalt::Concerns::SaltVariableParameters
|
|
9
|
-
include Foreman::Controller::Parameters::VariableLookupKey
|
|
10
9
|
|
|
11
10
|
wrap_parameters :salt_variable, :include => salt_variable_params_filter.accessible_attributes(parameter_filter_context) + ['salt_state_id']
|
|
12
11
|
before_action :find_resource, :only => [:show, :destroy, :update]
|
|
@@ -58,7 +57,7 @@ module ForemanSalt
|
|
|
58
57
|
param_group :salt_variable, :as => :update
|
|
59
58
|
|
|
60
59
|
def update
|
|
61
|
-
@salt_variable.update!(
|
|
60
|
+
@salt_variable.update!(salt_variable_params)
|
|
62
61
|
render 'foreman_salt/api/v2/salt_variables/show'
|
|
63
62
|
end
|
|
64
63
|
|
data/app/lib/proxy_api/salt.rb
CHANGED
|
@@ -14,7 +14,7 @@ module ::ProxyAPI
|
|
|
14
14
|
def autosign_create(name)
|
|
15
15
|
parse(post('', "autosign/#{URI.escape(name)}"))
|
|
16
16
|
rescue => e
|
|
17
|
-
raise ProxyException.new(url, e, N_('Unable to set Salt autosign for %s'), name)
|
|
17
|
+
raise ProxyException.new(url, e, N_('Unable to set Salt autosign hostname for %s'), name)
|
|
18
18
|
end
|
|
19
19
|
|
|
20
20
|
def autosign_remove(name)
|
|
@@ -22,7 +22,21 @@ module ::ProxyAPI
|
|
|
22
22
|
rescue RestClient::ResourceNotFound
|
|
23
23
|
true # entry doesn't exists anyway
|
|
24
24
|
rescue => e
|
|
25
|
-
raise ProxyException.new(url, e, N_('Unable to delete Salt autosign for %s'), name)
|
|
25
|
+
raise ProxyException.new(url, e, N_('Unable to delete Salt autosign hostname for %s'), name)
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def autosign_create_key(key)
|
|
29
|
+
parse(post('', "autosign_key/#{URI.escape(key)}"))
|
|
30
|
+
rescue => e
|
|
31
|
+
raise ProxyException.new(url, e, N_('Unable to create Salt autosign key %s'), key)
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def autosign_remove_key(key)
|
|
35
|
+
parse(delete("autosign_key/#{URI.escape(key)}"))
|
|
36
|
+
rescue RestClient::ResourceNotFound
|
|
37
|
+
true # entry doesn't exists anyway
|
|
38
|
+
rescue => e
|
|
39
|
+
raise ProxyException.new(url, e, N_('Unable to delete Salt autosign key %s'), key)
|
|
26
40
|
end
|
|
27
41
|
|
|
28
42
|
def environments_list
|
|
@@ -42,9 +42,8 @@ module ForemanSalt
|
|
|
42
42
|
|
|
43
43
|
validate :salt_modules_in_host_environment
|
|
44
44
|
|
|
45
|
-
after_build
|
|
46
|
-
|
|
47
|
-
before_destroy :delete_salt_key, :if => ->(host) { host.salt_proxy }
|
|
45
|
+
after_build :ensure_salt_autosign, :if => ->(host) { host.salt_proxy }
|
|
46
|
+
before_destroy :remove_salt_minion, :if => ->(host) { host.salt_proxy }
|
|
48
47
|
end
|
|
49
48
|
|
|
50
49
|
def salt_params
|
|
@@ -58,6 +57,14 @@ module ForemanSalt
|
|
|
58
57
|
end
|
|
59
58
|
end
|
|
60
59
|
|
|
60
|
+
def host_params_grains_name
|
|
61
|
+
"salt_grains"
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
def autosign_grain_name
|
|
65
|
+
"autosign_key"
|
|
66
|
+
end
|
|
67
|
+
|
|
61
68
|
def salt_modules_for_enc
|
|
62
69
|
all_salt_modules.collect(&:name).uniq
|
|
63
70
|
end
|
|
@@ -95,24 +102,66 @@ module ForemanSalt
|
|
|
95
102
|
end
|
|
96
103
|
end
|
|
97
104
|
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
def accept_salt_key
|
|
105
|
+
def derive_salt_grains(use_autosign: False)
|
|
106
|
+
grains = {}
|
|
101
107
|
begin
|
|
102
|
-
Rails.logger.info("
|
|
103
|
-
|
|
104
|
-
|
|
108
|
+
Rails.logger.info("Derive Salt Grains from host_params and autosign_key")
|
|
109
|
+
grains[autosign_grain_name] = salt_autosign_key if use_autosign && !salt_autosign_key.nil?
|
|
110
|
+
unless host_params[host_params_grains_name].nil? ||
|
|
111
|
+
host_params[host_params_grains_name].class != Hash
|
|
112
|
+
grains.merge!(host_params[host_params_grains_name])
|
|
113
|
+
end
|
|
105
114
|
rescue Foreman::Exception => e
|
|
106
|
-
Rails.logger.warn("Unable to
|
|
115
|
+
Rails.logger.warn("Unable to derive Salt Grains: #{e}")
|
|
107
116
|
end
|
|
117
|
+
grains
|
|
118
|
+
end
|
|
119
|
+
|
|
120
|
+
private
|
|
121
|
+
|
|
122
|
+
def ensure_salt_autosign
|
|
123
|
+
remove_salt_autosign
|
|
124
|
+
create_salt_autosign
|
|
125
|
+
end
|
|
126
|
+
|
|
127
|
+
def remove_salt_minion
|
|
128
|
+
remove_salt_autosign
|
|
129
|
+
remove_salt_key
|
|
130
|
+
end
|
|
131
|
+
|
|
132
|
+
def remove_salt_key
|
|
133
|
+
Rails.logger.info("Remove salt key for host #{fqdn}")
|
|
134
|
+
api = ProxyAPI::Salt.new(:url => salt_proxy.url)
|
|
135
|
+
api.key_delete(name)
|
|
136
|
+
end
|
|
137
|
+
|
|
138
|
+
def remove_salt_autosign
|
|
139
|
+
key = self.salt_autosign_key
|
|
140
|
+
unless key.nil?
|
|
141
|
+
Rails.logger.info("Remove salt autosign key for host #{fqdn}")
|
|
142
|
+
begin
|
|
143
|
+
api = ProxyAPI::Salt.new(:url => salt_proxy.url)
|
|
144
|
+
api.autosign_remove_key(key)
|
|
145
|
+
rescue Foreman::Exception => e
|
|
146
|
+
Rails.logger.warn("Unable to remove salt autosign for #{fqdn}: #{e}")
|
|
147
|
+
end
|
|
148
|
+
end
|
|
149
|
+
end
|
|
150
|
+
|
|
151
|
+
def generate_provisioning_key
|
|
152
|
+
SecureRandom.hex(10)
|
|
108
153
|
end
|
|
109
154
|
|
|
110
|
-
def
|
|
155
|
+
def create_salt_autosign
|
|
111
156
|
begin
|
|
112
|
-
key
|
|
113
|
-
|
|
157
|
+
Rails.logger.info("Create salt autosign key for host #{fqdn}")
|
|
158
|
+
api = ProxyAPI::Salt.new(:url => salt_proxy.url)
|
|
159
|
+
key = generate_provisioning_key
|
|
160
|
+
api.autosign_create_key(key)
|
|
161
|
+
update(:salt_autosign_key => key)
|
|
162
|
+
update(:salt_status => ForemanSalt::SaltStatus.minion_auth_waiting)
|
|
114
163
|
rescue Foreman::Exception => e
|
|
115
|
-
Rails.logger.warn("Unable to
|
|
164
|
+
Rails.logger.warn("Unable to create salt autosign for #{fqdn}: #{e}")
|
|
116
165
|
end
|
|
117
166
|
end
|
|
118
167
|
end
|
|
@@ -120,5 +169,5 @@ module ForemanSalt
|
|
|
120
169
|
end
|
|
121
170
|
|
|
122
171
|
class ::Host::Managed::Jail < Safemode::Jail
|
|
123
|
-
allow :salt_environment
|
|
172
|
+
allow :salt_environment, :salt_master, :derive_salt_grains
|
|
124
173
|
end
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
module ForemanSalt
|
|
2
|
+
# Define the class that holds different states a Salt host become
|
|
3
|
+
class SaltStatus
|
|
4
|
+
def self.minion_auth_waiting
|
|
5
|
+
'Waiting for Salt Minion to authenticate'
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
def self.minion_auth_success
|
|
9
|
+
'Salt Minion was authenticated successfully to Salt Master'
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
end
|
|
@@ -43,7 +43,7 @@ module ForemanSalt
|
|
|
43
43
|
|
|
44
44
|
@host.save(:validate => false)
|
|
45
45
|
@host.reload
|
|
46
|
-
@host.refresh_statuses
|
|
46
|
+
@host.refresh_statuses([HostStatus.find_status_by_humanized_name("configuration")])
|
|
47
47
|
|
|
48
48
|
logger.info("Imported report for #{@host} in #{(Time.zone.now - start_time).round(2)} seconds")
|
|
49
49
|
end
|
data/config/routes.rb
CHANGED
|
@@ -38,6 +38,7 @@ Rails.application.routes.draw do
|
|
|
38
38
|
scope '(:apiv)', :defaults => { :apiv => 'v2' },
|
|
39
39
|
:apiv => /v1|v2/, :constraints => ApiConstraints.new(:version => 2) do
|
|
40
40
|
match '/jobs/upload' => 'foreman_salt/api/v2/jobs#upload', :via => :post
|
|
41
|
+
match '/salt_autosign_auth' => 'foreman_salt/api/v2/salt_autosign#auth', :via => :put
|
|
41
42
|
|
|
42
43
|
constraints(:smart_proxy_id => /[\w\.-]+/, :name => /[\w\.-]+/, :record => /[^\/]+/) do
|
|
43
44
|
match '/salt_keys/:smart_proxy_id' => 'foreman_salt/api/v2/salt_keys#index', :via => :get
|
|
@@ -20,7 +20,7 @@ if ForemanSalt.with_remote_execution?
|
|
|
20
20
|
sync = !Rails.env.test? && Setting[:remote_execution_sync_templates]
|
|
21
21
|
template = JobTemplate.import_raw!(File.read(template),
|
|
22
22
|
:default => true,
|
|
23
|
-
:
|
|
23
|
+
:lock => true,
|
|
24
24
|
:update => sync)
|
|
25
25
|
template.organizations = organizations if template.present?
|
|
26
26
|
template.locations = locations if template.present?
|
data/lib/foreman_salt/engine.rb
CHANGED
|
@@ -38,16 +38,14 @@ module ForemanSalt
|
|
|
38
38
|
|
|
39
39
|
initializer 'foreman_salt.assets.precompile' do |app|
|
|
40
40
|
app.config.assets.precompile += %w(foreman_salt/states.js)
|
|
41
|
-
end
|
|
42
|
-
|
|
43
|
-
initializer 'foreman_salt.assets.precompile' do |app|
|
|
44
41
|
app.config.assets.precompile += %w[foreman_salt/Salt.png]
|
|
45
42
|
end
|
|
46
43
|
|
|
47
44
|
initializer 'foreman_salt.configure_assets', :group => :assets do
|
|
48
45
|
SETTINGS[:foreman_salt] = {
|
|
49
46
|
:assets => {
|
|
50
|
-
:precompile => ['foreman_salt/
|
|
47
|
+
:precompile => ['foreman_salt/Salt.png',
|
|
48
|
+
'foreman_salt/states.js']
|
|
51
49
|
}
|
|
52
50
|
}
|
|
53
51
|
end
|
|
@@ -1,7 +1,4 @@
|
|
|
1
1
|
begin
|
|
2
|
-
::FactImporter.register_fact_importer(:foreman_salt, ForemanSalt::FactImporter)
|
|
3
|
-
::FactParser.register_fact_parser(:foreman_salt, ForemanSalt::FactParser)
|
|
4
|
-
|
|
5
2
|
# Helper Extensions
|
|
6
3
|
::HostsHelper.send :include, ForemanSalt::HostsHelperExtensions
|
|
7
4
|
::SmartProxiesHelper.send :include, ForemanSalt::SmartProxiesHelperExtensions
|
data/lib/foreman_salt/version.rb
CHANGED
|
Binary file
|
|
@@ -0,0 +1,541 @@
|
|
|
1
|
+
# Catalan translations for foreman_salt package.
|
|
2
|
+
# Copyright (C) 2020 THE PACKAGE'S COPYRIGHT HOLDER
|
|
3
|
+
# This file is distributed under the same license as the foreman_salt package.
|
|
4
|
+
# FIRST AUTHOR <EMAIL@ADDRESS>, 2020.
|
|
5
|
+
#
|
|
6
|
+
msgid ""
|
|
7
|
+
msgstr ""
|
|
8
|
+
"Project-Id-Version: foreman_salt 1.0.0\n"
|
|
9
|
+
"Report-Msgid-Bugs-To: \n"
|
|
10
|
+
"PO-Revision-Date: 2020-05-11 18:53+0530\n"
|
|
11
|
+
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
|
12
|
+
"Language-Team: Catalan\n"
|
|
13
|
+
"Language: ca\n"
|
|
14
|
+
"MIME-Version: 1.0\n"
|
|
15
|
+
"Content-Type: text/plain; charset=UTF-8\n"
|
|
16
|
+
"Content-Transfer-Encoding: 8bit\n"
|
|
17
|
+
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
|
18
|
+
"\n"
|
|
19
|
+
|
|
20
|
+
msgid "*Clear environment*"
|
|
21
|
+
msgstr ""
|
|
22
|
+
|
|
23
|
+
msgid "Accept"
|
|
24
|
+
msgstr ""
|
|
25
|
+
|
|
26
|
+
msgid "Accepted"
|
|
27
|
+
msgstr ""
|
|
28
|
+
|
|
29
|
+
msgid "Action with sub plans"
|
|
30
|
+
msgstr ""
|
|
31
|
+
|
|
32
|
+
msgid "Actions"
|
|
33
|
+
msgstr ""
|
|
34
|
+
|
|
35
|
+
msgid "Added"
|
|
36
|
+
msgstr ""
|
|
37
|
+
|
|
38
|
+
msgid "Array of State ids"
|
|
39
|
+
msgstr ""
|
|
40
|
+
|
|
41
|
+
msgid "Autosign"
|
|
42
|
+
msgstr ""
|
|
43
|
+
|
|
44
|
+
msgid "Autosign entries for %s"
|
|
45
|
+
msgstr ""
|
|
46
|
+
|
|
47
|
+
msgid "Autosign record"
|
|
48
|
+
msgstr ""
|
|
49
|
+
|
|
50
|
+
msgid "Avoid duplicate values when merging them (only array type)?"
|
|
51
|
+
msgstr ""
|
|
52
|
+
|
|
53
|
+
msgid "Before including these variables as Salt pillar, Foreman will validate that your variables comply with the validation."
|
|
54
|
+
msgstr ""
|
|
55
|
+
|
|
56
|
+
msgid "Cancel"
|
|
57
|
+
msgstr ""
|
|
58
|
+
|
|
59
|
+
msgid "Change Salt Environment"
|
|
60
|
+
msgstr ""
|
|
61
|
+
|
|
62
|
+
msgid "Change Salt Master"
|
|
63
|
+
msgstr ""
|
|
64
|
+
|
|
65
|
+
msgid "Check/Uncheck Added"
|
|
66
|
+
msgstr ""
|
|
67
|
+
|
|
68
|
+
msgid "Check/Uncheck All"
|
|
69
|
+
msgstr ""
|
|
70
|
+
|
|
71
|
+
msgid "Check/Uncheck Removed"
|
|
72
|
+
msgstr ""
|
|
73
|
+
|
|
74
|
+
msgid "Continue to look for matches after first find (only array/hash type)? Note: merging overrides ignores all matchers that are omitted."
|
|
75
|
+
msgstr ""
|
|
76
|
+
|
|
77
|
+
msgid "Could not find salt environment with id %s"
|
|
78
|
+
msgstr ""
|
|
79
|
+
|
|
80
|
+
msgid "Create Salt Variable"
|
|
81
|
+
msgstr ""
|
|
82
|
+
|
|
83
|
+
msgid "Create Salt variable"
|
|
84
|
+
msgstr ""
|
|
85
|
+
|
|
86
|
+
msgid "Create a Salt environment"
|
|
87
|
+
msgstr ""
|
|
88
|
+
|
|
89
|
+
msgid "Create a state"
|
|
90
|
+
msgstr ""
|
|
91
|
+
|
|
92
|
+
msgid "Create an autosign record"
|
|
93
|
+
msgstr ""
|
|
94
|
+
|
|
95
|
+
msgid "Default Behavior"
|
|
96
|
+
msgstr ""
|
|
97
|
+
|
|
98
|
+
msgid "Default value of variable"
|
|
99
|
+
msgstr ""
|
|
100
|
+
|
|
101
|
+
msgid "Delete %s?"
|
|
102
|
+
msgstr ""
|
|
103
|
+
|
|
104
|
+
msgid "Delete a Salt Key"
|
|
105
|
+
msgstr ""
|
|
106
|
+
|
|
107
|
+
msgid "Delete an autosign record"
|
|
108
|
+
msgstr ""
|
|
109
|
+
|
|
110
|
+
msgid "Deletes Salt variable"
|
|
111
|
+
msgstr ""
|
|
112
|
+
|
|
113
|
+
msgid "Description of variable"
|
|
114
|
+
msgstr ""
|
|
115
|
+
|
|
116
|
+
msgid "Destroy a Salt environment"
|
|
117
|
+
msgstr ""
|
|
118
|
+
|
|
119
|
+
msgid "Destroy a state"
|
|
120
|
+
msgstr ""
|
|
121
|
+
|
|
122
|
+
msgid "Dryrun only"
|
|
123
|
+
msgstr ""
|
|
124
|
+
|
|
125
|
+
msgid "Edit"
|
|
126
|
+
msgstr ""
|
|
127
|
+
|
|
128
|
+
msgid "Edit %s"
|
|
129
|
+
msgstr ""
|
|
130
|
+
|
|
131
|
+
msgid "Edit Salt Environment %s"
|
|
132
|
+
msgstr ""
|
|
133
|
+
|
|
134
|
+
msgid "Edit Salt State %s"
|
|
135
|
+
msgstr ""
|
|
136
|
+
|
|
137
|
+
msgid "Edit Salt Variable"
|
|
138
|
+
msgstr ""
|
|
139
|
+
|
|
140
|
+
msgid "Environment"
|
|
141
|
+
msgstr ""
|
|
142
|
+
|
|
143
|
+
msgid "Environments"
|
|
144
|
+
msgstr ""
|
|
145
|
+
|
|
146
|
+
msgid "FQDN of host that key belongs to"
|
|
147
|
+
msgstr ""
|
|
148
|
+
|
|
149
|
+
msgid "Failed to execute state.highstate: %s"
|
|
150
|
+
msgstr ""
|
|
151
|
+
|
|
152
|
+
msgid "Filter %s"
|
|
153
|
+
msgstr ""
|
|
154
|
+
|
|
155
|
+
msgid "Fingerprint"
|
|
156
|
+
msgstr ""
|
|
157
|
+
|
|
158
|
+
msgid "Function"
|
|
159
|
+
msgstr ""
|
|
160
|
+
|
|
161
|
+
msgid "Hidden Value"
|
|
162
|
+
msgstr ""
|
|
163
|
+
|
|
164
|
+
msgid "Hide all values for this parameter."
|
|
165
|
+
msgstr ""
|
|
166
|
+
|
|
167
|
+
msgid "Hide the Run Salt state.highstate button on the host details page"
|
|
168
|
+
msgstr ""
|
|
169
|
+
|
|
170
|
+
msgid "Host groups"
|
|
171
|
+
msgstr ""
|
|
172
|
+
|
|
173
|
+
msgid "Host must have an environment in order to set salt states"
|
|
174
|
+
msgstr ""
|
|
175
|
+
|
|
176
|
+
msgid "Hosts"
|
|
177
|
+
msgstr ""
|
|
178
|
+
|
|
179
|
+
msgid "ID of Salt Proxy"
|
|
180
|
+
msgstr ""
|
|
181
|
+
|
|
182
|
+
msgid "If checked, will raise an error if there is no default value and no matcher provide a value."
|
|
183
|
+
msgstr ""
|
|
184
|
+
|
|
185
|
+
msgid "Import"
|
|
186
|
+
msgstr ""
|
|
187
|
+
|
|
188
|
+
msgid "Import Puppet classes"
|
|
189
|
+
msgstr ""
|
|
190
|
+
|
|
191
|
+
msgid "Import facts"
|
|
192
|
+
msgstr ""
|
|
193
|
+
|
|
194
|
+
msgid "Import from %s"
|
|
195
|
+
msgstr ""
|
|
196
|
+
|
|
197
|
+
msgid "Import states from a salt master"
|
|
198
|
+
msgstr ""
|
|
199
|
+
|
|
200
|
+
msgid "Include default value when merging all matching values"
|
|
201
|
+
msgstr ""
|
|
202
|
+
|
|
203
|
+
msgid "Include default value when merging all matching values."
|
|
204
|
+
msgstr ""
|
|
205
|
+
|
|
206
|
+
msgid "Invalid report"
|
|
207
|
+
msgstr ""
|
|
208
|
+
|
|
209
|
+
msgid "JID"
|
|
210
|
+
msgstr ""
|
|
211
|
+
|
|
212
|
+
msgid "Key Name"
|
|
213
|
+
msgstr ""
|
|
214
|
+
|
|
215
|
+
msgid "Keys"
|
|
216
|
+
msgstr ""
|
|
217
|
+
|
|
218
|
+
msgid "Limit to a specific environment"
|
|
219
|
+
msgstr ""
|
|
220
|
+
|
|
221
|
+
msgid "Limit to a specific environments"
|
|
222
|
+
msgstr ""
|
|
223
|
+
|
|
224
|
+
msgid "Limit to specific actions: i.e. add, remove"
|
|
225
|
+
msgstr ""
|
|
226
|
+
|
|
227
|
+
msgid "List Salt variables"
|
|
228
|
+
msgstr ""
|
|
229
|
+
|
|
230
|
+
msgid "List all Salt Minions"
|
|
231
|
+
msgstr ""
|
|
232
|
+
|
|
233
|
+
msgid "List all Salt environments"
|
|
234
|
+
msgstr ""
|
|
235
|
+
|
|
236
|
+
msgid "List all Salt keys"
|
|
237
|
+
msgstr ""
|
|
238
|
+
|
|
239
|
+
msgid "List all Salt states"
|
|
240
|
+
msgstr ""
|
|
241
|
+
|
|
242
|
+
msgid "List all autosign records"
|
|
243
|
+
msgstr ""
|
|
244
|
+
|
|
245
|
+
msgid "Mark the variable to be managed by Foreman. When the Salt State of this variable is assigned to a host, the default value will be added as a Salt pillar for this host. Specify matchers to set a different value for such variable."
|
|
246
|
+
msgstr ""
|
|
247
|
+
|
|
248
|
+
msgid "Merge all matching values (only array/hash type)"
|
|
249
|
+
msgstr ""
|
|
250
|
+
|
|
251
|
+
msgid "Must specify a Smart Proxy to use"
|
|
252
|
+
msgstr ""
|
|
253
|
+
|
|
254
|
+
msgid "Name"
|
|
255
|
+
msgstr ""
|
|
256
|
+
|
|
257
|
+
msgid "Name of the Salt state"
|
|
258
|
+
msgstr ""
|
|
259
|
+
|
|
260
|
+
msgid "Name of variable"
|
|
261
|
+
msgstr ""
|
|
262
|
+
|
|
263
|
+
msgid "Namespace Foreman pillars under 'foreman' key"
|
|
264
|
+
msgstr ""
|
|
265
|
+
|
|
266
|
+
msgid "New"
|
|
267
|
+
msgstr ""
|
|
268
|
+
|
|
269
|
+
msgid "New Autosign Entry"
|
|
270
|
+
msgstr ""
|
|
271
|
+
|
|
272
|
+
msgid "New Salt Environment"
|
|
273
|
+
msgstr ""
|
|
274
|
+
|
|
275
|
+
msgid "New Salt State"
|
|
276
|
+
msgstr ""
|
|
277
|
+
|
|
278
|
+
msgid "New Salt Variable"
|
|
279
|
+
msgstr ""
|
|
280
|
+
|
|
281
|
+
msgid "No Salt master defined - can't continue"
|
|
282
|
+
msgstr ""
|
|
283
|
+
|
|
284
|
+
msgid "No changes found"
|
|
285
|
+
msgstr ""
|
|
286
|
+
|
|
287
|
+
msgid "No salt environment selected!"
|
|
288
|
+
msgstr ""
|
|
289
|
+
|
|
290
|
+
msgid "Operation"
|
|
291
|
+
msgstr ""
|
|
292
|
+
|
|
293
|
+
msgid "Optional Input Validator"
|
|
294
|
+
msgstr ""
|
|
295
|
+
|
|
296
|
+
msgid "Order"
|
|
297
|
+
msgstr ""
|
|
298
|
+
|
|
299
|
+
msgid "Override the default value of the Salt variable."
|
|
300
|
+
msgstr ""
|
|
301
|
+
|
|
302
|
+
msgid "Overriden"
|
|
303
|
+
msgstr ""
|
|
304
|
+
|
|
305
|
+
msgid "Please select a Salt environment first"
|
|
306
|
+
msgstr ""
|
|
307
|
+
|
|
308
|
+
msgid "Prioritize Attribute Order"
|
|
309
|
+
msgstr ""
|
|
310
|
+
|
|
311
|
+
msgid "Record deleted."
|
|
312
|
+
msgstr ""
|
|
313
|
+
|
|
314
|
+
msgid "Reject"
|
|
315
|
+
msgstr ""
|
|
316
|
+
|
|
317
|
+
msgid "Rejected"
|
|
318
|
+
msgstr ""
|
|
319
|
+
|
|
320
|
+
msgid "Remote action:"
|
|
321
|
+
msgstr ""
|
|
322
|
+
|
|
323
|
+
msgid "Remove duplicate values (only array type)"
|
|
324
|
+
msgstr ""
|
|
325
|
+
|
|
326
|
+
msgid "Removed"
|
|
327
|
+
msgstr ""
|
|
328
|
+
|
|
329
|
+
msgid "Result"
|
|
330
|
+
msgstr ""
|
|
331
|
+
|
|
332
|
+
msgid "Run Salt"
|
|
333
|
+
msgstr ""
|
|
334
|
+
|
|
335
|
+
msgid "Run Salt state.highstate"
|
|
336
|
+
msgstr ""
|
|
337
|
+
|
|
338
|
+
msgid "Salt Autosign"
|
|
339
|
+
msgstr ""
|
|
340
|
+
|
|
341
|
+
msgid "Salt ENC"
|
|
342
|
+
msgstr ""
|
|
343
|
+
|
|
344
|
+
msgid "Salt Environment"
|
|
345
|
+
msgstr ""
|
|
346
|
+
|
|
347
|
+
msgid "Salt Environments"
|
|
348
|
+
msgstr ""
|
|
349
|
+
|
|
350
|
+
msgid "Salt Keys"
|
|
351
|
+
msgstr ""
|
|
352
|
+
|
|
353
|
+
msgid "Salt Keys on %s"
|
|
354
|
+
msgstr ""
|
|
355
|
+
|
|
356
|
+
msgid "Salt Master"
|
|
357
|
+
msgstr ""
|
|
358
|
+
|
|
359
|
+
msgid "Salt Smart Proxy ID"
|
|
360
|
+
msgstr ""
|
|
361
|
+
|
|
362
|
+
msgid "Salt State"
|
|
363
|
+
msgstr ""
|
|
364
|
+
|
|
365
|
+
msgid "Salt States"
|
|
366
|
+
msgstr ""
|
|
367
|
+
|
|
368
|
+
msgid "Salt Variable Details"
|
|
369
|
+
msgstr ""
|
|
370
|
+
|
|
371
|
+
msgid "Salt Variables"
|
|
372
|
+
msgstr ""
|
|
373
|
+
|
|
374
|
+
msgid "Salt environment"
|
|
375
|
+
msgstr ""
|
|
376
|
+
|
|
377
|
+
msgid "Salt environment ID"
|
|
378
|
+
msgstr ""
|
|
379
|
+
|
|
380
|
+
msgid "Salt external nodes YAML dump"
|
|
381
|
+
msgstr ""
|
|
382
|
+
|
|
383
|
+
msgid "Salt state"
|
|
384
|
+
msgstr ""
|
|
385
|
+
|
|
386
|
+
msgid "Salt states must be in the environment of the host"
|
|
387
|
+
msgstr ""
|
|
388
|
+
|
|
389
|
+
msgid "SaltEnvironment|Name"
|
|
390
|
+
msgstr ""
|
|
391
|
+
|
|
392
|
+
msgid "SaltModule|Name"
|
|
393
|
+
msgstr ""
|
|
394
|
+
|
|
395
|
+
msgid "Save"
|
|
396
|
+
msgstr ""
|
|
397
|
+
|
|
398
|
+
msgid "Select salt environment"
|
|
399
|
+
msgstr ""
|
|
400
|
+
|
|
401
|
+
msgid "Select the changes you want to realize in Foreman"
|
|
402
|
+
msgstr ""
|
|
403
|
+
|
|
404
|
+
msgid "Set the order in which values are resolved."
|
|
405
|
+
msgstr ""
|
|
406
|
+
|
|
407
|
+
msgid "Show a Salt environment"
|
|
408
|
+
msgstr ""
|
|
409
|
+
|
|
410
|
+
msgid "Show a minion"
|
|
411
|
+
msgstr ""
|
|
412
|
+
|
|
413
|
+
msgid "Show a state"
|
|
414
|
+
msgstr ""
|
|
415
|
+
|
|
416
|
+
msgid "Show variable"
|
|
417
|
+
msgstr ""
|
|
418
|
+
|
|
419
|
+
msgid "Specify Matchers"
|
|
420
|
+
msgstr ""
|
|
421
|
+
|
|
422
|
+
msgid "State"
|
|
423
|
+
msgstr ""
|
|
424
|
+
|
|
425
|
+
msgid "State ID"
|
|
426
|
+
msgstr ""
|
|
427
|
+
|
|
428
|
+
msgid "State can be \"accepted\" or \"rejected\""
|
|
429
|
+
msgstr ""
|
|
430
|
+
|
|
431
|
+
msgid "States"
|
|
432
|
+
msgstr ""
|
|
433
|
+
|
|
434
|
+
msgid "Successfully executed, check log files for more details"
|
|
435
|
+
msgstr ""
|
|
436
|
+
|
|
437
|
+
msgid "Successfully imported"
|
|
438
|
+
msgstr ""
|
|
439
|
+
|
|
440
|
+
msgid "Successfully updated %s."
|
|
441
|
+
msgstr ""
|
|
442
|
+
|
|
443
|
+
msgid "The order in which matchers keys are processed, first match wins.<br> You may use multiple attributes as a matcher key, for example, an order of <code>host group, environment</code> would expect a matcher such as <code>hostgroup = \"web servers\", environment = production</code>"
|
|
444
|
+
msgstr ""
|
|
445
|
+
|
|
446
|
+
msgid "The order in which values are resolved"
|
|
447
|
+
msgstr ""
|
|
448
|
+
|
|
449
|
+
msgid "Toggle"
|
|
450
|
+
msgstr ""
|
|
451
|
+
|
|
452
|
+
msgid "Trigger a state.highstate run on a node"
|
|
453
|
+
msgstr ""
|
|
454
|
+
|
|
455
|
+
msgid "Type"
|
|
456
|
+
msgstr ""
|
|
457
|
+
|
|
458
|
+
msgid "Types of validation values"
|
|
459
|
+
msgstr ""
|
|
460
|
+
|
|
461
|
+
msgid "Types of variable values"
|
|
462
|
+
msgstr ""
|
|
463
|
+
|
|
464
|
+
msgid "Unable to accept Salt key for %s"
|
|
465
|
+
msgstr ""
|
|
466
|
+
|
|
467
|
+
msgid "Unable to delete Salt autosign for %s"
|
|
468
|
+
msgstr ""
|
|
469
|
+
|
|
470
|
+
msgid "Unable to delete Salt key for %s"
|
|
471
|
+
msgstr ""
|
|
472
|
+
|
|
473
|
+
msgid "Unable to fetch Salt environments list"
|
|
474
|
+
msgstr ""
|
|
475
|
+
|
|
476
|
+
msgid "Unable to fetch Salt key list"
|
|
477
|
+
msgstr ""
|
|
478
|
+
|
|
479
|
+
msgid "Unable to fetch Salt states list"
|
|
480
|
+
msgstr ""
|
|
481
|
+
|
|
482
|
+
msgid "Unable to fetch autosign list"
|
|
483
|
+
msgstr ""
|
|
484
|
+
|
|
485
|
+
msgid ""
|
|
486
|
+
"Unable to generate output, Check log files\n"
|
|
487
|
+
msgstr ""
|
|
488
|
+
|
|
489
|
+
msgid "Unable to reject Salt key for %s"
|
|
490
|
+
msgstr ""
|
|
491
|
+
|
|
492
|
+
msgid "Unable to run Salt state.highstate for %s"
|
|
493
|
+
msgstr ""
|
|
494
|
+
|
|
495
|
+
msgid "Unable to set Salt autosign for %s"
|
|
496
|
+
msgstr ""
|
|
497
|
+
|
|
498
|
+
msgid "Unaccepted"
|
|
499
|
+
msgstr ""
|
|
500
|
+
|
|
501
|
+
msgid "Update"
|
|
502
|
+
msgstr ""
|
|
503
|
+
|
|
504
|
+
msgid "Update a Salt Key"
|
|
505
|
+
msgstr ""
|
|
506
|
+
|
|
507
|
+
msgid "Update a minion"
|
|
508
|
+
msgstr ""
|
|
509
|
+
|
|
510
|
+
msgid "Updated hosts: changed salt environment"
|
|
511
|
+
msgstr ""
|
|
512
|
+
|
|
513
|
+
msgid "Updates Salt variable"
|
|
514
|
+
msgstr ""
|
|
515
|
+
|
|
516
|
+
msgid "Upload a Job"
|
|
517
|
+
msgstr ""
|
|
518
|
+
|
|
519
|
+
msgid "Used to enforce certain values for the parameter values"
|
|
520
|
+
msgstr ""
|
|
521
|
+
|
|
522
|
+
msgid "Value to use when there is no match."
|
|
523
|
+
msgstr ""
|
|
524
|
+
|
|
525
|
+
msgid "Variables"
|
|
526
|
+
msgstr ""
|
|
527
|
+
|
|
528
|
+
msgid "Variable|Name"
|
|
529
|
+
msgstr ""
|
|
530
|
+
|
|
531
|
+
msgid "Variable|State"
|
|
532
|
+
msgstr ""
|
|
533
|
+
|
|
534
|
+
msgid "When enabled the parameter is hidden in the UI"
|
|
535
|
+
msgstr ""
|
|
536
|
+
|
|
537
|
+
msgid "is alphanumeric and cannot contain spaces"
|
|
538
|
+
msgstr ""
|
|
539
|
+
|
|
540
|
+
msgid "must be alphanumeric, can contain periods, dashes, underscores and must not contain spaces"
|
|
541
|
+
msgstr ""
|