Blame roles/ipareplica/README.md

Packit 8cb997
ipareplica role
Packit 8cb997
==============
Packit 8cb997
Packit 8cb997
Description
Packit 8cb997
-----------
Packit 8cb997
Packit 8cb997
This role allows to configure a new IPA server that is a replica of the server. Once it has been created it is an exact copy of the original IPA server and is an equal  master.
Packit 8cb997
Changes made to any master are automatically replicated to other masters.
Packit 8cb997
Packit 8cb997
This can be done in different ways using auto-discovery of the servers, domain and other settings or by specifying them.
Packit 8cb997
Packit 8cb997
**Note**: The ansible playbooks and role require a configured ansible environment where the ansible nodes are reachable and are properly set up to have an IP address and a working package manager.
Packit 8cb997
Packit 8cb997
Packit 8cb997
Features
Packit 8cb997
--------
Packit 8cb997
* Replica deployment
Packit 8cb997
Packit 8cb997
Packit 8cb997
Supported FreeIPA Versions
Packit 8cb997
--------------------------
Packit 8cb997
Packit 8cb997
FreeIPA versions 4.6 and up are supported by the replica role.
Packit 8cb997
Packit 8cb997
Packit 8cb997
Supported Distributions
Packit 8cb997
-----------------------
Packit 8cb997
Packit 8cb997
* RHEL/CentOS 7.6+
Packit 8cb997
* Fedora 26+
Packit 8cb997
* Ubuntu
Packit 8cb997
Packit 8cb997
Packit 8cb997
Requirements
Packit 8cb997
------------
Packit 8cb997
Packit 8cb997
**Controller**
Packit 8cb997
* Ansible version: 2.8+
Packit 8cb997
Packit 8cb997
**Node**
Packit 8cb997
* Supported FreeIPA version (see above)
Packit 8cb997
* Supported distribution (needed for package installation only, see above)
Packit 8cb997
Packit 8cb997
Packit 8cb997
Usage
Packit 8cb997
=====
Packit 8cb997
Packit 8cb997
Example inventory file with fixed principal using auto-discovery with DNS records:
Packit 8cb997
Packit Service 0f71a7
```ini
Packit Service 0f71a7
[ipareplicas]
Packit Service 0f71a7
ipareplica1.example.com
Packit Service 0f71a7
ipareplica2.example.com
Packit Service 0f71a7
Packit Service 0f71a7
[ipareplicas:vars]
Packit Service 0f71a7
ipaadmin_principal=admin
Packit Service 0f71a7
```
Packit 8cb997
Packit 8cb997
Example playbook to setup the IPA client(s) using principal from inventory file and password from an [Ansible Vault](http://docs.ansible.com/ansible/latest/playbooks_vault.html) file:
Packit 8cb997
Packit Service 0f71a7
```yaml
Packit Service 0f71a7
---
Packit Service 0f71a7
- name: Playbook to configure IPA replicas
Packit Service 0f71a7
  hosts: ipareplicas
Packit Service 0f71a7
  become: true
Packit Service 0f71a7
  vars_files:
Packit Service 0f71a7
  - playbook_sensitive_data.yml
Packit Service 0f71a7
Packit Service 0f71a7
  roles:
Packit Service 0f71a7
  - role: ipareplica
Packit Service 0f71a7
    state: present
Packit Service 0f71a7
```
Packit 8cb997
Packit 8cb997
Example playbook to unconfigure the IPA client(s) using principal and password from inventory file:
Packit 8cb997
Packit Service 0f71a7
```yaml
Packit Service 0f71a7
---
Packit Service 0f71a7
- name: Playbook to unconfigure IPA replicas
Packit Service 0f71a7
  hosts: ipareplicas
Packit Service 0f71a7
  become: true
Packit Service 0f71a7
Packit Service 0f71a7
  roles:
Packit Service 0f71a7
  - role: ipareplica
Packit Service 0f71a7
    state: absent
Packit Service 0f71a7
```
Packit 8cb997
Packit 8cb997
Example inventory file with fixed server, principal, password and domain:
Packit 8cb997
Packit Service 0f71a7
```ini
Packit Service 0f71a7
[ipaserver]
Packit Service 0f71a7
ipaserver.example.com
Packit Service 0f71a7
Packit Service 0f71a7
[ipareplicas]
Packit Service 0f71a7
ipareplica1.example.com
Packit Service 0f71a7
ipareplica2.example.com
Packit Service 0f71a7
Packit Service 0f71a7
[ipareplicas:vars]
Packit Service 0f71a7
ipaclient_domain=example.com
Packit Service 0f71a7
ipaadmin_principal=admin
Packit Service 0f71a7
ipaadmin_password=MySecretPassword123
Packit Service 0f71a7
ipadm_password=MySecretPassword456
Packit Service 0f71a7
```
Packit 8cb997
Packit 8cb997
Example playbook to setup the IPA client(s) using principal and password from inventory file:
Packit 8cb997
Packit Service 0f71a7
```yaml
Packit Service 0f71a7
---
Packit Service 0f71a7
- name: Playbook to configure IPA replicas with username/password
Packit Service 0f71a7
  hosts: ipareplicas
Packit Service 0f71a7
  become: true
Packit 8cb997
Packit Service 0f71a7
  roles:
Packit Service 0f71a7
  - role: ipareplica
Packit Service 0f71a7
    state: present
Packit Service 0f71a7
```
Packit 8cb997
Packit 8cb997
Playbooks
Packit 8cb997
=========
Packit 8cb997
Packit 8cb997
The playbooks needed to deploy or undeploy a replica are part of the repository in the playbooks folder. There are also playbooks to deploy and undeploy clusters.
Packit 8cb997
```
Packit 8cb997
install-replica.yml
Packit 8cb997
uninstall-replica.yml
Packit 8cb997
```
Packit 8cb997
Please remember to link or copy the playbooks to the base directory of ansible-freeipa if you want to use the roles within the source archive.
Packit 8cb997
Packit 8cb997
Packit 8cb997
How to setup replicas
Packit 8cb997
---------------------
Packit 8cb997
Packit 8cb997
```bash
Packit 8cb997
ansible-playbook -v -i inventory/hosts install-replica.yml
Packit 8cb997
```
Packit 8cb997
This will deploy the replicas defined in the inventory file.
Packit 8cb997
Packit 8cb997
Packit 8cb997
Variables
Packit 8cb997
=========
Packit 8cb997
Packit 8cb997
Base Variables
Packit 8cb997
--------------
Packit 8cb997
Packit 8cb997
Variable | Description | Required
Packit 8cb997
-------- | ----------- | --------
Packit 8cb997
`ipaservers` | This group with the IPA master full qualified hostnames. (list of strings) | mostly
Packit 8cb997
`ipareplicas` | Group of IPA replica hostnames. (list of strings) | yes
Packit 8cb997
`ipaadmin_password` | The password for the IPA admin user (string) | mostly
Packit 8cb997
`ipareplica_ip_addresses` | The list of master server IP addresses. (list of strings) | no
Packit 8cb997
`ipareplica_domain` | The primary DNS domain of an existing IPA deployment. (string) | no
Packit 8cb997
`ipaserver_realm` | The Kerberos realm of an existing IPA deployment. (string) | no
Packit 8cb997
`ipaserver_hostname` | Fully qualified name of the server. (string) | no
Packit 8cb997
`ipaadmin_principal` | The authorized kerberos principal used to join the IPA realm. (string) | no
Packit 8cb997
`ipareplica_no_host_dns` | Do not use DNS for hostname lookup during installation. (bool, default: false) | no
Packit 8cb997
`ipareplica_skip_conncheck` | Skip connection check to remote master. (bool, default: false) | no
Packit 8cb997
`ipareplica_pki_config_override` | Path to ini file with config overrides. This is only usable with recent FreeIPA versions. (string) | no
Packit 8cb997
Packit 8cb997
Server Vaiables
Packit 8cb997
---------------
Packit 8cb997
Packit 8cb997
Variable | Description | Required
Packit 8cb997
-------- | ----------- | --------
Packit 8cb997
`ipadm_password` | The password for the Directory Manager. (string) | mostly
Packit 8cb997
`ipareplica_setup_adtrust` | Configure AD trust capability. (bool, default: false) | no
Packit 8cb997
`ipareplica_setup_ca` | Configure a dogtag CA. (bool, default: false) | no
Packit 8cb997
`ipareplica_setup_kra` | Configure a dogtag KRA. (bool, default: false) | no
Packit 8cb997
`ipareplica_setup_dns` | Configure bind with our zone. (bool, default: false) | no
Packit 8cb997
`ipareplica_no_pkinit` | Disables pkinit setup steps. (bool, default: false) | no
Packit 8cb997
`ipareplica_no_ui_redirect` | Do not automatically redirect to the Web UI. (bool, default: false) | no
Packit 8cb997
`ipareplica_dirsrv_config_file` | The path to LDIF file that will be used to modify configuration of dse.ldif during installation of the directory server instance. (string)| no
Packit 8cb997
Packit 8cb997
SSL certificate Variables
Packit 8cb997
-------------------------
Packit 8cb997
Packit 8cb997
Variable | Description | Required
Packit 8cb997
-------- | ----------- | --------
Packit 8cb997
`ipareplica_dirsrv_cert_files` | Files containing the Directory Server SSL certificate and private keys. (list of strings) | no
Packit 8cb997
`ipareplica_http_cert_files` | Files containing the Apache Server SSL certificate and private key. (list of string) | no
Packit 8cb997
`ipareplica_pkinit_cert_files` | Files containing the Kerberos KDC SSL certificate and private key. (list of string) | no
Packit 8cb997
`ipareplica_dirsrv_pin` | The password to unlock the Directory Server private key. (string) | no
Packit 8cb997
`ipareplica_http_pin` | The password to unlock the Apache Server private key. (string) | no
Packit 8cb997
`ipareplica_pkinit_pin` | The password to unlock the Kerberos KDC private key. (string) | no
Packit 8cb997
`ipareplica_dirsrv_cert_name` | Name of the Directory Server SSL certificate to install. (string) | no
Packit 8cb997
`ipareplica_http_cert_name` | Name of the Apache Server SSL certificate to install. (string) | no
Packit 8cb997
`ipareplica_pkinit_cert_name` | Name of the Kerberos KDC SSL certificate to install. (string) | no
Packit 8cb997
Packit 8cb997
Client Variables
Packit 8cb997
----------------
Packit 8cb997
Packit 8cb997
Variable | Description | Required
Packit 8cb997
-------- | ----------- | --------
Packit 8cb997
`ipaclient_keytab` | Path to backed up keytab from previous enrollment. (string) | no
Packit 8cb997
`ipaclient_mkhomedir` | Set to yes to configure PAM to create a users home directory if it does not exist. (string) | no
Packit 8cb997
`ipaclient_force_join` | Force client enrollment even if already enrolled. (bool, default: false) | no
Packit 8cb997
`ipaclient_ntp_servers` | The list defines the NTP servers to be used. (list of strings) | no
Packit 8cb997
`ipaclient_ntp_pool` | The string value defines the ntp server pool to be used. (string) | no
Packit 8cb997
`ipaclient_no_ntp` | The bool value defines if NTP will not be configured and enabled. (bool, default: false) | no
Packit 8cb997
`ipaclient_ssh_trust_dns` | The bool value defines if OpenSSH client will be configured to trust DNS SSHFP records. (bool, default: false) | no
Packit 8cb997
`ipaclient_no_ssh` | The bool value defines if OpenSSH client will be configured. (bool, default: false) | no
Packit 8cb997
`ipaclient_no_sshd` | The bool value defines if OpenSSH server will be configured. (bool, default: false) | no
Packit 8cb997
`ipaclient_no_sudo` | The bool value defines if SSSD will be configured as a data source for sudo. (bool, default: false) | no
Packit 8cb997
`ipaclient_no_dns_sshfp` | The bool value defines if DNS SSHFP records will not be created automatically. (bool, default: false) | no
Packit 8cb997
Packit 8cb997
Certificate system Variables
Packit 8cb997
----------------------------
Packit 8cb997
Packit 8cb997
Variable | Description | Required
Packit 8cb997
-------- | ----------- | --------
Packit 8cb997
~~`ipareplica_skip_schema_check`~~ | ~~Skip check for updated CA DS schema on the remote master. (bool, default: false)~~ | ~~no~~
Packit 8cb997
Packit 8cb997
DNS Variables
Packit 8cb997
-------------
Packit 8cb997
Packit 8cb997
Variable | Description | Required
Packit 8cb997
-------- | ----------- | --------
Packit 8cb997
`ipareplica_allow_zone_overlap` | Allow creation of (reverse) zone even if the zone is already resolvable. (bool, default: false) | no
Packit 8cb997
`ipareplica_reverse_zones` | The reverse DNS zones to use. (list of strings) | no
Packit 8cb997
`ipareplica_no_reverse` | Do not create reverse DNS zone. (bool, default: false) | no
Packit 8cb997
`ipareplica_auto_reverse` | Try to resolve reverse records and reverse zones for server IP addresses. (bool, default: false) | no
Packit 8cb997
`ipareplica_zonemgr` | The e-mail address of the DNS zone manager. (string, default: hostmaster@DOMAIN.) | no
Packit 8cb997
`ipareplica_forwarders` | Add DNS forwarders to the DNS configuration. (list of strings) | no
Packit 8cb997
`ipareplica_no_forwarders` | Do not add any DNS forwarders. Root DNS servers will be used instead. (bool, default: false) | no
Packit 8cb997
`ipareplica_auto_forwarders` | Add DNS forwarders configured in /etc/resolv.conf to the list of forwarders used by IPA DNS. (bool, default: false) | no
Packit 8cb997
`ipareplica_forward_policy` | DNS forwarding policy for global forwarders specified using other options. (choice: first,only) | no
Packit 8cb997
`ipareplica_no_dnssec_validation` | Disable DNSSEC validation on this server. (bool, default: false) | no
Packit 8cb997
Packit 8cb997
AD trust Variables
Packit 8cb997
------------------
Packit 8cb997
Packit 8cb997
Variable | Description | Required
Packit 8cb997
-------- | ----------- | --------
Packit 8cb997
~~`ipareplica_add_sids`~~ | ~~Add SIDs for existing users and groups as the final step. (bool, default: false)~~ | ~~no~~
Packit 8cb997
~~`ipareplica_add_agents`~~ | ~~Add IPA masters to a list of hosts allowed to serve information about users from trusted forests. (bool, default: false)~~ | ~~no~~
Packit 8cb997
`ipareplica_enable_compat`| Enables support for trusted domains users for old clients through Schema Compatibility plugin. (bool, default: false) | no
Packit 8cb997
`ipareplica_netbios_name` | The NetBIOS name for the IPA domain. (string) | no
Packit 8cb997
`ipareplica_rid_base` | First RID value of the local domain. (integer) | no
Packit 8cb997
`ipareplica_secondary_rid_base` | Start value of the secondary RID range. (integer) | no
Packit 8cb997
Packit 8cb997
Cluster Specific Variables
Packit 8cb997
--------------------------
Packit 8cb997
Packit 8cb997
Variable | Description | Required
Packit 8cb997
-------- | ----------- | --------
Packit 8cb997
`ipareplica_servers` | Manually override list of servers for example in a cluster environment on a per replica basis. The list of servers is normally taken from from groups.ipaserver in cluster environments. (list of strings) | no
Packit 8cb997
`ipaserver_domain` | Used if set in a cluster environment to overload `ipareplica_domain` | no
Packit 8cb997
Packit 8cb997
Special Variables
Packit 8cb997
-----------------
Packit 8cb997
Packit 8cb997
Variable | Description | Required
Packit 8cb997
-------- | ----------- | --------
Packit 8cb997
`ipareplica_install_packages` | The bool value defines if the needed packages are installed on the node. (bool, default: true) | no
Packit 8cb997
`ipareplica_setup_firewalld` | The value defines if the needed services will automatically be openen in the firewall managed by firewalld. (bool, default: true) | no
Packit 8cb997
Packit 8cb997
Packit 8cb997
Authors
Packit 8cb997
=======
Packit 8cb997
Packit 8cb997
Thomas Woerner