Skip to content

Commit

Permalink
Fixes #37835 - Add user and netapi to Salt config
Browse files Browse the repository at this point in the history
* Set user for running Salt Master service due to 3006 changes
  https://docs.saltproject.io/en/3006/topics/releases/3006.0.html#linux-packaging-salt-master-salt-user-and-group

Salt API

* Add netapi_enable_clients explicitly due to 3006 changes
  https://docs.saltproject.io/en/master/topics/netapi/netapi-enable-clients.html#select-client-interfaces-to-enable
* Add api_interfaces parameter to enable configuration of API
  accessibility. However, smart_proxy_salt utilizes only
  the "runner" API interface.
  • Loading branch information
bastian-src committed Oct 22, 2024
1 parent 907200b commit 8482827
Show file tree
Hide file tree
Showing 4 changed files with 42 additions and 1 deletion.
5 changes: 4 additions & 1 deletion manifests/plugin/salt.pp
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,8 @@
#
# $api_password:: Salt API password
#
# $api_interfaces:: Salt API interfaces
#
# $saltfile:: Path to Saltfile
#
# === Advanced parameters:
Expand All @@ -42,6 +44,7 @@
String $api_auth = $foreman_proxy::plugin::salt::params::api_auth,
String $api_username = $foreman_proxy::plugin::salt::params::api_username,
String $api_password = $foreman_proxy::plugin::salt::params::api_password,
Array[String] $api_interfaces = $foreman_proxy::plugin::salt::params::api_interfaces,
Optional[Stdlib::Absolutepath] $saltfile = $foreman_proxy::plugin::salt::params::saltfile,
) inherits foreman_proxy::plugin::salt::params {
$foreman_ssl_cert = pick($foreman_proxy::foreman_ssl_cert, $foreman_proxy::ssl_cert)
Expand All @@ -55,7 +58,7 @@
~> file { "${foreman_proxy::etc}/salt/master.d/foreman.conf":
ensure => file,
content => template('foreman_proxy/plugin/salt_master.conf.erb'),
owner => 'root',
owner => pick($user, $foreman_proxy::user),
group => pick($group, $foreman_proxy::user),
mode => '0640',
}
Expand Down
1 change: 1 addition & 0 deletions manifests/plugin/salt/params.pp
Original file line number Diff line number Diff line change
Expand Up @@ -15,5 +15,6 @@
$api_auth = 'pam'
$api_username = 'saltuser'
$api_password = 'saltpassword'
$api_interfaces = ['runner']
$saltfile = undef
}
25 changes: 25 additions & 0 deletions spec/classes/foreman_proxy__plugin__salt_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,18 @@
:content => /:enabled: https/
})
end

it 'should configure master.d/foreman.conf' do
should contain_file('/etc/salt/master.d/foreman.conf').
with_mode('0640').
with_owner('root').
with_group('foreman-proxy').
with_content(%r{user: root}).
with_content(%r{autosign_grains_dir: /var/lib/foreman-proxy/salt/grains}).
with_content(%r{autosign_file: /etc/salt/autosign.conf}).
with_content(%r{netapi_enable_clients:\n - runner}).
with_content(%r{external_auth:\n pam:\n saltuser:\n - '@runner'})
end
end

describe 'with overwritten parameters' do
Expand All @@ -30,6 +42,7 @@
:api_auth => 'ldap',
:api_username => 'saltapi',
:api_password => 'letmein',
:api_interfaces => ['runner', 'local', 'ssh', 'wheel'],
:saltfile => '/etc/salt/Saltfile',
} end

Expand All @@ -45,6 +58,18 @@
with_content(%r{:api_password: letmein}).
with_content(%r{:saltfile: /etc/salt/Saltfile})
end

it 'should change master.d/foreman.conf parameters' do
should contain_file('/etc/salt/master.d/foreman.conf').
with_mode('0640').
with_owner('example').
with_group('foreman-proxy').
with_content(%r{user: example}).
with_content(%r{autosign_grains_dir: /var/lib/foreman-proxy/salt/grains}).
with_content(%r{autosign_file: /etc/salt/example.conf}).
with_content(%r{netapi_enable_clients:\n - runner\n - local\n - ssh\n - wheel}).
with_content(%r{external_auth:\n ldap:\n saltapi:\n - '@runner'})
end
end
end
end
Expand Down
12 changes: 12 additions & 0 deletions templates/plugin/salt_master.conf.erb
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,11 @@ autosign_file: <%= scope.lookupvar('foreman_proxy::plugin::salt::autosign_file')
# permissive_pki_access: True


##
# Salt Master service user
user: <%= scope.lookupvar('::foreman_proxy::plugin::salt::user') %>


##
# Node classifier
master_tops:
Expand All @@ -39,6 +44,13 @@ rest_cherrypy:
ssl_key: <%= @foreman_ssl_key %>
ssl_crt: <%= @foreman_ssl_cert %>
<% if scope.lookupvar('foreman_proxy::plugin::salt::api_interfaces').any? -%>
netapi_enable_clients:
<%- scope.lookupvar('foreman_proxy::plugin::salt::api_interfaces').each do |api_item| -%>
- <%= api_item %>
<%- end -%>
<% end -%>


##
# Remote execution provider
Expand Down

0 comments on commit 8482827

Please sign in to comment.