Pre-requisites:
- tenant admin in your tenancy
- Have Openstack Application Credentials, you can request them here EWC - How to request Openstack Application Credentials.
- Have a VM with the Openstack client as explained here EWC - OpenStack Command-Line client (don't install it in the LDAP machine!)
User procedure
- SSH into the OLD LDAP machine (your current one) and create DNS reverse zone (NAME_FROM_IP = LDAP IP or using IP range ) (https://docs.redhat.com/en/documentation/red_hat_enterprise_linux/7/html/linux_domain_identity_authentication_and_policy_guide/managing-reverse-dns-zones)
ipa dnszone-add --name-from-ip=NAME_FROM_IP
- ssh to the VM with Openstack Client and run the following commands (see EWC - OpenStack Command-Line client for more details):
- List ldap security group rule
openstack security group rule list ldap
- add port 636 TCP.749 TCP,464 UDP to ldap security group if they are missing
openstack security group rule create ldap --protocol tcp --ingress --dst-port 636 --remote-ip 0.0.0.0/0 --ethertype IPv4 openstack security group rule create ldap --protocol tcp --ingress --dst-port 749 --remote-ip 0.0.0.0/0 --ethertype IPv4 openstack security group rule create ldap --protocol udp --ingress --dst-port 464 --remote-ip 0.0.0.0/0 --ethertype IPv4
- Backup existing LDAP machine using the following documentation: EWC - How to create and restore backups from VMs
- List ldap security group rule
- If your LDAP is rocky 8 based, jump to step 7., if it is centos7 based continue the procedure normally.
- Create LDAP replica instance type to move from centos7 to rocky 8 (see MigratefromCentos7toRocky8);
- Switch IP interfaces between LDAPs (see RunworkflowtoswitchIPinterfacesbetweenLDAP);
- Check everything is fine (see Tests);
- Create LDAP replica instance type to move from rocky 8 to rocky 9 (see MigratefromRocky8toRocky9)
- Switch IP interfaces between LDAPs (see RunworkflowtoswitchIPinterfacesbetweenLDAP);
- Check everything is fine (see Tests);
- Remove old LDAPs machines to free resources (from Morpheus)
Migrate from Centos7 to Rocky 8
Creating a new rocky 8 LDAP replica
- Login to Morpheus
- Go to Provisioning → Instances and click '+ADD'
- Select the LDAP replica Instance type
- Select a new name for the VM (e.g. ldap-rocky8) and click 'Next'
- Use the following inputs for the VM and then click 'Next' until the deployment starts:
- version: 8
- plan: eo1.medium
- networks: private
- security group: ldap
Migrate from Rocky 8 to Rocky 9
Creating a new rocky 8 LDAP replica
- Login to Morpheus
- Go to Provisioning → Instances and click '+ADD'
- Select the LDAP replica Instance type
- Select a new name for the VM (e.g. ldap-rocky8) and click 'Next'
- Use the following inputs for the VM and then click 'Next' until the deployment starts:
- version: 9
- plan: eo1.medium
- networks: private
- security group: ldap
Switch IP interfaces between LDAP
- SSH In the NEW LDAP machine (LDAP replica)
- Update the IP of the NEW LDAP machine in the /etc/hosts (IP_ADDRESS ) with the IP of the OLD LDAP machine and remove the line relative to the OLD LDAP ( The one you saved before in your notes!), You will end up with:
[murdaca@ipa ~]$ cat /etc/hosts <!-- BEGIN ANSIBLE MANAGED BLOCK --> IP_ADDRESS ipa.batchpro.ewc <!-- END ANSIBLE MANAGED BLOCK -->
- Delete OLD LDAP machine DNS records (SERVER is the old LDAP machine complete domain (e.g. ldap-test-rocky.eumetsat.sandbox.ewc)
ipa-replica-manage del SERVER --force
Find the dns zone name, you have two alternatives:
You can find this information logging in Morpheus → Tools → Cypher and check the following secret → secret/ldap_domain
Use ipa command
ipa dnszone-find
- Replace the NEW LDAP machine IP with the IP of the interface of the OLD LDAP machine (HOSTED_ZONE is the output name from the previous command, IP_ADDRESS=The one you saved before in your notes!, HOSTNAME is the new LDAP machine complete domain (e.g. ldap-test-rocky.eumetsat.sandbox.ewc)
ipa dnsrecord-mod HOSTED_ZONE ipa-ca --a-rec IP_ADDRESS ipa dnsrecord-mod HOSTED_ZONE HOSTNAME --a-rec IP_ADDRESS
- Update the IP of the NEW LDAP machine in the /etc/hosts (IP_ADDRESS ) with the IP of the OLD LDAP machine and remove the line relative to the OLD LDAP ( The one you saved before in your notes!), You will end up with:
- SSH to the VM with Openstack client installed and run the following commands:
- Show information about the OLD LDAP machine (SERVER_NAME usually is ldap in the tenancies by default):
openstack server show SERVER_NAME
- Detach the interface from the OLD LDAP machine (SERVER_NAME is the name of the OLD LDAP VM from previous command, IP_ADDRESS is the private IP of the OLD LDAP VM, you listed with the previous command, SAVE IT in your notes!)
openstack server remove fixed ip SERVER_NAME IP_ADDRESS
- Switch off the NEW LDAP machine (SERVER_NAME is the name of the VM, you can find it with openstack server list )
openstack server stop SERVER_NAME
- Detach the interface from the NEW LDAP machine (SERVER_NAME is the name of the VM, IP_ADDRESS is the private IP of the NEW LDAP VM )
openstack server remove fixed ip SERVER_NAME IP_ADDRESS
- Add interface to the NEW LDAP machine with the IP of the old LDAP machine (SERVER_NAME is the name of the VM, IP_ADDRESS=The one you saved before in your notes!
openstack server add fixed ip SERVER_NAME IP_ADDRESS
- Add LDAP security group to new LDAP machine (SERVER_NAME is the name of the NEW LDAP VM)
openstack server add security group SERVER_NAME ldap
- Restart NEW LDAP machine (SERVER_NAME is the name of the new LDAP VM)
openstack server restart SERVER_NAME
- Show information about the OLD LDAP machine (SERVER_NAME usually is ldap in the tenancies by default):
- Login to Morpheus and change the value of the hostname for LDAP, going to Tools → Cypher:
- Delete the secret/ldap_hostname
- Use the '+ADD' to create a new secret
- Add KEY: secret/ldap_hostname and VALUE: new LDAP hostname (e.g. ldap.eumetsat.sandbox.ewc)
- Delete the secret/ldap_hostname
Tests
- ssh to ssh-proxy
- ssh using DNS to the new LDAP machine
- Run sudo ipactl status → verify the services are all up and running
- From Morpheus go to Provisioning → Instances and deploy a new machine to test the enrolment to LDAP DNS is working correctly.
Post Installation (optional in case of similar errors)
After the IPA Migration, especially from Centos7 to Rocky9, there might be still some possible errors, like the one below:
ipa: ERROR: Operations error: Allocation of a new value for range cn=posix ids,cn=distributed numeric assignment plugin,cn=plugins,cn=config failed! Unable to proceed.
There is a FreeIPA doc site related to this: https://www.freeipa.org/page/V3/Recover_DNA_Ranges.html
The fix for that error is the following command:
- Identify min and max range of IDs
ipa idrange-find
- Set the lower boundary to exclude every existing account (as of
ipa user-find | grep 'UID'
) - Assign the DNS range using ${min}-${max} identified in the previous steps
ipa-replica-manage dnarange-set $ldap_server ${min}-${max}
- Check the range that is used
ipa-replica-manage dnarange-show