102 Commits

Author SHA1 Message Date
Thomas Woerner
b51397eb89 ipa[server,replica,client]: Deactivate Python2/3 test
This test is not properly working with EL-8 nodes as the default system
python is not located in /usr/bin. Additionally Ansible 2.8 is able to
detect the default python version on the system. As the installation
base for IPA 4.5.90 where the Python 3 bindings have not been working
properly should be really small or not existing any more the deactivation
of this test should be fine.
2019-06-04 11:58:52 +02:00
Thomas Woerner
9397776501 ipaclient/tasks/install.yml: Save and restore ipaadmin_password with OTP
The generated OTP password is stored into ipaadmin_password. The original
password is now saved and restored later on again.

This fixes the failure with incorrect password while installing the client
part in a replica deployment.
2019-05-31 17:22:56 +02:00
Thomas Woerner
be04079fc7 ipaclient/tasks/install.yml: Disable One-Time Password for on_master
if _on_master is set, deactivate _get_otp as OTP is not needed at all
for the client side install part on a master.
2019-05-31 17:21:26 +02:00
Scott Poore
e0c85c5af4 ipaclient install role length typo
Correcting small typo for lenth to length in a check
2019-05-13 11:07:06 -05:00
Thomas Woerner
93f9b900c6 ipaclient: Replace empty string test with length 0 test 2019-05-03 19:07:42 +02:00
Thomas Woerner
e5be194d57 ipaclient: Fix indent in install.yml 2019-05-03 18:45:01 +02:00
Thomas Woerner
65fb75feaf ipaclient: Calm down ansible and yaml lint in ansible-galaxy 2019-05-03 18:37:22 +02:00
Thomas Woerner
12006859d9 Fix white space issues in yaml files and ansible vars 2019-05-03 17:36:52 +02:00
Thomas Woerner
9148dde50a ipaclient_setup_nss: Create DNS SSHFP records, update to latest FreeIPA
There have been several settings in ipaclient_setup_nss that have been
hard coded instead of using the settings from the role. This has been
fixed and the code in ipaclient_setup_nss has been updated to the latest
version of FreeIPA with compatibility changes for older FreeIPA versions.
Additionally the api is now properly configured so that the DNS SSHFP
records are now properly created if no_dns_sshfp is not enabled.
2019-04-26 13:13:43 +02:00
Thomas Woerner
4d759b64ab Revert "ipa[server,replica,client]: Do not enforce ansible_fqdn as hostname"
This reverts commit bbaaf1f74c.
2019-04-18 17:56:14 +02:00
Thomas Woerner
0954f84572 ipa[server,replica,client]: Do not use meta end_play
Meta end_play has been used as a simple solution to end the playbook
processing in special conditions, like for example when the deployment
was already done before.

meta end_play has been replaced with blocks and conditions for these
blocks.

Fixes: #70 (Avoid using meta end_play)
2019-04-17 15:08:36 +02:00
Thomas Woerner
bbaaf1f74c ipa[server,replica,client]: Do not enforce ansible_fqdn as hostname
The ansible_fqdn hostname has been enforced to be set and used in
ipaserver, ipareplica and also ipaclient role. This has been removed as
the hostname should only be set if specified explicitly with
ipa[server,replica,client]_hostname.
2019-04-17 15:06:23 +02:00
Thomas Woerner
658f830970 ipaclient_setup_ntp: Add missing cli_servers, fix options.ntp_servers check
cli_servers from ipaclient_test was missing in ipaclient_setup_ntp. This
resulted in a backtrace and is fixed now. Fix options.ntp_servers check
to not use length on NoneType.
2019-04-05 19:09:08 +02:00
Thomas Woerner
b5d6dc00d2 ipaclient: Use ipaclient_all_ip_addresses instead of ipahost_all_ip_addresses
This setting had the wrong and unsed prefix ipahost. THis has been fixed and
the proper prefix ipaclient is now used.
2019-04-03 14:17:16 +02:00
Thomas Woerner
07a97cb83f ipaclient: Krb5 should only be configured if ipaclient_on_master is not set
Krb5 configuration was also done if ipaclient_on_master was set. This
resulted in a reverted configuration while deploying the client part in
a server deploment.
2019-04-03 14:08:45 +02:00
Thomas Woerner
4557292743 ipa[server,replica,client]: Do not try to execute tasks after the role test
The role test is executed in the ipa[server,replica,client] roles first.
These tests are usable in the Ansible test mode, but the folllowing steps
in the task list are not. Therefore the blocks following the tests are
limited to not being executed in test mode.
2019-03-26 14:22:26 +01:00
Thomas Woerner
82588026bf python_2_3_test: Make sure that python_2_3_test is also executed in test mode
python_2_3_test needs to be executed also in test mode to make sure that the
follwing ipa[server,replica,client]_test modules could be executed also in
test mode.
2019-03-26 14:19:56 +01:00
Thomas Woerner
7ce09b2cc9 python_2_3_test: Add result_ prefix to registered result from py3test.py script
For consitency the result_ prefix has been added to the registered result
of the py3test.py script.
2019-03-26 14:03:31 +01:00
Thomas Woerner
3251d0acd4 ipaclient/tasks/install.yml: Removed empty line in ipaclient_setup_sssd section
Removed addtional empty line in ipaclient_setup_sssd sectio
2019-03-26 11:08:12 +01:00
Thomas Woerner
c7fd2cacf3 ipaclient/tasks/install.yml: Removed default(omit) for bool variables
default(omit) is not needed for bool values, as these need to be set either
way.
2019-03-26 11:05:30 +01:00
Thomas Woerner
a6ee0d0756 ipaclient: End install if already installed and no allow_repair and force_join
If the client is already installed and the allow_repair and force_join
options are not set end the playbook processing. This is useful if an
inventory file contains existing and new machines.
2019-03-25 19:51:58 +01:00
Thomas Woerner
099317fe9c New ipaclient_setup_krb5: Use ipaclient_setup_krb5 instead of ipa-krb5 role
The advantage of this is that the krb5 configuration is created in the same
way as in the normal installers. The same functionality as in the normal
installers is used in ipaclient_setup_krb5. There is no need to adapt the
ipa-krb5 role or the the ask file for changes in how the krb5 configuration
is done. Additionally ipaclient_force is now a supported parameter as
it is in the normal installer.

New config option:

ipaclient_force

The variable has been added to ipaclient/defaults/main.yml.
2019-03-25 16:53:32 +01:00
Thomas Woerner
b942661788 New ipaclient_ipa_conf: Use ipaclient_ipa_conf instead of ipaconf role
The advantage of this is that the ipa default configuration is created in
the same way as in the normal installers. The same functionality as in the
normal installers is used in ipaclient_ipa_conf.
2019-03-25 16:48:29 +01:00
Thomas Woerner
d0ba53153e ipaclient_setup_ssh: Keep no_ for prefix for settings, use ssh_trust_dns
The no_ prefix for the ssh and sshd settings has been added back. The
naming of the settings should be the same all over the ipcalient role.
The exception is sssd here as it has been deprected and is used from
ipaclient_test.

The name for the setting ssh_trust_dns has been fixed to the command line
option name and not the internl optinos name.
2019-03-25 15:04:36 +01:00
Thomas Woerner
2983d4e7b3 ipaclient_setup_sssd: Update and cleanup
ipaclient_setup_sssd is now using configure_sssd_conf from
ipaclient/install/client.py instead. This simplified the module a lot
and also adds more configuratino options for sssd.

These are new config options supported by ipaclient_setup_sssd:

ipaclient_no_sudo
ipassd_fixed_primary
ipassd_permit
ipassd_enable_dns_updates
ipassd_no_krb5_offline_passwords
ipassd_preserve_sssd

These variables have been added to ipaclient/defaults/main.yml.
2019-03-25 14:04:34 +01:00
Thomas Woerner
c5ce754850 ipaclient_test: More tests from ipaclient installer, updated ansible_ipa_client
The ipaclient_test module was not doing all tests that should be done
with the provided settings. All tests from ipaclient installer parts
are now part of ipaclient_test. There are some minor changes though to
make sure that the repair mode could still be used.

ansible_ipa_client bindings have been updated to fullfill new needs.
2019-03-25 13:56:18 +01:00
Thomas Woerner
61862820e0 ipaclient: New module ipaclient_setup_ntp, dropped ipaclient_ntp setting
The new module ipaclient_setup_ntp to configure and sync time with the NTP
server has been added. The irregular setting ipaclient_ntp has been removed.

The ipaclient_setup_ntp module is using either the new sync_time call or
for compatibility with older FreeIPA versions synconce_ntp.

The reference for ipaclient_ntp in REPLICA.md has been removed also.

This also fixes #55.
2019-03-21 18:20:50 +01:00
Thomas Woerner
4b2fc33b35 ipaclient: Replace extras module with ssh, automount, firefox and nis modules
ipaclient_extras could configure several things internally according to
provided settings. These have been ssh, sshd, automount, firefox an also
nis. The ssh and sshd configuration is now plocated in ipaclient_setup_ssh,
the automount configuration in ipaclient_setup_automount, the firefox
configuration in ipaclient_setup_firefox and the nis configuration in
ipaclient_setup_nis.

The following additional settings have been added to
roles/ipaclient/defaults/main.yml to provide the same configruation options
as ipa-client-install does:

ipaclient_no_ssh: no
ipaclient_no_sshd: no
ipaclient_no_nisdomain: no
ipaclient_configure_firefox: no
2019-03-21 15:26:40 +01:00
Thomas Woerner
7c378d9c4d ipaclient role: Fix naming of modules, action_plugins and registered vars
The naming in the ipaclient role has not been following the naming scheme
and conventions used in the ipaserver and ipareplica roles. Also registered
results of modules and commands have not been unsing the result_ prefix as
in the other roles. All this has been fixed and the naming is consistent
now.

These are the renames:

ipahost -> ipaclient_get_otp
ipaapi -> ipaclient_api
ipaextras -> ipaclient_extras
ipafixca -> ipaclient_fix_ca
ipafstore -> ipaclient_fstore
ipa_facts -> ipaclient_get_facts
ipahost -> ipaclient_get_otp
ipajoin -> ipaclient_join
ipanss -> ipaclient_setup_nss
ipasssd -> ipaclient_setup_sssd
ipadiscovery -> ipaclient_test
ipatest -> ipaclient_test_keytab
2019-03-21 13:52:34 +01:00
Thomas Woerner
77d0a1067a ipa[server,replica,client]: New setting X_install_packages
With these settings for server, replica and client it is possible to skip
package installation. This is for example useful if the packages are already
installed. The settings default to yes

The setting ipareplica_no_package_install has been removed.
2019-02-12 13:50:04 +01:00
Thomas Woerner
20d25d0d43 Replace deprecated include with import_tasks and include_tasks
As the old way to include tasks is deprecated, replace static include
statements with import_tasks and dynamic ones with include_tasks.

Increaded the required ansible version to 2.5.0 to make sure that
include_tasks and import_tasks is working as expected.

Fixes issue #38
2018-11-22 16:26:58 +01:00
Thomas Woerner
695d09aa69 ipaclient: Backup and set hostname explicitly
This is needed to use ipaclient in ipareplica for client deployment.
2018-07-19 14:14:45 +02:00
Thomas Woerner
1b2f6d7e8b ipaclient: Set default_domain in krb5.conf in the same way as ipa-client-install
Set default_domain if not ipadiscovery.dnsok or not ipadiscovery.kdc like it
is done in ipa-client-install.
2018-07-19 13:00:39 +02:00
Thomas Woerner
0154f36a69 Added ipa- prefix to krb5 and sssd roles as these are ansible-freeipa specific
These roles will most likely not work in the common case. Therefore the roles
have been renamed.

The ipa-krpb5 role is used by ipcalient, but the ipa-sssd role is currently
not used.
2018-07-19 12:58:30 +02:00
Thomas Woerner
1ed9379c9c ipaclient: Fix OTP action plugin to work with python3 bindings
As the action plugin is used with the default python interpreter and
the change to python3 for FreeIPA, the use of OTP was not working anymore.

The ansible_python_interpreter is not automatically used for the module
part of the action plugin. Therefore ansible_python_interpreter needed to
be added to the action plugin call as a new var to make sure that the
module part is used with the proper python version.

Also a new import for the Python2/3 import test has been added to discover
of the server is supporting python2 or python3. The old
ansible_python_interpreter setting is saved before doing this and restored
after the one-time password has been generated on the server.
2018-06-21 13:08:44 +02:00
Thomas Woerner
4063b6caa3 ipaclient: Add support for IPA 4.7 (4.6.90-pre2)
With IPA 4.7 bigger changes have been introduced

Changes:
- Use of timeconf and chrony instead of ntpconf and ntpd.
- A new option ntp_pool has been introduced.
2018-06-21 13:04:32 +02:00
Thomas Woerner
d4b7d4d3e8 Merge pull request #22 from kellinm/no-change-on-python3-test
Capturing python3 check result is not a change
2018-05-18 15:37:28 +02:00
Thomas Woerner
397acc01db ipaclient: Make krb5 DNS lookup possible in cluster environments
krb5 DNS discovery was not possible in cluster environments as the server
list from groups.ipaserver was used all the time. DNS discovery is though
only used if no servers are given.

The new setting ipaclient_no_dns_lookup has been added to make sure that
DNS lookup is used in the first place and can be disabled easily with this
setting. There is also a new way to override servers per client in the
inventory file with ipaclient_servers.

Two new settings have been added:

ipaclient_no_dns_lookup (bool, default: no)
  Set to 'yes' to use groups.ipaserver in cluster environments as servers
  for the clients. This deactivates DNS lookup in krb5.

ipaclient_servers (list of strings, default: undefined)
  Manually override list of servers for example in a cluster environment on
  a per client basis. The list of servers is normally taken from from
  groups.ipaserver in cluster environments.
2018-05-18 15:06:53 +02:00
Thomas Woerner
3e9568e39e ipaclient: Fix krb5 DNS lookup and servers
The krb5 DNS lookup settings krb5_dns_lookup_realm and krb5_dns_lookup_kdc
ans also the servers have not been set properly set if no server has been
specified and discovery succeeded. This has been fixed.

This fixes issue #23.
2018-05-18 14:38:27 +02:00
Kellin
75cd130d4a Capturing python3 check result is not a change
- Do not register a change in the playbook run when registering the
  variable checking for whether or not Python 3 imports work

Signed-off-by: Kellin <kellin@retromud.org>
2018-04-10 21:01:13 -04:00
Thomas Woerner
3e03d7f44d ipaclient/tasks/install: Fix client installation on master within server role
The client role is used also while installing the server. There has been an
issue where the server installation has not been complete because of a
playbook termination in the client.

This has been fixed and the client and also the server are fully configured
in the server installation.
2018-02-09 16:56:53 +01:00
Thomas Woerner
4697a0326d ipaclient/tasks/main.yml: Fix undefined ipaclient_packages error with include_role
The relative import of the distribution specific vars files requires to use
is not working. {{ role_path }} needs to be used to force the load of the
proper files.
2018-01-31 23:46:36 +01:00
Thomas Woerner
3c4e68ef10 ipaclient/tasks/install.yml: Fix possible ipajoin.already_joined undefined issue 2018-01-31 23:46:33 +01:00
Thomas Woerner
ceb4224afe ipaclient/tasks/install.yml: Support client usage in server role
The server role has different setting names:

- groups.ipaserver: groups.ipaservers
- ipaserver_domain: ipaclient_domain
- ipaserver_realm: ipaclient_realm

Both need to be supported to be able to sue the client role within the server
role, but also standalone.
2018-01-31 23:46:31 +01:00
Thomas Woerner
7180d1beff ipaclient,ipaserver: Better names for package tasks 2018-01-29 17:30:11 +01:00
Thomas Woerner
d009b80621 library/ipadiscovery: Add time synchronization calls
Attempt to sync time if on_master is not set and no_ntp is not set: At
first with given or dicovered time servers. If no ntp servers have been
given or discovered, then with the ipa server.

New parameters:
  on_master:
    description: IPA client installation on IPA server
    required: false
    default: false
    type: bool
    default: no
  ntp_servers:
    description: List of NTP servers to use
    required: false
    type: list
    default: []
  no_ntp:
    description: Do not sync time and do not detect time servers
    required: false
    default: false
    type: bool
    default: no

The ntp_servers output parameter is now always an empty list if on_master
or no_ntp is set.
2017-12-06 12:53:19 +01:00
Thomas Woerner
120786672e library/ipadiscovery: Drop unused check parameter 2017-12-06 12:52:46 +01:00
Thomas Woerner
a7e78597c6 Add support for on_master flag
This is needed to be able to use ipaclient role in the server role
2017-12-06 12:46:57 +01:00
Thomas Woerner
86323feb80 roles/ipaclient/tasks/install.yml: Allow to specify different hostname
ipaclient_hostname needs to be specified in the inventory file for the hosts
where the name needs to get changed.

Example:
192.168.1.1 ipaclient_hostname=ipaclient1.mine.local

The option should not be specified in [ipaclients:vars] as all hosts would
get the same name.
2017-11-09 13:20:44 +01:00
Thomas Woerner
bb603fbd9f roles/ipaclient/tasks/uninstall.yml: No need to use python3 test for uninstall 2017-11-09 13:19:58 +01:00