|
Packit |
8cb997 |
Topology modules
|
|
Packit |
8cb997 |
================
|
|
Packit |
8cb997 |
|
|
Packit |
8cb997 |
Description
|
|
Packit |
8cb997 |
-----------
|
|
Packit |
8cb997 |
|
|
Packit |
8cb997 |
These modules allow to manage the topology. That means that it can made sure that topology segments are present, absent or reinitialized. Also it is possible to verify topology suffixes.
|
|
Packit |
8cb997 |
|
|
Packit |
8cb997 |
|
|
Packit |
8cb997 |
Features
|
|
Packit |
8cb997 |
--------
|
|
Packit |
8cb997 |
* Topology management
|
|
Packit |
8cb997 |
|
|
Packit |
8cb997 |
|
|
Packit |
8cb997 |
Supported FreeIPA Versions
|
|
Packit |
8cb997 |
--------------------------
|
|
Packit |
8cb997 |
|
|
Packit |
8cb997 |
FreeIPA versions 4.4.0 and up are supported by the ipatopologysegment and ipatopologysuffix modules.
|
|
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 |
|
|
Packit |
8cb997 |
|
|
Packit |
8cb997 |
Usage
|
|
Packit |
8cb997 |
=====
|
|
Packit |
8cb997 |
|
|
Packit |
8cb997 |
Example inventory file
|
|
Packit |
8cb997 |
|
|
Packit |
8cb997 |
```ini
|
|
Packit |
8cb997 |
[ipaserver]
|
|
Packit |
8cb997 |
ipaserver.test.local
|
|
Packit |
8cb997 |
```
|
|
Packit |
8cb997 |
|
|
Packit |
8cb997 |
|
|
Packit |
8cb997 |
Example playbook to add a topology segment with default name (cn):
|
|
Packit |
8cb997 |
|
|
Packit |
8cb997 |
```yaml
|
|
Packit |
8cb997 |
---
|
|
Packit |
8cb997 |
- name: Playbook to handle topologysegment
|
|
Packit |
8cb997 |
hosts: ipaserver
|
|
Packit |
8cb997 |
become: true
|
|
Packit |
8cb997 |
|
|
Packit |
8cb997 |
tasks:
|
|
Packit |
8cb997 |
- name: Add topology segment
|
|
Packit |
8cb997 |
ipatopologysegment:
|
|
Packit |
8cb997 |
ipaadmin_password: MyPassword123
|
|
Packit |
8cb997 |
suffix: domain
|
|
Packit |
8cb997 |
left: ipareplica1.test.local
|
|
Packit |
8cb997 |
right: ipareplica2.test.local
|
|
Packit |
8cb997 |
state: present
|
|
Packit |
8cb997 |
```
|
|
Packit |
8cb997 |
The name (cn) can also be set if it should not be the default `{left}-to-{right}`.
|
|
Packit |
8cb997 |
|
|
Packit |
8cb997 |
|
|
Packit |
8cb997 |
Example playbook to delete a topology segment:
|
|
Packit |
8cb997 |
|
|
Packit |
8cb997 |
```yaml
|
|
Packit |
8cb997 |
---
|
|
Packit |
8cb997 |
- name: Playbook to handle topologysegment
|
|
Packit |
8cb997 |
hosts: ipaserver
|
|
Packit |
8cb997 |
become: true
|
|
Packit |
8cb997 |
|
|
Packit |
8cb997 |
tasks:
|
|
Packit |
8cb997 |
- name: Delete topology segment
|
|
Packit |
8cb997 |
ipatopologysegment:
|
|
Packit |
8cb997 |
ipaadmin_password: MyPassword123
|
|
Packit |
8cb997 |
suffix: domain
|
|
Packit |
8cb997 |
left: ipareplica1.test.local
|
|
Packit |
8cb997 |
right: ipareplica2.test.local
|
|
Packit |
8cb997 |
state: absent
|
|
Packit |
8cb997 |
```
|
|
Packit |
8cb997 |
It is possible to either use the name (cn) or left and right nodes. If left and right nodes are used, then the name will be searched and used internally.
|
|
Packit |
8cb997 |
|
|
Packit |
8cb997 |
|
|
Packit |
8cb997 |
Example playbook to reinitialize a topology segment:
|
|
Packit |
8cb997 |
|
|
Packit |
8cb997 |
```yaml
|
|
Packit |
8cb997 |
---
|
|
Packit |
8cb997 |
- name: Playbook to handle topologysegment
|
|
Packit |
8cb997 |
hosts: ipaserver
|
|
Packit |
8cb997 |
become: true
|
|
Packit |
8cb997 |
|
|
Packit |
8cb997 |
tasks:
|
|
Packit |
8cb997 |
- name: Reinitialize topology segment
|
|
Packit |
8cb997 |
ipatopologysegment:
|
|
Packit |
8cb997 |
ipaadmin_password: MyPassword123
|
|
Packit |
8cb997 |
suffix: domain
|
|
Packit |
8cb997 |
left: ipareplica1.test.local
|
|
Packit |
8cb997 |
right: ipareplica2.test.local
|
|
Packit |
8cb997 |
direction: left-to-right
|
|
Packit |
8cb997 |
state: reinitialized
|
|
Packit |
8cb997 |
```
|
|
Packit |
8cb997 |
It is possible to either use the name (cn) or left and right nodes. If left and right nodes are used, then the name will be searched and used internally.
|
|
Packit |
8cb997 |
|
|
Packit |
8cb997 |
|
|
Packit |
8cb997 |
Example playbook to verify a topology suffix:
|
|
Packit |
8cb997 |
|
|
Packit |
8cb997 |
```yaml
|
|
Packit |
8cb997 |
---
|
|
Packit |
8cb997 |
- name: Playbook to handle topologysuffix
|
|
Packit |
8cb997 |
hosts: ipaserver
|
|
Packit |
8cb997 |
become: true
|
|
Packit |
8cb997 |
|
|
Packit |
8cb997 |
tasks:
|
|
Packit |
8cb997 |
- name: Verify topology suffix
|
|
Packit |
8cb997 |
ipatopologysuffix:
|
|
Packit |
8cb997 |
ipaadmin_password: MyPassword123
|
|
Packit |
8cb997 |
suffix: domain
|
|
Packit |
8cb997 |
state: verified
|
|
Packit |
8cb997 |
```
|
|
Packit |
8cb997 |
|
|
Packit |
8cb997 |
Example playbook to add or remove or check or reinitialize a list of topology segments:
|
|
Packit |
8cb997 |
|
|
Packit |
8cb997 |
```yaml
|
|
Packit |
8cb997 |
---
|
|
Packit |
8cb997 |
- name: Add topology segments
|
|
Packit |
8cb997 |
hosts: ipaserver
|
|
Packit |
8cb997 |
become: true
|
|
Packit |
8cb997 |
gather_facts: false
|
|
Packit |
8cb997 |
|
|
Packit |
8cb997 |
vars:
|
|
Packit |
8cb997 |
ipaadmin_password: password1
|
|
Packit |
8cb997 |
ipatopology_segments:
|
|
Packit |
8cb997 |
- {suffix: domain, left: replica1.test.local, right: replica2.test.local}
|
|
Packit |
8cb997 |
- {suffix: domain, left: replica2.test.local, right: replica3.test.local}
|
|
Packit |
8cb997 |
- {suffix: domain, left: replica3.test.local, right: replica4.test.local}
|
|
Packit |
8cb997 |
- {suffix: domain+ca, left: replica4.test.local, right: replica1.test.local}
|
|
Packit |
8cb997 |
|
|
Packit |
8cb997 |
tasks:
|
|
Packit |
8cb997 |
- name: Add topology segment
|
|
Packit |
8cb997 |
ipatopologysegment:
|
|
Packit |
8cb997 |
ipaadmin_password: "{{ ipaadmin_password }}"
|
|
Packit |
8cb997 |
suffix: "{{ item.suffix }}"
|
|
Packit |
8cb997 |
name: "{{ item.name | default(omit) }}"
|
|
Packit |
8cb997 |
left: "{{ item.left }}"
|
|
Packit |
8cb997 |
right: "{{ item.right }}"
|
|
Packit |
8cb997 |
state: present
|
|
Packit |
8cb997 |
#state: absent
|
|
Packit |
8cb997 |
#state: checked
|
|
Packit |
8cb997 |
#state: reinitialized
|
|
Packit |
8cb997 |
loop: "{{ ipatopology_segments | default([]) }}"
|
|
Packit |
8cb997 |
```
|
|
Packit |
8cb997 |
|
|
Packit |
8cb997 |
|
|
Packit |
8cb997 |
Variables
|
|
Packit |
8cb997 |
=========
|
|
Packit |
8cb997 |
|
|
Packit |
8cb997 |
ipatopologysegment
|
|
Packit |
8cb997 |
------------------
|
|
Packit |
8cb997 |
|
|
Packit |
8cb997 |
Variable | Description | Required
|
|
Packit |
8cb997 |
-------- | ----------- | --------
|
|
Packit |
8cb997 |
`ipaadmin_principal` | The admin principal is a string and defaults to `admin` | no
|
|
Packit |
8cb997 |
`ipaadmin_password` | The admin password is a string and is required if there is no admin ticket available on the node | no
|
|
Packit |
8cb997 |
`suffix` | The topology suffix to be used, this can either be `domain`, `ca` or `domain+ca` | yes
|
|
Packit |
8cb997 |
`name` \| `cn` | The topology segment name (cn) is the unique identifier for a segment. | no
|
|
Packit |
8cb997 |
`left` \| `leftnode` | The left replication node string - an IPA server | no
|
|
Packit |
8cb997 |
`right` \| `rightnode` | The right replication node string - an IPA server | no
|
|
Packit |
8cb997 |
`direction` | The direction a segment will be reinitialized. It can either be `left-to-right` or `right-to-left` and only used with `state: reinitialized` |
|
|
Packit |
8cb997 |
`state` | The state to ensure. It can be one of `present`, `absent`, `enabled`, `disabled`, `checked` or `reinitialized` | yes
|
|
Packit |
8cb997 |
|
|
Packit |
8cb997 |
|
|
Packit |
8cb997 |
ipatopologysuffix
|
|
Packit |
8cb997 |
-----------------
|
|
Packit |
8cb997 |
|
|
Packit |
8cb997 |
Verify FreeIPA topology suffix
|
|
Packit |
8cb997 |
|
|
Packit |
8cb997 |
Variable | Description | Required
|
|
Packit |
8cb997 |
-------- | ----------- | --------
|
|
Packit |
8cb997 |
`ipaadmin_principal` | The admin principal is a string and defaults to `admin` | no
|
|
Packit |
8cb997 |
`ipaadmin_password` | The admin password is a string and is required if there is no admin ticket available on the node | no
|
|
Packit |
8cb997 |
`suffix` | The topology suffix to be used, this can either be `domain` or `ca` | yes
|
|
Packit |
8cb997 |
`state` | The state to ensure. It can only be `verified` | yes
|
|
Packit |
8cb997 |
|
|
Packit |
8cb997 |
|
|
Packit |
8cb997 |
Authors
|
|
Packit |
8cb997 |
=======
|
|
Packit |
8cb997 |
|
|
Packit |
8cb997 |
Thomas Woerner
|