Blame README-service.md

Packit Service 0a38ef
Service module
Packit Service 0a38ef
==============
Packit Service 0a38ef
Packit Service 0a38ef
Description
Packit Service 0a38ef
-----------
Packit Service 0a38ef
Packit Service 0a38ef
The service module allows to ensure presence and absence of services.
Packit Service 0a38ef
Packit Service 0a38ef
Packit Service 0a38ef
Features
Packit Service 0a38ef
--------
Packit Service 0a38ef
Packit Service 0a38ef
* Service management
Packit Service 0a38ef
Packit Service 0a38ef
Packit Service 0a38ef
Supported FreeIPA Versions
Packit Service 0a38ef
--------------------------
Packit Service 0a38ef
Packit Service 0a38ef
FreeIPA versions 4.4.0 and up are supported by the ipaservice module.
Packit Service 0a38ef
Packit Service a166ed
Some variables are only supported on newer versions of FreeIPA. Check `Variables` section for details.
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
Packit Service 0a38ef
Packit Service 0a38ef
Usage
Packit Service 0a38ef
=====
Packit Service 0a38ef
Packit Service 0a38ef
Example inventory file
Packit Service 0a38ef
Packit Service 0a38ef
```ini
Packit Service 0a38ef
[ipaserver]
Packit Service 0a38ef
ipaserver.test.local
Packit Service 0a38ef
```
Packit Service 0a38ef
Packit Service 0a38ef
Packit Service 0a38ef
Example playbook to make sure service is present:
Packit Service 0a38ef
Packit Service 0a38ef
```yaml
Packit Service 0a38ef
---
Packit Service 0a38ef
- name: Playbook to manage IPA service.
Packit Service 0a38ef
  hosts: ipaserver
Packit Service 0a38ef
  become: true
Packit Service 0a38ef
  gather_facts: false
Packit Service 0a38ef
Packit Service 0a38ef
  tasks:
Packit Service 0a38ef
  # Ensure service is present
Packit Service 0a38ef
  - ipaservice:
Packit Service 0a38ef
      ipaadmin_password: SomeADMINpassword
Packit Service 0a38ef
      name: HTTP/www.example.com
Packit Service a166ed
      certificate: |
Packit Service 0a38ef
        - MIIC/zCCAeegAwIBAgIUMNHIbn+hhrOVew/2WbkteisV29QwDQYJKoZIhvcNAQELBQAw
Packit Service 0a38ef
        DzENMAsGA1UEAwwEdGVzdDAeFw0yMDAyMDQxNDQxMDhaFw0zMDAyMDExNDQxMDhaMA8xDT
Packit Service 0a38ef
        ALBgNVBAMMBHRlc3QwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC+XVVGFYpH
Packit Service 0a38ef
        VkcDfVnNInE1Y/pFciegdzqTjMwUWlRL4Zt3u96GhaMLRbtk+OfEkzLUAhWBOwEraELJzM
Packit Service 0a38ef
        LJOMvjYF3C+TiGO7dStFLikZmccuSsSIXjnzIPwBXa8KvgRVRyGLoVvGbLJvmjfMXp0nIT
Packit Service 0a38ef
        oTx/i74KF9S++WEes9H5ErJ99CDhLKFgq0amnvsgparYXhypHaRLnikn0vQINt55YoEd1s
Packit Service 0a38ef
        4KrvEcD2VdZkIMPbLRu2zFvMprF3cjQQG4LT9ggfEXNIPZ1nQWAnAsu7OJEkNF+E4Mkmpc
Packit Service 0a38ef
        xj9aGUVt5bsq1D+Tzj3GsidSX0nSNcZ2JltXRnL/5v63g5cZyE+nAgMBAAGjUzBRMB0GA1
Packit Service 0a38ef
        UdDgQWBBRV0j7JYukuH/r/t9+QeNlRLXDlEDAfBgNVHSMEGDAWgBRV0j7JYukuH/r/t9+Q
Packit Service 0a38ef
        eNlRLXDlEDAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBCwUAA4IBAQCgVy1+1kNwHs
Packit Service 0a38ef
        5y1Zp0WjMWGCJC6/zw7FDG4OW5r2GJiCXZYdJ0UonY9ZtoVLJPrp2/DAv1m5DtnDhBYqic
Packit Service 0a38ef
        uPgLzEkOS1KdTi20Otm/J4yxLLrZC5W4x0XOeSVPXOJuQWfwQ5pPvKkn6WxYUYkGwIt1OH
Packit Service 0a38ef
        2nSMngkbami3CbSmKZOCpgQIiSlQeDJ8oGjWFMLDymYSHoVOIXHwNoooyEiaio3693l6no
Packit Service 0a38ef
        obyGv49zyCVLVR1DC7i6RJ186ql0av+D4vPoiF5mX7+sKC2E8xEj9uKQ5GTWRh59VnRBVC
Packit Service 0a38ef
        /SiMJ/H78tJnBAvoBwXxSEvj8Z3Kjm/BQqZfv4IBsA5yqV7MVq
Packit Service 0a38ef
      pac_type: PAD
Packit Service 0a38ef
      auth_ind: otp
Packit Service 0a38ef
      requires_pre_auth: false
Packit Service 0a38ef
      ok_as_delegate: false
Packit Service 0a38ef
      ok_to_auth_as_delegate: false
Packit Service a166ed
      skip_host_check: true
Packit Service 0a38ef
      force: true
Packit Service 0a38ef
```
Packit Service 0a38ef
Packit Service 0a38ef
Packit Service 0a38ef
Example playbook to make sure service is absent:
Packit Service 0a38ef
Packit Service 0a38ef
```yaml
Packit Service 0a38ef
---
Packit Service 0a38ef
- name: Playbook to manage IPA service.
Packit Service 0a38ef
  hosts: ipaserver
Packit Service 0a38ef
  become: true
Packit Service 0a38ef
  gather_facts: false
Packit Service 0a38ef
Packit Service 0a38ef
  tasks:
Packit Service 0a38ef
  # Ensure service is present
Packit Service 0a38ef
  - ipaservice:
Packit Service 0a38ef
      ipaadmin_password: SomeADMINpassword
Packit Service 0a38ef
      name: HTTP/www.example.com
Packit Service 0a38ef
      state: absent
Packit Service 0a38ef
```
Packit Service 0a38ef
Packit Service 0a38ef
Packit Service 0a38ef
Example playbook to make sure service is disabled:
Packit Service 0a38ef
Packit Service 0a38ef
```yaml
Packit Service 0a38ef
---
Packit Service 0a38ef
- name: Playbook to manage IPA service.
Packit Service 0a38ef
  hosts: ipaserver
Packit Service 0a38ef
  become: true
Packit Service 0a38ef
  gather_facts: false
Packit Service 0a38ef
Packit Service 0a38ef
  tasks:
Packit Service 0a38ef
  # Ensure service is present
Packit Service 0a38ef
  - ipaservice:
Packit Service 0a38ef
      ipaadmin_password: SomeADMINpassword
Packit Service 0a38ef
      name: HTTP/www.example.com
Packit Service 0a38ef
      state: disabled
Packit Service 0a38ef
```
Packit Service 0a38ef
Packit Service 0a38ef
Example playbook to add a service even if the host object does not exist, but only if it does have a DNS entry:
Packit Service 0a38ef
Packit Service 0a38ef
```yaml
Packit Service 0a38ef
---
Packit Service 0a38ef
- name: Playbook to manage IPA service.
Packit Service 0a38ef
  hosts: ipaserver
Packit Service 0a38ef
  become: true
Packit Service 0a38ef
  gather_facts: false
Packit Service 0a38ef
Packit Service 0a38ef
  tasks:
Packit Service 0a38ef
  # Ensure service is present
Packit Service 0a38ef
  - ipaservice:
Packit Service 0a38ef
      ipaadmin_password: SomeADMINpassword
Packit Service 0a38ef
      name: HTTP/www.example.com
Packit Service 0a38ef
      skip_host_check: true
Packit Service 0a38ef
      force: false
Packit Service 0a38ef
```
Packit Service 0a38ef
Packit Service 0a38ef
Example playbook to add a service if it does have a DNS entry, but host object exits:
Packit Service 0a38ef
Packit Service 0a38ef
```yaml
Packit Service 0a38ef
---
Packit Service 0a38ef
- name: Playbook to manage IPA service.
Packit Service 0a38ef
  hosts: ipaserver
Packit Service 0a38ef
  become: true
Packit Service 0a38ef
  gather_facts: false
Packit Service 0a38ef
Packit Service 0a38ef
  tasks:
Packit Service 0a38ef
  # Ensure service is present
Packit Service 0a38ef
  - ipaservice:
Packit Service 0a38ef
      ipaadmin_password: SomeADMINpassword
Packit Service 0a38ef
      name: HTTP/www.example.com
Packit Service 0a38ef
      skip_host_check: false
Packit Service 0a38ef
      force: true
Packit Service 0a38ef
```
Packit Service 0a38ef
Packit Service 0a38ef
Example playbook to ensure service has a certificate:
Packit Service 0a38ef
Packit Service 0a38ef
```yaml
Packit Service 0a38ef
---
Packit Service 0a38ef
- name: Playbook to manage IPA service.
Packit Service 0a38ef
  hosts: ipaserver
Packit Service 0a38ef
  become: true
Packit Service 0a38ef
  gather_facts: false
Packit Service 0a38ef
Packit Service 0a38ef
  tasks:
Packit Service 0a38ef
  # Ensure service member certificate is present.
Packit Service 0a38ef
  - ipaservice:
Packit Service 0a38ef
      ipaadmin_password: SomeADMINpassword
Packit Service 0a38ef
      name: HTTP/www.example.com
Packit Service a166ed
      certificate: |
Packit Service 0a38ef
        - MIIC/zCCAeegAwIBAgIUMNHIbn+hhrOVew/2WbkteisV29QwDQYJKoZIhvcNAQELBQAw
Packit Service 0a38ef
        DzENMAsGA1UEAwwEdGVzdDAeFw0yMDAyMDQxNDQxMDhaFw0zMDAyMDExNDQxMDhaMA8xDT
Packit Service 0a38ef
        ALBgNVBAMMBHRlc3QwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC+XVVGFYpH
Packit Service 0a38ef
        VkcDfVnNInE1Y/pFciegdzqTjMwUWlRL4Zt3u96GhaMLRbtk+OfEkzLUAhWBOwEraELJzM
Packit Service 0a38ef
        LJOMvjYF3C+TiGO7dStFLikZmccuSsSIXjnzIPwBXa8KvgRVRyGLoVvGbLJvmjfMXp0nIT
Packit Service 0a38ef
        oTx/i74KF9S++WEes9H5ErJ99CDhLKFgq0amnvsgparYXhypHaRLnikn0vQINt55YoEd1s
Packit Service 0a38ef
        4KrvEcD2VdZkIMPbLRu2zFvMprF3cjQQG4LT9ggfEXNIPZ1nQWAnAsu7OJEkNF+E4Mkmpc
Packit Service 0a38ef
        xj9aGUVt5bsq1D+Tzj3GsidSX0nSNcZ2JltXRnL/5v63g5cZyE+nAgMBAAGjUzBRMB0GA1
Packit Service 0a38ef
        UdDgQWBBRV0j7JYukuH/r/t9+QeNlRLXDlEDAfBgNVHSMEGDAWgBRV0j7JYukuH/r/t9+Q
Packit Service 0a38ef
        eNlRLXDlEDAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBCwUAA4IBAQCgVy1+1kNwHs
Packit Service 0a38ef
        5y1Zp0WjMWGCJC6/zw7FDG4OW5r2GJiCXZYdJ0UonY9ZtoVLJPrp2/DAv1m5DtnDhBYqic
Packit Service 0a38ef
        uPgLzEkOS1KdTi20Otm/J4yxLLrZC5W4x0XOeSVPXOJuQWfwQ5pPvKkn6WxYUYkGwIt1OH
Packit Service 0a38ef
        2nSMngkbami3CbSmKZOCpgQIiSlQeDJ8oGjWFMLDymYSHoVOIXHwNoooyEiaio3693l6no
Packit Service 0a38ef
        obyGv49zyCVLVR1DC7i6RJ186ql0av+D4vPoiF5mX7+sKC2E8xEj9uKQ5GTWRh59VnRBVC
Packit Service 0a38ef
        /SiMJ/H78tJnBAvoBwXxSEvj8Z3Kjm/BQqZfv4IBsA5yqV7MVq
Packit Service 0a38ef
      action: member
Packit Service 0a38ef
      state: present
Packit Service 0a38ef
```
Packit Service 0a38ef
Packit Service 0a38ef
Example playbook to add a principal to the service:
Packit Service 0a38ef
Packit Service 0a38ef
```yaml
Packit Service 0a38ef
---
Packit Service 0a38ef
- name: Playbook to manage IPA service.
Packit Service 0a38ef
  hosts: ipaserver
Packit Service 0a38ef
  become: true
Packit Service 0a38ef
  gather_facts: false
Packit Service 0a38ef
Packit Service 0a38ef
  tasks:
Packit Service 0a38ef
    # Principal host/principal.example.com present in service.
Packit Service 0a38ef
    - ipaservice:
Packit Service 0a38ef
        ipaadmin_password: SomeADMINpassword
Packit Service 0a38ef
        name: HTTP/www.example.com
Packit Service 0a38ef
        principal: host/principal.example.com
Packit Service 0a38ef
        action: member
Packit Service 0a38ef
```
Packit Service 0a38ef
Packit Service 0a38ef
Example playbook to enable a host to manage service:
Packit Service 0a38ef
Packit Service 0a38ef
```yaml
Packit Service 0a38ef
---
Packit Service 0a38ef
- name: Playbook to manage IPA service.
Packit Service 0a38ef
  hosts: ipaserver
Packit Service 0a38ef
  become: true
Packit Service 0a38ef
  gather_facts: false
Packit Service 0a38ef
Packit Service 0a38ef
  tasks:
Packit Service 0a38ef
    # Ensure host can manage service, again.
Packit Service 0a38ef
    - ipaservice:
Packit Service 0a38ef
        ipaadmin_password: SomeADMINpassword
Packit Service 0a38ef
        name: HTTP/www.example.com
Packit Service 0a38ef
        host: host1.example.com
Packit Service 0a38ef
        action: member
Packit Service 0a38ef
```
Packit Service 0a38ef
Packit Service 0a38ef
Example playbook to allow users, groups, hosts or hostgroups to create a keytab of this service:
Packit Service 0a38ef
Packit Service 0a38ef
```yaml
Packit Service 0a38ef
---
Packit Service 0a38ef
- name: Playbook to manage IPA service.
Packit Service 0a38ef
  hosts: ipaserver
Packit Service 0a38ef
  become: true
Packit Service 0a38ef
  gather_facts: false
Packit Service 0a38ef
Packit Service 0a38ef
  tasks:
Packit Service 0a38ef
    # Allow users, groups, hosts or host groups to create a keytab of this service.
Packit Service 0a38ef
    - ipaservice:
Packit Service 0a38ef
        ipaadmin_password: SomeADMINpassword
Packit Service 0a38ef
        name: HTTP/www.example.com
Packit Service 0a38ef
        allow_create_keytab_user:
Packit Service 0a38ef
        - user01
Packit Service 0a38ef
        - user02
Packit Service 0a38ef
        allow_create_keytab_group:
Packit Service 0a38ef
        - group01
Packit Service 0a38ef
        - group02
Packit Service 0a38ef
        allow_create_keytab_host:
Packit Service 0a38ef
        - host1.example.com
Packit Service 0a38ef
        - host2.example.com
Packit Service 0a38ef
        allow_create_keytab_hostgroup:
Packit Service 0a38ef
        - hostgroup01
Packit Service 0a38ef
        - hostgroup02
Packit Service 0a38ef
        action: member
Packit Service 0a38ef
```
Packit Service 0a38ef
Packit Service 0a38ef
Example playbook to allow users, groups, hosts or hostgroups to retrieve a keytab of this service:
Packit Service 0a38ef
Packit Service 0a38ef
```yaml
Packit Service 0a38ef
---
Packit Service 0a38ef
- name: Playbook to manage IPA service.
Packit Service 0a38ef
  hosts: ipaserver
Packit Service 0a38ef
  become: true
Packit Service 0a38ef
  gather_facts: false
Packit Service 0a38ef
Packit Service 0a38ef
  tasks:
Packit Service 0a38ef
    # Allow users, groups, hosts or host groups to retrieve a keytab of this service.
Packit Service 0a38ef
    - ipaservice:
Packit Service 0a38ef
        ipaadmin_password: SomeADMINpassword
Packit Service 0a38ef
        name: HTTP/www.example.com
Packit Service 0a38ef
        allow_retrieve_keytab_user:
Packit Service 0a38ef
        - user01
Packit Service 0a38ef
        - user02
Packit Service 0a38ef
        allow_retrieve_keytab_group:
Packit Service 0a38ef
        - group01
Packit Service 0a38ef
        - group02
Packit Service 0a38ef
        allow_retrieve_keytab_host:
Packit Service 0a38ef
        - "{{ host1_fqdn }}"
Packit Service 0a38ef
        - "{{ host2_fqdn }}"
Packit Service 0a38ef
        allow_retrieve_keytab_hostgroup:
Packit Service 0a38ef
        - hostgroup01
Packit Service 0a38ef
        - hostgroup02
Packit Service 0a38ef
        action: member
Packit Service 0a38ef
```
Packit Service 0a38ef
Packit Service 0a38ef
Packit Service 0a38ef
Variables
Packit Service 0a38ef
---------
Packit Service 0a38ef
Packit Service 0a38ef
ipaservice
Packit Service 0a38ef
Packit Service 0a38ef
Variable | Description | Required
Packit Service 0a38ef
-------- | ----------- | --------
Packit Service 0a38ef
`ipaadmin_principal` | The admin principal is a string and defaults to `admin` | no
Packit Service 0a38ef
`ipaadmin_password` | The admin password is a string and is required if there is no admin ticket available on the node | no
Packit Service 0a38ef
`name` \| `service` | The list of service name strings. | yes
Packit Service 0a38ef
`certificate` \| `usercertificate` | Base-64 encoded service certificate. | no
Packit Service 0a38ef
`pac_type` \| `ipakrbauthzdata` | Supported PAC type. It can be one of `MS-PAC`, `PAD`, or `NONE`. | no
Packit Service a166ed
`auth_ind` \| `krbprincipalauthind` | Defines an allow list for Authentication Indicators. It can be any of `otp`, `radius`, `pkinit`, or `hardened`. | no
Packit Service 0a38ef
`requires_pre_auth` \| `ipakrbrequirespreauth` | Pre-authentication is required for the service. Default to true. (bool) | no
Packit Service 0a38ef
`ok_as_delegate` \|  `ipakrbokasdelegate` | Client credentials may be delegated to the service. Default to false. (bool) | no
Packit Service 0a38ef
`ok_to_auth_as_delegate` \|  `ipakrboktoauthasdelegate` | The service is allowed to authenticate on behalf of a client. Default to false. (bool) | no
Packit Service a166ed
`skip_host_check` | Force service to be created even when host object does not exist to manage it. Only usable with IPA versions 4.7.0 and up. Default to false. (bool)| no
Packit Service 0a38ef
`force` | Force principal name even if host not in DNS. Default to false. (bool) | no
Packit Service 0a38ef
`host` \| `managedby_host`| Hosts that can manage the service. | no
Packit Service 0a38ef
`principal` \| `krbprincipalname` | List of principal aliases for the service. | no
Packit Service 0a38ef
`allow_create_keytab_user` \| `ipaallowedtoperform_write_keys_user` | Users allowed to create a keytab of this host. | no
Packit Service 0a38ef
`allow_create_keytab_group` \| `ipaallowedtoperform_write_keys_group`| Groups allowed to create a keytab of this host. | no
Packit Service 0a38ef
`allow_create_keytab_host` \| `ipaallowedtoperform_write_keys_host`| Hosts allowed to create a keytab of this host. | no
Packit Service 0a38ef
`allow_create_keytab_hostgroup` \| `ipaallowedtoperform_write_keys_group`| Host groups allowed to create a keytab of this host. | no
Packit Service 0a38ef
`allow_retrieve_keytab_user` \| `ipaallowedtoperform_read_keys_user` | Users allowed to retrieve a keytab of this host. | no
Packit Service 0a38ef
`allow_retrieve_keytab_group` \| `ipaallowedtoperform_read_keys_group` | Groups allowed to retrieve a keytab of this host. | no
Packit Service 0a38ef
`allow_retrieve_keytab_host` \| `ipaallowedtoperform_read_keys_host` | Hosts allowed to retrieve a keytab from of host. | no
Packit Service 0a38ef
`allow_retrieve_keytab_hostgroup` \| `ipaallowedtoperform_read_keys_hostgroup` | Host groups allowed to retrieve a keytab of this host. | no
Packit Service 0a38ef
`continue` | Continuous mode: don't stop on errors. Valid only if `state` is `absent`. Default: `no` (bool) | no
Packit Service 0a38ef
`action` | Work on service or member level. It can be on of `member` or `service` and defaults to `service`. | no
Packit Service 0a38ef
`state` | The state to ensure. It can be one of `present`, `absent`, or `disabled`, default: `present`. | no
Packit Service 0a38ef
Packit Service 0a38ef
Packit Service 0a38ef
Authors
Packit Service 0a38ef
=======
Packit Service 0a38ef
Packit Service 0a38ef
Rafael Jeffman