Blame roles/ipaserver/README.md

Packit Service 0a38ef
ipaserver role
Packit Service 0a38ef
==============
Packit Service 0a38ef
Packit Service 0a38ef
Description
Packit Service 0a38ef
-----------
Packit Service 0a38ef
Packit Service 0a38ef
This role allows to configure and IPA server.
Packit Service 0a38ef
Packit Service 0a38ef
**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 Service 0a38ef
Packit Service 0a38ef
Packit Service 0a38ef
Features
Packit Service 0a38ef
--------
Packit Service 0a38ef
* Server deployment
Packit Service 0a38ef
Packit Service 0a38ef
Packit Service 0a38ef
Supported FreeIPA Versions
Packit Service 0a38ef
--------------------------
Packit Service 0a38ef
Packit Service 0a38ef
FreeIPA versions 4.5 and up are supported by the server role.
Packit Service 0a38ef
Packit Service 0a38ef
Packit Service 0a38ef
Supported Distributions
Packit Service 0a38ef
-----------------------
Packit Service 0a38ef
Packit Service 0a38ef
* RHEL/CentOS 7.6+
Packit Service 0a38ef
* Fedora 26+
Packit Service 0a38ef
* Ubuntu
Packit Service 0a38ef
Packit Service 0a38ef
Packit Service 0a38ef
Requirements
Packit Service 0a38ef
------------
Packit Service 0a38ef
Packit Service 0a38ef
**Controller**
Packit Service 0a38ef
* Ansible version: 2.8+
Packit Service 0a38ef
Packit Service 0a38ef
**Node**
Packit Service 0a38ef
* Supported FreeIPA version (see above)
Packit Service 0a38ef
* Supported distribution (needed for package installation only, see above)
Packit Service 0a38ef
Packit Service 0a38ef
Packit Service 0a38ef
Limitations
Packit Service 0a38ef
-----------
Packit Service 0a38ef
Packit Service 0a38ef
**External signed CA**
Packit Service 0a38ef
External signed CA is now supported. But the currently needed two step process is an issue for the processing in a simple playbook.
Packit Service 0a38ef
Packit Service 0a38ef
Work is planned to have a new method to handle CSR for external signed CAs in a separate step before starting the server installation.
Packit Service 0a38ef
Packit Service 0a38ef
Packit Service 0a38ef
Usage
Packit Service 0a38ef
=====
Packit Service 0a38ef
Packit Service 0a38ef
Example inventory file with fixed domain and realm, setting up of the DNS server and using forwarders from /etc/resolv.conf:
Packit Service 0a38ef
Packit Service 0a38ef
```ini
Packit Service 0a38ef
[ipaserver]
Packit Service 0a38ef
ipaserver2.example.com
Packit Service 0a38ef
Packit Service 0a38ef
[ipaserver:vars]
Packit Service 0a38ef
ipaserver_domain=example.com
Packit Service 0a38ef
ipaserver_realm=EXAMPLE.COM
Packit Service 0a38ef
ipaserver_setup_dns=yes
Packit Service 0a38ef
ipaserver_auto_forwarders=yes
Packit Service 0a38ef
```
Packit Service 0a38ef
Packit Service 0a38ef
Example playbook to setup the IPA server using admin and dirman passwords from an [Ansible Vault](http://docs.ansible.com/ansible/latest/playbooks_vault.html) file:
Packit Service 0a38ef
Packit Service 0a38ef
```yaml
Packit Service 0a38ef
---
Packit Service 0a38ef
- name: Playbook to configure IPA server
Packit Service 0a38ef
  hosts: ipaserver
Packit Service 0a38ef
  become: true
Packit Service 0a38ef
  vars_files:
Packit Service 0a38ef
  - playbook_sensitive_data.yml
Packit Service 0a38ef
Packit Service 0a38ef
  roles:
Packit Service 0a38ef
  - role: ipaserver
Packit Service 0a38ef
    state: present
Packit Service 0a38ef
```
Packit Service 0a38ef
Packit Service 0a38ef
Example playbook to unconfigure the IPA client(s) using principal and password from inventory file:
Packit Service 0a38ef
Packit Service 0a38ef
```yaml
Packit Service 0a38ef
---
Packit Service 0a38ef
- name: Playbook to unconfigure IPA server
Packit Service 0a38ef
  hosts: ipaserver
Packit Service 0a38ef
  become: true
Packit Service 0a38ef
Packit Service 0a38ef
  roles:
Packit Service 0a38ef
  - role: ipaserver
Packit Service 0a38ef
    state: absent
Packit Service 0a38ef
```
Packit Service 0a38ef
Packit Service 0a38ef
Example inventory file with fixed domain, realm, admin and dirman passwords:
Packit Service 0a38ef
Packit Service 0a38ef
```ini
Packit Service 0a38ef
[ipaserver]
Packit Service 0a38ef
ipaserver.example.com
Packit Service 0a38ef
Packit Service 0a38ef
[ipaserver:vars]
Packit Service 0a38ef
ipaserver_domain=example.com
Packit Service 0a38ef
ipaserver_realm=EXAMPLE.COM
Packit Service 0a38ef
ipaadmin_password=MySecretPassword123
Packit Service 0a38ef
ipadm_password=MySecretPassword234
Packit Service 0a38ef
```
Packit Service 0a38ef
Packit Service 0a38ef
Example playbook to setup the IPA server using admin and dirman passwords from inventory file:
Packit Service 0a38ef
Packit Service 0a38ef
```yaml
Packit Service 0a38ef
---
Packit Service 0a38ef
- name: Playbook to configure IPA server
Packit Service 0a38ef
  hosts: ipaserver
Packit Service 0a38ef
  become: true
Packit Service 0a38ef
Packit Service 0a38ef
  roles:
Packit Service 0a38ef
  - role: ipaserver
Packit Service 0a38ef
    state: present
Packit Service 0a38ef
```
Packit Service 0a38ef
Packit Service 0a38ef
Example playbook to setup the IPA primary with external signed CA using the previous inventory file:
Packit Service 0a38ef
Packit Service 0a38ef
Server installation step 1: Generate CSR, copy to controller as `<ipaserver hostname>-ipa.csr`
Packit Service 0a38ef
Packit Service 0a38ef
```yaml
Packit Service 0a38ef
---
Packit Service 0a38ef
- name: Playbook to configure IPA server step1
Packit Service 0a38ef
  hosts: ipaserver
Packit Service 0a38ef
  become: true
Packit Service 0a38ef
  vars:
Packit Service 0a38ef
    ipaserver_external_ca: yes
Packit Service 0a38ef
Packit Service 0a38ef
  roles:
Packit Service 0a38ef
  - role: ipaserver
Packit Service 0a38ef
    state: present
Packit Service 0a38ef
Packit Service 0a38ef
  post_tasks:
Packit Service 0a38ef
  - name: Copy CSR /root/ipa.csr from node to "{{ groups.ipaserver[0] + '-ipa.csr' }}"
Packit Service 0a38ef
    fetch:
Packit Service 0a38ef
      src: /root/ipa.csr
Packit Service 0a38ef
      dest: "{{ groups.ipaserver[0] + '-ipa.csr' }}"
Packit Service 0a38ef
      flat: yes
Packit Service 0a38ef
```
Packit Service 0a38ef
Packit Service 0a38ef
Sign with CA: This is up to you
Packit Service 0a38ef
Packit Service 0a38ef
Server installation step 2: Copy `<ipaserver hostname>-chain.crt` to the IPA server and continue with installation of the primary.
Packit Service 0a38ef
Packit Service 0a38ef
```yaml
Packit Service 0a38ef
---
Packit Service 0a38ef
- name: Playbook to configure IPA server step3
Packit Service 0a38ef
  hosts: ipaserver
Packit Service 0a38ef
  become: true
Packit Service 0a38ef
  vars:
Packit Service 0a38ef
    ipaserver_external_cert_files: "/root/chain.crt"
Packit Service 0a38ef
Packit Service 0a38ef
  pre_tasks:
Packit Service 0a38ef
  - name: Copy "{{ groups.ipaserver[0] + '-chain.crt' }}" to /root/chain.crt on node
Packit Service 0a38ef
    copy:
Packit Service 0a38ef
      src: "{{ groups.ipaserver[0] + '-chain.crt' }}"
Packit Service 0a38ef
      dest: "/root/chain.crt"
Packit Service 0a38ef
      force: yes
Packit Service 0a38ef
Packit Service 0a38ef
  roles:
Packit Service 0a38ef
  - role: ipaserver
Packit Service 0a38ef
    state: present
Packit Service 0a38ef
```
Packit Service 0a38ef
Packit Service 0a38ef
The files can also be copied automatically: Set `ipaserver_copy_csr_to_controller` to true in the server installation step 1 and set `ipaserver_external_cert_files_from_controller` to point to the `chain.crt` file in the server installation step 2.
Packit Service 0a38ef
Packit Service 0a38ef
Packit Service 0a38ef
Playbooks
Packit Service 0a38ef
=========
Packit Service 0a38ef
Packit Service 0a38ef
The playbooks needed to deploy or undeploy a server are part of the repository in the playbooks folder. There are also playbooks to deploy and undeploy clusters.
Packit Service 0a38ef
```
Packit Service 0a38ef
install-server.yml
Packit Service 0a38ef
uninstall-server.yml
Packit Service 0a38ef
```
Packit Service 0a38ef
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 Service 0a38ef
Packit Service 0a38ef
Packit Service 0a38ef
How to setup a server
Packit Service 0a38ef
---------------------
Packit Service 0a38ef
Packit Service 0a38ef
```bash
Packit Service 0a38ef
ansible-playbook -v -i inventory/hosts install-server.yml
Packit Service 0a38ef
```
Packit Service 0a38ef
This will deploy the server defined in the inventory file.
Packit Service 0a38ef
Packit Service 0a38ef
Packit Service 0a38ef
Variables
Packit Service 0a38ef
=========
Packit Service 0a38ef
Packit Service 0a38ef
Base Variables
Packit Service 0a38ef
--------------
Packit Service 0a38ef
Packit Service 0a38ef
Variable | Description | Required
Packit Service 0a38ef
-------- | ----------- | --------
Packit Service 0a38ef
`ipaserver` | This group with the single IPA server full qualified hostname. (list of strings) | yes
Packit Service 0a38ef
`ipadm_password` | The password for the  Directory Manager. (string) | no
Packit Service 0a38ef
`ipaadmin_password` | The password for the IPA admin user (string) | no
Packit Service 0a38ef
`ipaserver_ip_addresses` | The list of master server IP addresses. (list of strings) | no
Packit Service 0a38ef
`ipaserver_domain` | The primary DNS domain of an existing IPA deployment. (string) | no
Packit Service 0a38ef
`ipaserver_realm` | The Kerberos realm of an existing IPA deployment. (string) | no
Packit Service 0a38ef
`ipaserver_hostname` | Fully qualified name of the server. (string) | no
Packit Service 0a38ef
`ipaserver_no_host_dns` | Do not use DNS for hostname lookup during installation. (bool, default: false) | no
Packit Service a166ed
`ipaserver_mem_check` | Checking for minimum required memory for the deployment. This is only usable with recent FreeIPA versions (4.8.10+) else ignored. (bool, default: yes) | no
Packit Service 0a38ef
Packit Service 0a38ef
Server Variables
Packit Service 0a38ef
----------------
Packit Service 0a38ef
Packit Service 0a38ef
Variable | Description | Required
Packit Service 0a38ef
-------- | ----------- | --------
Packit Service 0a38ef
`ipaserver_setup_adtrust` | Configure AD Trust capability. (bool, default: false) | no
Packit Service 0a38ef
`ipaserver_setup_kra` | Install and configure a KRA on this server. (bool, default: false) | no
Packit Service 0a38ef
`ipaserver_setup_dns` | Configure an integrated DNS server, create DNS zone specified by domain. (bool, default: false) | no
Packit Service 0a38ef
`ipaserver_idstart` | The starting user and group id number. (integer, default: random) | no
Packit Service 0a38ef
`ipaserver_idmax` | The maximum user and group id number. (integer, default: idstart+199999) | no
Packit Service 0a38ef
`ipaserver_no_hbac_allow` | Do not install allow_all HBAC rule. (bool) | no
Packit Service 0a38ef
`ipaserver_no_ui_redirect` | Do not automatically redirect to the Web UI. (bool) | no
Packit Service 0a38ef
`ipaserver_dirsrv_config_file` | The path to LDIF file that will be used to modify configuration of dse.ldif during installation. (string) | no
Packit Service 0a38ef
`ipaserver_pki_config_override` | Path to ini file with config overrides. This is only usable with recent FreeIPA versions. (string) | no
Packit Service 0a38ef
Packit Service 0a38ef
SSL certificate Variables
Packit Service 0a38ef
-------------------------
Packit Service 0a38ef
Packit Service 0a38ef
Variable | Description | Required
Packit Service 0a38ef
-------- | ----------- | --------
Packit Service 0a38ef
`ipaserver_dirsrv_cert_files` | Files containing the Directory Server SSL certificate and private keys. (list of strings) | no
Packit Service 0a38ef
`ipaserver_http_cert_files` | File containing the Apache Server SSL certificate and private key. (list of string) | no
Packit Service 0a38ef
`ipaserver_pkinit_cert_files` | File containing the Kerberos KDC SSL certificate and private key. (list of string) | no
Packit Service 0a38ef
`ipaserver_dirsrv_pin` | The password to unlock the Directory Server private key. (string) | no
Packit Service 0a38ef
`ipaserver_http_pin` | The password to unlock the Apache Server private key. (string) | no
Packit Service 0a38ef
`ipaserver_pkinit_pin` | The password to unlock the Kerberos KDC private key. (string) | no
Packit Service 0a38ef
`ipaserver_dirsrv_cert_name` | Name of the Directory Server SSL certificate to install. (string) | no
Packit Service 0a38ef
`ipaserver_http_cert_name` | Name of the Apache Server SSL certificate to install. (string) | no
Packit Service 0a38ef
`ipaserver_pkinit_cert_name` | Name of the Kerberos KDC SSL certificate to install. (string) | no
Packit Service 0a38ef
`ipaserver_no_pkinit` | Disable pkinit setup steps (boolean) | no
Packit Service 0a38ef
Packit Service 0a38ef
NOTE: If one of the `ipaserver_http_cert_files` or `ipaserver_pkinit_cert_files` is specified, then both are required, so declaring only one of them will raise an error. Additionally, one of `ipaserver_pkinit_cert_files` or `ipaserver_no_pkinit` must be provided as well.
Packit Service 0a38ef
Packit Service 0a38ef
Client Variables
Packit Service 0a38ef
----------------
Packit Service 0a38ef
Packit Service 0a38ef
Variable | Description | Required
Packit Service 0a38ef
-------- | ----------- | --------
Packit Service 0a38ef
`ipaclient_ntp_servers` | The list defines the NTP servers to be used. | no
Packit Service 0a38ef
`ipaclient_ntp_pool` | The string value defines the ntp server pool to be used. | no
Packit Service 0a38ef
`ipaclient_no_ntp` | The bool value defines if NTP will not be configured and enabled. `ipaclient_no_ntp` defaults to `no`. | no
Packit Service 0a38ef
`ipaclient_ssh_trust_dns` | The bool value defines if OpenSSH client will be configured to trust DNS SSHFP records.  `ipaclient_ssh_trust_dns` defaults to `no`. | no
Packit Service 0a38ef
`ipaclient_no_ssh` | The bool value defines if OpenSSH client will be configured. `ipaclient_no_ssh` defaults to `no`. | no
Packit Service 0a38ef
`ipaclient_no_sshd` | The bool value defines if OpenSSH server will be configured. `ipaclient_no_sshd` defaults to `no`. | no
Packit Service 0a38ef
`ipaclient_no_sudo` | The bool value defines if SSSD will be configured as a data source for sudo. `ipaclient_no_sudo` defaults to `no`. | no
Packit Service 0a38ef
`ipaclient_no_dns_sshfp` | The bool value defines if DNS SSHFP records will not be created automatically. `ipaclient_no_dns_sshfp` defaults to `no`. | no
Packit Service 0a38ef
Packit Service 0a38ef
Certificate system Variables
Packit Service 0a38ef
----------------------------
Packit Service 0a38ef
Packit Service 0a38ef
Variable | Description | Required
Packit Service 0a38ef
-------- | ----------- | --------
Packit Service 0a38ef
`ipaserver_external_ca` | Generate a CSR for the IPA CA certificate to be signed by an external CA. (bool, default: false) | no
Packit Service 0a38ef
`ipaserver_external_ca_type` | Type of the external CA. (choice: generic,ms-cs) | no
Packit Service 0a38ef
`ipaserver_external_ca_profile` | Specify the certificate profile/template to use at the external CA. (string) | no
Packit Service 0a38ef
`ipaserver_external_cert_files` | Files containing the IPA CA certificates and the external CA certificate chains (list of string) | no
Packit Service 0a38ef
`ipaserver_subject_base` | The certificate subject base (default O=<realm-name>). RDNs are in LDAP order (most specific RDN first). (string) | no
Packit Service 0a38ef
`ipaserver_ca_subject` | The CA certificate subject DN (default CN=Certificate Authority,O=<realm-name>). RDNs are in LDAP order (most specific RDN first). (string) | no
Packit Service 0a38ef
`ipaserver_ca_signing_algorithm` | Signing algorithm of the IPA CA certificate. (choice: SHA1withRSA,SHA256withRSA,SHA512withRSA) | no
Packit Service 0a38ef
Packit Service 0a38ef
DNS Variables
Packit Service 0a38ef
-------------
Packit Service 0a38ef
Packit Service 0a38ef
Variable | Description | Required
Packit Service 0a38ef
-------- | ----------- | --------
Packit Service 0a38ef
`ipaserver_allow_zone_overlap` | Allow creation of (reverse) zone even if the zone is already resolvable. (bool, default: false) | no
Packit Service 0a38ef
`ipaserver_reverse_zones` | The reverse DNS zones to use. (list of strings) | no
Packit Service 0a38ef
`ipaserver_no_reverse` | Do not create reverse DNS zone. (bool, default: false) | no
Packit Service 0a38ef
`ipaserver_auto_reverse` | Try to resolve reverse records and reverse zones for server IP addresses. (bool, default: false) | no
Packit Service 0a38ef
`ipaserver_zonemgr` | The e-mail address of the DNS zone manager. (string, default: hostmaster@DOMAIN.) | no
Packit Service 0a38ef
`ipaserver_forwarders` | Add DNS forwarders to the DNS configuration. (list of strings) | no
Packit Service 0a38ef
`ipaserver_no_forwarders` | Do not add any DNS forwarders. Root DNS servers will be used instead. (bool, default: false) | no
Packit Service 0a38ef
`ipaserver_auto_forwarders` | Add DNS forwarders configured in /etc/resolv.conf to the list of forwarders used by IPA DNS. (bool, default: false) | no
Packit Service 0a38ef
`ipaserver_forward_policy` | DNS forwarding policy for global forwarders specified using other options. (choice: first|only) | no
Packit Service 0a38ef
`ipaserver_no_dnssec_validation` | Disable DNSSEC validation on this server. (bool, default: false) | no
Packit Service 0a38ef
Packit Service 0a38ef
AD trust Variables
Packit Service 0a38ef
------------------
Packit Service 0a38ef
Packit Service 0a38ef
Variable | Description | Required
Packit Service 0a38ef
-------- | ----------- | --------
Packit Service 0a38ef
`ipaserver_enable_compat`| Enables support for trusted domains users for old clients through Schema Compatibility plugin. (bool, default: false) | no
Packit Service 0a38ef
`ipaserver_netbios_name` | The NetBIOS name for the IPA domain. (string) | no
Packit Service 0a38ef
`ipaserver_rid_base` | First RID value of the local domain. (integer) | no
Packit Service 0a38ef
`ipaserver_secondary_rid_base` | Start value of the secondary RID range. (integer) | no
Packit Service 0a38ef
Packit Service 0a38ef
Special Variables
Packit Service 0a38ef
-----------------
Packit Service 0a38ef
Packit Service 0a38ef
Variable | Description | Required
Packit Service 0a38ef
-------- | ----------- | --------
Packit Service 0a38ef
`ipaserver_install_packages` | The bool value defines if the needed packages are installed on the node. (bool, default: true) | no
Packit Service 0a38ef
`ipaserver_setup_firewalld` | The value defines if the needed services will automatically be opened in the firewall managed by firewalld. (bool, default: true) | no
Packit Service a166ed
`ipaserver_firewalld_zone` | The value defines the firewall zone that will be used. This needs to be an existing runtime and permanent zone. (string) | no
Packit Service 0a38ef
`ipaserver_external_cert_files_from_controller` | Files containing the IPA CA certificates and the external CA certificate chains on the controller that will be copied to the ipaserver host to `/root` folder. (list of string) | no
Packit Service 0a38ef
`ipaserver_copy_csr_to_controller` | Copy the generated CSR from the ipaserver to the controller as `"{{ inventory_hostname }}-ipa.csr"`. (bool) | no
Packit Service 0a38ef
Packit Service 0a38ef
Authors
Packit Service 0a38ef
=======
Packit Service 0a38ef
Packit Service 0a38ef
Thomas Woerner