Chapter 1. Migrating your IdM environment from RHEL 9 servers to RHEL 10 servers
To upgrade a RHEL 9 IdM environment to RHEL 10, you must first add new RHEL 10 IdM replicas to your RHEL 9 IdM environment, and then retire the RHEL 9 servers. The migration involves moving all Identity Management (IdM) data and configuration from a Red Hat Enterprise Linux (RHEL) 9 server to a RHEL 10 server.
Migrate all servers in an IdM deployment as quickly as possible. Mixing different IdM versions in the same deployment for extended periods of time can lead to incompatibilities or possibly even unrecoverable data corruption.
- Performing an in-place upgrade of RHEL 9 IdM servers and IdM server nodes to RHEL 10 is not supported.
- For more information about adding a RHEL 10 IdM replica in FIPS mode to a RHEL 9 IdM deployment in FIPS mode, see the Identity Management section in Considerations in adopting RHEL 10.
Migrating directly to RHEL 10 from RHEL 8 or earlier versions is not supported. To properly update your IdM data, you must perform incremental migrations.
For example, to migrate a RHEL 8 IdM environment to RHEL 10:
- Migrate from RHEL 8 servers to RHEL 9 servers. See Migrating to Identity Management on RHEL 9.
- Migrate from RHEL 9 servers to RHEL 10 servers, as described in this section.
In the following procedures:
-
rhel10.example.com
is the RHEL 10 system that will become the new CA renewal server. rhel9.example.com
is the original RHEL 9 CA renewal server. To identify which Red Hat Enterprise Linux 9 server is the CA renewal server, run the following command on any IdM server:Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa config-show | grep "CA renewal"
[root@rhel9 ~]# ipa config-show | grep "CA renewal" IPA CA renewal master: rhel9.example.com
If your IdM deployment does not use an IdM CA, any IdM server running on RHEL 9 can be
rhel9.example.com
.
Complete the steps in the following sections only if your IdM deployment uses an embedded certificate authority (CA):
1.1. Prerequisites for migrating IdM from RHEL 9 to 10
If you want to use hardware security modules (HSMs) to store your CA and KRA keys and certificates, you cannot upgrade an existing installation where the keys were not generated on an HSM to an HSM-based install.
On rhel9.example.com
:
- Upgrade the system to the latest RHEL 9 version.
Update the ipa-* packages to their latest version:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow dnf update ipa-*
[root@rhel9 ~]# dnf update ipa-*
WarningWhen upgrading multiple Identity Management (IdM) servers, wait at least 10 minutes between each upgrade.
When two or more servers are upgraded simultaneously or with only short intervals between the upgrades, there is not enough time to replicate the post-upgrade data changes throughout the topology, which can result in conflicting replication events.
On rhel10.example.com
:
- Install the latest version of Red Hat Enterprise Linux on the system. For more information, see Interactively installing RHEL from installation media.
-
Ensure the system is an IdM client enrolled into the domain for which
rhel9.example.com
IdM server is authoritative. For more information, see Installing an IdM client: Basic scenario. - Ensure the system meets the requirements for IdM server installation. See Preparing the system for IdM server installation.
Ensure you know the time server
rhel9.example.com
is synchronized with:Copy to Clipboard Copied! Toggle word wrap Toggle overflow ntpstat
[root@rhel9 ~]# ntpstat synchronised to NTP server (ntp.example.com) at stratum 3 time correct to within 42 ms polling server every 1024 s
- Ensure the system is authorized for the installation of an IdM replica. See Authorizing the installation of a replica on an IdM client.
Update the ipa-* packages to their latest version:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow dnf update ipa-*
[root@rhel9 ~]# dnf update ipa-*
Additional resources
To decide which server roles you want to install on the new IdM primary server,
rhel10.example.com
, see the following links:- For details on the CA server role in IdM, see Planning your CA services.
- For details on the DNS server role in IdM, see Planning your DNS services and host names.
- For details on integration based on cross-forest trust between an IdM and Active Directory (AD), see Planning a cross-forest trust between IdM and AD.
- To be able to install specific server roles for IdM in RHEL 10, you need to download packages from specific IdM repositories: Installing packages required for an IdM server.
- To upgrade a system from RHEL 9 to RHEL 10, see Upgrading from RHEL 9 to RHEL 10.
1.2. Installing the RHEL 10 replica
List which server roles are present in your RHEL 9 environment:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa server-role-find --status enabled --server rhel9.example.com
[root@rhel9 ~]# ipa server-role-find --status enabled --server rhel9.example.com ---------------------- 3 server roles matched ---------------------- Server name: rhel9.example.com Role name: CA server Role status: enabled Server name: rhel9.example.com Role name: DNS server Role status: enabled [... output truncated ...]
Optional: If you want to use the same per-server forwarders for
rhel10.example.com
thatrhel9.example.com
is using, view the per-server forwarders forrhel9.example.com
:Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa dnsserver-show rhel9.example.com
[root@rhel9 ~]# ipa dnsserver-show rhel9.example.com ----------------------------- 1 DNS server matched ----------------------------- Server name: rhel9.example.com SOA mname: rhel9.example.com. Forwarders: 192.0.2.20 Forward policy: only -------------------------------------------------- Number of entries returned 1 --------------------------------------------------
- Review the replication agreements topology using the steps in either Viewing replication topology using the WebUI or Viewing topology suffixes using the CLI and Viewing topology segments using the CLI.
Install the IdM server software on
rhel10.example.com
to configure it as a replica of the RHEL 9 IdM server, including all the server roles present onrhel9.example.com
. To install the roles from the example above, use these options with theipa-replica-install
command:-
--setup-ca
to set up the Certificate System component --setup-dns
and--forwarder
to configure an integrated DNS server and set a per-server forwarder to take care of DNS queries that go outside the IdM domainNoteAdditionally, if your IdM deployment is in a trust relationship with {AD} (AD), add the
--setup-adtrust
option to theipa-replica-install
command to configure AD trust capability onrhel10.example.com
.--ntp-server
to specify an NTP server or--ntp-pool
to specify a pool of NTP serversTo set up an IdM server with the IP address of 192.0.2.1 that uses a per-server forwarder with the IP address of 192.0.2.20 and synchronizes with the
ntp.example.com
NTP server:Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa-replica-install --setup-ca --ip-address 192.0.2.1 --setup-dns --forwarder 192.0.2.20 --ntp-server ntp.example.com
[root@rhel10 ~]# ipa-replica-install --setup-ca --ip-address 192.0.2.1 --setup-dns --forwarder 192.0.2.20 --ntp-server ntp.example.com
You do not need to specify the RHEL 9 IdM server itself because if DNS is working correctly,
rhel10.example.com
will find it using DNS autodiscovery.
-
-
Optional: Add an
_ntp._udp
service (SRV) record for your externalNTP
time server to the DNS of the newly-installed IdM server, rhel10.example.com. The presence of the SRV record for the time server in IdM DNS ensures that future RHEL 10 replica and client installations are automatically configured to synchronize with the time server used by rhel10.example.com. This is becauseipa-client-install
looks for the_ntp._udp
DNS entry unless--ntp-server
or--ntp-pool
options are provided on the install command-line interface (CLI). - Create any replication agreements needed to re-create the previous topology using the steps in Setting up replication between two servers using the Web UI or Setting up replication between two servers using the CLI.
Verification
Verify that the IdM services are running on
rhel10.example.com
:Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipactl status
[root@rhel10 ~]# ipactl status Directory Service: RUNNING [... output truncated ...] ipa: INFO: The ipactl command was successful
Verify that server roles for
rhel10.example.com
are the same as forrhel9.example.com
:Copy to Clipboard Copied! Toggle word wrap Toggle overflow kinit admin ipa server-role-find --status enabled --server rhel10.example.com
[root@rhel10 ~]# kinit admin [root@rhel10 ~]# ipa server-role-find --status enabled --server rhel10.example.com ---------------------- 2 server roles matched ---------------------- Server name: rhel10.example.com Role name: CA server Role status: enabled Server name: rhel10.example.com Role name: DNS server Role status: enabled
Optional: Display details about the replication agreement between
rhel9.example.com
andrhel10.example.com
:Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa-csreplica-manage list --verbose rhel10.example.com
[root@rhel10 ~]# ipa-csreplica-manage list --verbose rhel10.example.com Directory Manager password: rhel9.example.com last init status: None last init ended: 1970-01-01 00:00:00+00:00 last update status: Error (0) Replica acquired successfully: Incremental update succeeded last update ended: 2019-02-13 13:55:13+00:00
Optional: If your IdM deployment is in a trust relationship with AD, verify that it is working:
- Verify the Kerberos configuration
Attempt to resolve an AD user on
rhel10.example.com
:Copy to Clipboard Copied! Toggle word wrap Toggle overflow id aduser@ad.domain
[root@rhel10 ~]# id aduser@ad.domain
Verify that
rhel10.example.com
is synchronized with theNTP
server:Copy to Clipboard Copied! Toggle word wrap Toggle overflow chronyc tracking
[root@rhel9 ~]# chronyc tracking Reference ID : CB00710F (ntp.example.com) Stratum : 3 Ref time (UTC) : Wed Feb 16 09:49:17 2022 [... output truncated ...]
Additional resources
1.3. Assigning the CA renewal server role to the RHEL 10 IdM server
If your IdM deployment uses an embedded certificate authority (CA), assign the CA renewal server role to the Red Hat Enterprise Linux (RHEL) 10 IdM server.
On rhel10.example.com
, configure rhel10.example.com
as the new CA renewal server:
Configure
rhel10.example.com
to handle CA subsystem certificate renewal:Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa config-mod --ca-renewal-master-server rhel10.example.com
[root@rhel10 ~]# ipa config-mod --ca-renewal-master-server rhel10.example.com ... IPA masters: rhel9.example.com, rhel10.example.com IPA CA servers: rhel9.example.com, rhel10.example.com IPA CA renewal master: rhel10.example.com
The output confirms that the update was successful.
On
rhel10.example.com
, enable the certificate updater task:-
Open the
/etc/pki/pki-tomcat/ca/CS.cfg
configuration file for editing. -
Remove the
ca.certStatusUpdateInterval
entry, or set it to the desired interval in seconds. The default value is600
. -
Save and close the
/etc/pki/pki-tomcat/ca/CS.cfg
configuration file. Restart IdM services:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipactl restart
[user@rhel10 ~]$ ipactl restart
-
Open the
On
rhel9.example.com
, disable the certificate updater task:-
Open the
/etc/pki/pki-tomcat/ca/CS.cfg
configuration file for editing. Change
ca.certStatusUpdateInterval
to0
, or add the following entry if it does not exist:Copy to Clipboard Copied! Toggle word wrap Toggle overflow ca.certStatusUpdateInterval=0
ca.certStatusUpdateInterval=0
-
Save and close the
/etc/pki/pki-tomcat/ca/CS.cfg
configuration file. Restart IdM services:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipactl restart
[user@rhel9 ~]$ ipactl restart
-
Open the
1.4. Stopping CRL generation on an IdM server
To stop generating the Certificate Revocation List (CRL) on the IdM CRL publisher server, use the ipa-crlgen-manage
command. Before you disable the generation, verify that the server really generates CRL. You can then disable it.
Prerequisites
- You must be logged in as root.
Procedure
Check if your server is generating the CRL:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa-crlgen-manage status
[root@server ~]# ipa-crlgen-manage status CRL generation: enabled Last CRL update: 2019-10-31 12:00:00 Last CRL Number: 6 The ipa-crlgen-manage command was successful
Stop generating the CRL on the server:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa-crlgen-manage disable
[root@server ~]# ipa-crlgen-manage disable Stopping pki-tomcatd Editing /var/lib/pki/pki-tomcat/conf/ca/CS.cfg Starting pki-tomcatd Editing /etc/httpd/conf.d/ipa-pki-proxy.conf Restarting httpd CRL generation disabled on the local host. Please make sure to configure CRL generation on another master with ipa-crlgen-manage enable. The ipa-crlgen-manage command was successful
Check if the server stopped generating CRL:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa-crlgen-manage status
[root@server ~]# ipa-crlgen-manage status
The server stopped generating the CRL. The next step is to enable CRL generation on the IdM replica.
1.5. Starting CRL generation on the new RHEL 10 IdM CA server
If your IdM deployment uses an embedded certificate authority (CA), start Certificate Revocation List (CRL) generation on the new Red Hat Enterprise Linux (RHEL) 10 IdM CA server.
Prerequisites
- You must be logged in as root on the rhel10.example.com machine.
Procedure
To start generating the CRL on rhel10.example.com, use the
ipa-crlgen-manage enable
command:Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa-crlgen-manage enable
[root@rhel10 ~]# ipa-crlgen-manage enable Stopping pki-tomcatd Editing /var/lib/pki/pki-tomcat/conf/ca/CS.cfg Starting pki-tomcatd Editing /etc/httpd/conf.d/ipa-pki-proxy.conf Restarting httpd Forcing CRL update CRL generation enabled on the local host. Please make sure to have only a single CRL generation master. The ipa-crlgen-manage command was successful
Verification
To check if CRL generation is enabled, use the
ipa-crlgen-manage status
command:Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa-crlgen-manage status
[root@rhel10 ~]# ipa-crlgen-manage status CRL generation: enabled Last CRL update: 2021-10-31 12:10:00 Last CRL Number: 7 The ipa-crlgen-manage command was successful
1.6. Stopping and decommissioning the RHEL 9 server
Make sure that all data, including the latest changes, have been correctly migrated from
rhel9.example.com
torhel10.example.com
. For example:Add a new user on
rhel9.example.com
:Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa user-add random_user
[root@rhel9 ~]# ipa user-add random_user First name: random Last name: user
Check that the user has been replicated to
rhel10.example.com
:Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa user-find random_user
[root@rhel10 ~]# ipa user-find random_user -------------- 1 user matched -------------- User login: random_user First name: random Last name: user
Ensure that a Distributed Numeric Assignment (DNA) ID range is allocated to
rhel10.example.com
. Use one of the following methods:Activate the DNA plug-in on
rhel10.example.com
directly by creating another test user:Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa user-add another_random_user
[root@rhel10 ~]# ipa user-add another_random_user First name: another Last name: random_user
Assign a specific DNA ID range to
rhel10.example.com
:On
rhel9.example.com
, display the IdM ID range:Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa idrange-find
[root@rhel9 ~]# ipa idrange-find ---------------- 3 ranges matched ---------------- Range name: EXAMPLE.COM_id_range First Posix ID of the range: 196600000 Number of IDs in the range: 200000 First RID of the corresponding RID range: 1000 First RID of the secondary RID range: 100000000 Range type: local domain range
On
rhel9.example.com
, display the allocated DNA ID ranges:Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa-replica-manage dnarange-show
[root@rhel9 ~]# ipa-replica-manage dnarange-show rhel9.example.com: 196600026-196799999 rhel10.example.com: No range set
Reduce the DNA ID range allocated to
rhel9.example.com
so that a section becomes available torhel10.example.com
:Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa-replica-manage dnarange-set rhel9.example.com 196600026-196699999
[root@rhel9 ~]# ipa-replica-manage dnarange-set rhel9.example.com 196600026-196699999
Assign the remaining part of the IdM ID range to
rhel10.example.com
:Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa-replica-manage dnarange-set rhel10.example.com 196700000-196799999
[root@rhel9 ~]# ipa-replica-manage dnarange-set rhel10.example.com 196700000-196799999
Stop all IdM services on
rhel9.example.com
to force domain discovery to the newrhel10.example.com
server.Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipactl stop
[root@rhel9 ~]# ipactl stop Stopping CA Service Stopping pki-ca: [ OK ] Stopping HTTP Service Stopping httpd: [ OK ] Stopping MEMCACHE Service Stopping ipa_memcached: [ OK ] Stopping DNS Service Stopping named: [ OK ] Stopping KPASSWD Service Stopping Kerberos 5 Admin Server: [ OK ] Stopping KDC Service Stopping Kerberos 5 KDC: [ OK ] Stopping Directory Service Shutting down dirsrv: EXAMPLE-COM... [ OK ] PKI-IPA... [ OK ]
After this, the
ipa
utility will contact the new server through a remote procedure call (RPC).- Remove the RHEL 9 server from the topology by executing the removal commands on the RHEL 10 server. For details, see Uninstalling an IdM server.