Skip to main content
Installation

Configuration

customer.env, variable by variable. Model A's .env and Model B's customer.env share one variable set; only the connection method and a few container settings differ.

One file is filled in before install: deploy/customer.env for Model B (copied from customer.env.example), or the appliance .env for Model A (copied from appliance.env.example). render-inventory.sh renders it into an ansible inventory and names any missing required field.

The file holds clear-text passwords. chmod 600, keep it on the control node after install, never send it back, commit it or hand it to the customer.

Connection

VariableMeaningModel AModel B
ANSIBLE_CONNECTIONHow the installer reaches the targetlocalssh, or local for all-in-one
IPA_HOST_ALIASTarget label in the inventoryAnything; ignored with localTarget FQDN

Identity

Changed for every customer. Fixed after install.

VariableMeaningConstraintExample
IPA_HOSTNAMEIPA server FQDNEquals hostname -f, resolves both ways, not loopbackidm.corp.example
IPA_REALMKerberos realmUpper case, normally the domain in upper caseCORP.EXAMPLE
IPA_DOMAINIPA domainLower casecorp.example
IPA_NETBIOSNetBIOS name for AD trustUpper case, at most 15 characters, different from the AD domain'sCORP

Passwords

VariableUsed for
IPA_ADMIN_PASSWORDThe admin account: console login, kinit admin, day-to-day administration
IPA_DM_PASSWORDDirectory Manager: backup and restore, replication topology maintenance, cn=config operations. Not replicated; each IPA server has its own

Use two different strong passwords. Store them in a password manager after install; they belong on the handover checklist. A lost Directory Manager password can be reset locally as root over LDAPI (dsconf slapd-<REALM> config replace nsslapd-rootpw=...) without downtime, once per IPA server.

POSIX ID ranges

Defaults suit small and medium sites. AD users get uids and gids outside this range: the trust creates a separate <AD domain>_id_range mapped from SIDs, nothing to configure.

VariableDefaultMeaning
IPA_IDSTART60000First local user / group id
IPA_IDMAX62000Upper bound. 2000 local accounts; raise it before install, or later with ipa idrange-mod
IPA_RID_BASE63000RID base for adtrust
IPA_SECONDARY_RID_BASE70000Secondary RID base

DNS

VariableDefaultMeaning
IPA_SETUP_DNStrueBuilt-in DNS maintaining A / PTR / SRV. With false, add records to the customer DNS by hand; the other DNS variables are ignored
IPA_AUTO_FORWARDERStrueTake upstream forwarders from the target's /etc/resolv.conf. Set false in production and use IPA_FORWARDERS
IPA_FORWARDERSemptyUpstream DNS; quote and space-separate several. The installer contacts each one and fails if unreachable
IPA_FORWARD_POLICYfirstfirst: ask forwarders, recurse on failure; only: forwarders only
IPA_NO_DNSSECtrueDisable DNSSEC validation. Most internal upstreams do not sign; leaving it on floods the log with warnings
IPA_AUTO_REVERSEtrueCreate the reverse zone automatically

The three layouts and their settings: quick start.

AD trust

VariableDefaultMeaning
IPA_SETUP_ADTRUSTtrueInstall adtrust (smb, winbind), a prerequisite for any trust. The trust itself is created afterwards with ipa trust-add; see AD trust prerequisites

Leaving it true without AD costs two extra services and changes nothing else.

Host, firewall, time

VariableModel AModel BMeaning
IPA_SETUP_FIREWALLDfalsetrueNo firewalld inside a container; on bare metal let the installer open the IPA ports
IPA_NO_NTPtruefalseContainers do not run NTP; on bare metal IPA installs chrony and manages time
IPA_NO_HOST_DNStrueas neededSkip the pre-install host DNS check. Keep false on bare metal so it checks for you

Model B only

Used only with ANSIBLE_CONNECTION=ssh. The console and licence layer are pushed from the control node; paths point into the bundle.

VariableMeaning
SSH_USERLogin user on the target, NOPASSWD sudo required
SSH_HOSTTarget IP or hostname
SSH_PRIVATE_KEYPrivate key path. Empty means ssh-agent or password
SSH_COMMON_ARGSExtra ssh options such as -o StrictHostKeyChecking=no; quote if it contains spaces
IDM_LIC_SRCLicence layer source on the control node, <bundle>/license
IDM_LIC_REMOTE_SRCfalse. true is the Model A container-mount semantics
IDM_WEBUI_DIST_SRCConsole source on the control node, <bundle>/dist
IDM_WEBUI_DIST_DSTConsole directory on the target, default /opt/idmatrix/dist

For all-in-one leave every SSH_* empty and set IDM_*_SRC to the local unpack path.

Model A only

The appliance .env has a few extra entries driving the compose network:

VariableDefaultMeaning
IDM_IP192.168.58.100Container IP on the bridge; must match what IPA_HOSTNAME resolves to
IDM_SUBNET192.168.58.0/24Bridge subnet
IDM_HTTPS_PORT8443Host port mapped to container 443

The container's /etc/machine-id must persist (compose already binds it); otherwise every recreate changes the fingerprint and invalidates the licence.

On this page