-
Notifications
You must be signed in to change notification settings - Fork 16
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat: Add SSSD parameters support #76
Changes from 7 commits
2e6426c
02bedbc
a8b5479
ba91674
4ee989b
9fe6d3e
63cf417
745dd91
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -204,6 +204,18 @@ Useful if some specific configuration like --user-principal=host/name@REALM or - | |
See man realm for details. | ||
Example: ad_integration_join_parameters: "--user-principal host/[email protected]" | ||
|
||
#### ad_integration_sssd_settings | ||
|
||
A list of setting to be included into the `[sssd]` section | ||
of the sssd.conf file. See sssd.conf man pages for details. | ||
Example: | ||
|
||
```yaml | ||
ad_integration_sssd_settings: | ||
- key: "configuration_name" | ||
value: "configuration_value" | ||
``` | ||
|
||
#### ad_integration_sssd_custom_settings | ||
|
||
A list of custom setting to be included into the `[domain/$REALM]` section | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -197,6 +197,20 @@ | |
changed_when: not __realm_join_output.stderr is | ||
search("Already joined to this domain") | ||
|
||
- name: Configure SSSD settings | ||
community.general.ini_file: | ||
path: /etc/sssd/sssd.conf | ||
state: "{{ item.state | default('present') }}" | ||
section: "sssd" | ||
option: "{{ item.key }}" | ||
value: "{{ item.value }}" | ||
create: true | ||
owner: root | ||
group: root | ||
mode: u=rw,g=,o= | ||
loop: "{{ ad_integration_sssd_settings }}" | ||
notify: Handler for ad_integration to restart services - sssd | ||
|
||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Do any of these sssd settings need to be set, and sssd restarted, before trying to join to the AD domain? The task There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
No, SSSD only gets involved after the system is joined to the domain. realmd restart is not needed, SSSD restart is enough. |
||
- name: Configure dynamic DNS updates | ||
community.general.ini_file: | ||
path: /etc/sssd/sssd.conf | ||
|
@@ -237,7 +251,7 @@ | |
- ad_dyndns_update | bool | ||
- item.value is not none | ||
- item.value != '' | ||
notify: Handler for ad_integration to restart services | ||
notify: Handler for ad_integration to restart services - sssd | ||
|
||
- name: Configure custom SSSD settings | ||
community.general.ini_file: | ||
|
@@ -251,7 +265,7 @@ | |
group: root | ||
mode: u=rw,g=,o= | ||
loop: "{{ ad_integration_sssd_custom_settings }}" | ||
notify: Handler for ad_integration to restart services | ||
notify: Handler for ad_integration to restart services - sssd | ||
|
||
# If dyndns_iface and/or dyndns_server previously had a configured value but are | ||
# now being set to `none` or `''`, remove the options form sssd.conf so sssd | ||
|
@@ -273,4 +287,4 @@ | |
when: | ||
- ad_dyndns_update | bool | ||
- item.value is none or item.value == '' | ||
notify: Handler for ad_integration to restart services | ||
notify: Handler for ad_integration to restart services - sssd |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,72 @@ | ||
# SPDX-License-Identifier: MIT | ||
--- | ||
|
||
- name: Ensure that the role configures dynamic dns | ||
hosts: all,!ad | ||
gather_facts: false # test that role works in this case | ||
vars: | ||
ad_integration_realm: sample-realm.com | ||
__ad_integration_test_sssd_config_only: true | ||
ad_integration_sssd_settings: | ||
- key: reconnection_retries | ||
seb2020 marked this conversation as resolved.
Show resolved
Hide resolved
|
||
value: 5 | ||
- key: default_domain_suffix | ||
value: addomain.xyz | ||
|
||
tasks: | ||
- name: Test - Run the system role with bogus vars | ||
include_role: | ||
name: linux-system-roles.ad_integration | ||
|
||
- name: Check SSSD settings | ||
community.general.ini_file: | ||
path: /etc/sssd/sssd.conf | ||
state: "{{ item.state | default('present') }}" | ||
section: sssd | ||
option: "{{ item.key }}" | ||
value: "{{ item.value }}" | ||
create: true | ||
owner: root | ||
group: root | ||
mode: u=rw,g=,o= | ||
loop: "{{ ad_integration_sssd_settings }}" | ||
register: __result | ||
failed_when: __result is changed | ||
|
||
- name: Search /var/log/sssd/sssd.log for [sss_ini_call_validators] | ||
command: >- | ||
grep -i sss_ini_call_validators /var/log/sssd/sssd.log | ||
register: sssd_log | ||
changed_when: false | ||
failed_when: false | ||
|
||
- name: Fail if signature found | ||
fail: | ||
msg: Appears to be an unsupported option in /etc/sssd/sssd.conf | ||
when: sssd_log.stdout | length > 0 | ||
|
||
- name: Test - Re-Build a list of settings with state=absent | ||
set_fact: | ||
update_list: "{{ ad_integration_sssd_settings | | ||
map('combine', {'state': 'absent'}) | list }}" | ||
|
||
- name: Test - Re-run the system role to remove vars | ||
include_role: | ||
name: linux-system-roles.ad_integration | ||
vars: | ||
ad_integration_sssd_custom_settings: "{{ update_list }}" | ||
seb2020 marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
||
- name: Check custom SSSD settings | ||
community.general.ini_file: | ||
path: /etc/sssd/sssd.conf | ||
state: "{{ item.state | default('present') }}" | ||
section: sssd | ||
option: "{{ item.key }}" | ||
value: "{{ item.value }}" | ||
create: true | ||
owner: root | ||
group: root | ||
mode: u=rw,g=,o= | ||
loop: "{{ update_list }}" | ||
register: __result | ||
failed_when: __result is changed |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This should be defined in
defaults/main.yml
like this:That should solve the test failures related to "undefined variable"
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I have updated the commit