diff --git a/main/.buildinfo b/main/.buildinfo index c9be7d4..8820eb2 100644 --- a/main/.buildinfo +++ b/main/.buildinfo @@ -1,4 +1,4 @@ # Sphinx build info version 1 # This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. -config: 6e7057ce6416cf6bff55e2409552ec22 +config: bac3445b4b104d9bbbf1d75d8adc46b5 tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/main/CHANGELOG.html b/main/CHANGELOG.html index 921d29a..d1689be 100644 --- a/main/CHANGELOG.html +++ b/main/CHANGELOG.html @@ -7,16 +7,17 @@ middleware_automation.keycloak Release Notes — Keycloak Ansible Collection documentation + - - - - - + + + + + @@ -175,7 +176,7 @@
-

middleware_automation.keycloak Release Notes

+

middleware_automation.keycloak Release Notes

This changelog describes changes after version 0.2.6.

-

v1.2.8-devel

+

v1.2.8-devel

-

Minor Changes

+

Minor Changes

  • Update keycloak_quarkus to Keycloak version 22.0.0 #100

  • keycloak_quarkus: set openjdk 17 as default #103

-

Bugfixes

+

Bugfixes

  • Fix incorrect checks for keycloak_jgroups_subnet #98

  • Undefine keycloak_db_valid_conn_sql default #91

  • @@ -298,9 +299,9 @@
-

v1.2.7

+

v1.2.7

-

Minor Changes

+

Minor Changes

  • Allow to override jgroups subnet #93

  • keycloak-quarkus: update keycloakx to v21.1.1 #92

  • @@ -308,9 +309,9 @@
-

v1.2.6

+

v1.2.6

-

Minor Changes

+

Minor Changes

  • Add profile features enabling/disabling #87

  • Improve service restart behavior configuration #88

  • @@ -318,16 +319,16 @@
-

Bugfixes

+

Bugfixes

  • Handle WFLYCTL0117 when background validation millis is 0 #90

-

v1.2.5

+

v1.2.5

-

Minor Changes

+

Minor Changes

  • Add configuration for database connection pool validation #85

  • Allow to configure administration endpoint URL #86

  • @@ -337,16 +338,16 @@
-

v1.2.4

+

v1.2.4

-

Minor Changes

+

Minor Changes

  • Add sqlserver to keycloak role jdbc configurations #78

  • Add configurability for XA transactions #73

-

Bugfixes

+

Bugfixes

  • Fix deprecation warning for ipaddr #77

  • Fix undefined facts when offline patching sso #71

  • @@ -354,30 +355,30 @@
-

v1.2.1

+

v1.2.1

-

Minor Changes

+

Minor Changes

  • Allow to setup keycloak HA cluster without remote cache store #68

-

Bugfixes

+

Bugfixes

  • Pass attributes to realm clients #69

-

v1.2.0

+

v1.2.0

-

Major Changes

+

Major Changes

  • Provide config for multiple modcluster proxies #60

-

Minor Changes

+

Minor Changes

  • Allow to configure TCPPING for cluster discovery #62

  • Drop community.general from dependencies #61

  • @@ -387,18 +388,18 @@
-

v1.1.1

+

v1.1.1

-

Bugfixes

+

Bugfixes

  • keycloak-quarkus: fix cache-config-file path in keycloak.conf.j2 template #53

-

v1.1.0

+

v1.1.0

-

Minor Changes

+

Minor Changes

  • Update keycloak to 18.0.2 - sso to 7.6.1 #46

  • Variable keycloak_no_log controls ansible no_log parameter (for debugging purposes) #47

  • @@ -407,37 +408,37 @@
-

Breaking Changes / Porting Guide

+

Breaking Changes / Porting Guide

  • Rename variables from infinispan_ prefix to keycloak_infinispan_ #42

-

Bugfixes

+

Bugfixes

  • keycloak_quarkus: fix /var/log/keycloak symlink to keycloak log directory #44

-

v1.0.7

+

v1.0.7

-

Breaking Changes / Porting Guide

+

Breaking Changes / Porting Guide

  • keycloak_quarkus: use absolute path for certificate files #39

-

Bugfixes

+

Bugfixes

  • keycloak_quarkus: use become for tasks that will otherwise fail #38

-

v1.0.6

+

v1.0.6

-

Bugfixes

+

Bugfixes

  • keycloak_quarkus: add selected java to PATH in systemd unit #34

  • keycloak_quarkus: set logfile path correctly under keycloak home #35

  • @@ -445,77 +446,77 @@
-

v1.0.5

+

v1.0.5

-

Minor Changes

+

Minor Changes

  • Update config options: keycloak and quarkus #32

-

v1.0.4

+

v1.0.4

-

v1.0.3

+

v1.0.3

-

Major Changes

+

Major Changes

  • New role for installing keycloak >= 17.0.0 (quarkus) #29

-

Minor Changes

+

Minor Changes

  • Add keycloak_config_override_template parameter for passing a custom xml config template #30

-

Bugfixes

+

Bugfixes

  • Make sure systemd unit starts with selected java JVM #31

-

v1.0.2

+

v1.0.2

-

Minor Changes

+

Minor Changes

  • Make keycloak_admin_password a default with assert (was: role variable) #26

  • Simplify dependency install logic and reduce play execution time #19

-

Bugfixes

+

Bugfixes

  • Set keycloak_frontend_url default according to other defaults #25

-

v1.0.1

+

v1.0.1

-

Release Summary

+

Release Summary

Minor enhancements, bug and documentation fixes.

-

Major Changes

+

Major Changes

  • Apply latest cumulative patch of RH-SSO automatically when new parameter keycloak_rhsso_apply_patches is true #18

-

Minor Changes

+

Minor Changes

  • Clustered installs now perform database initialization on first node to avoid locking issues #17

-

v1.0.0

+

v1.0.0

-

Release Summary

+

Release Summary

This is the first stable release of the middleware_automation.keycloak collection.

diff --git a/main/README.html b/main/README.html index 8658e26..05044fa 100644 --- a/main/README.html +++ b/main/README.html @@ -7,16 +7,17 @@ Ansible Collection - middleware_automation.keycloak — Keycloak Ansible Collection documentation + - - - - - + + + + + @@ -119,7 +120,7 @@
-

Ansible Collection - middleware_automation.keycloak

+

Ansible Collection - middleware_automation.keycloak

Build Status

@@ -129,16 +130,16 @@

Collection to install and configure Keycloak or Red Hat Single Sign-On.

-

Ansible version compatibility

+

Ansible version compatibility

This collection has been tested against following Ansible versions: >=2.9.10.

Plugins and modules within a collection may be tested with only specific Ansible versions. A collection may contain metadata that identifies these versions.

-

Installation

+

Installation

-

Installing the Collection from Ansible Galaxy

+

Installing the Collection from Ansible Galaxy

Before using the collection, you need to install it with the Ansible Galaxy CLI:

ansible-galaxy collection install middleware_automation.keycloak
 
@@ -160,7 +161,7 @@
-

Included roles

+

Included roles

  • keycloak: role for installing the service.

  • keycloak_realm: role for configuring a realm, user federation(s), clients and users, in an installed service.

  • @@ -169,16 +170,16 @@
-

Usage

+

Usage

-

Install Playbook

+

Install Playbook

Both playbooks include the keycloak role, with different settings, as described in the following sections.

For full service configuration details, refer to the keycloak role README.

-

Install from controller node (offline)

+

Install from controller node (offline)

Making the keycloak zip archive available to the playbook working directory, and setting keycloak_offline_install to True, allows to skip the download tasks. The local path for the archive does match the downloaded archive path, so that it is also used as a cache when multiple hosts are provisioned in a cluster.

keycloak_offline_install: True
@@ -188,12 +189,12 @@ the download tasks. The local path for the archive does match the downloaded arc
 
 
-

Install from alternate sources (like corporate Nexus, artifactory, proxy, etc)

+

Install from alternate sources (like corporate Nexus, artifactory, proxy, etc)

It is possible to perform downloads from alternate sources, using the keycloak_download_url variable; make sure the final downloaded filename matches with the source filename (ie. keycloak-legacy-x.y.zip or rh-sso-x.y.z-server-dist.zip).

-

Example installation command

+

Example installation command

Execute the following command from the source root directory

ansible-playbook -i <ansible_hosts> -e @rhn-creds.yml playbooks/keycloak.yml -e keycloak_admin_password=<changeme>
 
@@ -211,13 +212,13 @@ the download tasks. The local path for the archive does match the downloaded arc
-

Configuration

+

Configuration

-

Config Playbook

+

Config Playbook

playbooks/keycloak_realm.yml creates or updates provided realm, user federation(s), client(s), client role(s) and client user(s).

-

Example configuration command

+

Example configuration command

Execute the following command from the source root directory:

ansible-playbook -i <ansible_hosts> playbooks/keycloak_realm.yml -e keycloak_admin_password=<changeme> -e keycloak_realm=test
 
@@ -238,7 +239,7 @@ the download tasks. The local path for the archive does match the downloaded arc
-

License

+

License

Apache License v2.0 or later

See LICENSE to view the full text.

diff --git a/main/_static/antsibull-minimal.css b/main/_static/antsibull-minimal.css new file mode 100644 index 0000000..ebc82d8 --- /dev/null +++ b/main/_static/antsibull-minimal.css @@ -0,0 +1,3 @@ +@charset "UTF-8"; +/* Copyright (c) Ansible and contributors */ +/* GNU General Public License v3.0+ (see https://www.gnu.org/licenses/gpl-3.0.txt) */.ansible-links{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:start;-webkit-justify-content:flex-start;-ms-flex-pack:start;justify-content:flex-start;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}.ansible-links>a{padding:4px 12px;margin:2px 4px;cursor:pointer;border-radius:3px;background-color:#5bbdbf;color:#fff}.ansible-links>a:active,.ansible-links>a:focus,.ansible-links>a:hover{background-color:#91d9db}.ansible-links>a:focus{outline:3px solid #204748}table.documentation-table{border-bottom:1px solid #000;border-right:1px solid #000}table.documentation-table th{background-color:#6ab0de}table.documentation-table td,table.documentation-table th{padding:4px;border-left:1px solid #000;border-top:1px solid #000}table.documentation-table td.elbow-placeholder{border-top:0;width:30px;min-width:30px}table.documentation-table td{vertical-align:top}table.documentation-table td:first-child{white-space:nowrap}table.documentation-table tr .ansibleOptionLink{display:inline-block}table.documentation-table tr .ansibleOptionLink:after{content:"🔗";opacity:0}table.documentation-table tr:hover .ansibleOptionLink:after{opacity:1}table.documentation-table tr:nth-child(odd){background-color:#fff}table.documentation-table tr:nth-child(2n){background-color:#e7f2fa}table.ansible-option-table{display:table;border-color:#000!important;height:1px}table.ansible-option-table tr{height:100%}table.ansible-option-table td,table.ansible-option-table th{border-color:#000!important;border-bottom:none!important;vertical-align:top!important}table.ansible-option-table th>p{font-size:medium!important}table.ansible-option-table thead tr{background-color:#6ab0de}table.ansible-option-table tbody .row-odd td{background-color:#fff!important}table.ansible-option-table tbody .row-even td{background-color:#e7f2fa!important}table.ansible-option-table ul>li>p{margin:0!important}table.ansible-option-table ul>li>div[class^=highlight]{margin-bottom:4px!important}table.ansible-option-table p.ansible-option-title{display:inline}table.ansible-option-table .ansible-option-type-line{font-size:small;margin-bottom:0}table.ansible-option-table .ansible-option-elements,table.ansible-option-table .ansible-option-type{color:purple}table.ansible-option-table .ansible-option-required{color:red}table.ansible-option-table .ansible-option-versionadded{font-style:italic;font-size:small;color:#006400}table.ansible-option-table .ansible-option-aliases{color:#006400;white-space:normal}table.ansible-option-table .ansible-option-line{margin-top:8px}table.ansible-option-table .ansible-option-choices{font-weight:700}table.ansible-option-table .ansible-option-choices-default-mark,table.ansible-option-table .ansible-option-default{color:#00f}table.ansible-option-table .ansible-option-default-bold{color:#00f;font-weight:700}table.ansible-option-table .ansible-option-returned-bold{font-weight:700}table.ansible-option-table .ansible-option-sample{color:#00f;word-wrap:break-word;word-break:break-all}table.ansible-option-table .ansible-option-sample-bold{color:#000;font-weight:700}table.ansible-option-table .ansible-option-configuration{font-weight:700}table.ansible-option-table .ansibleOptionLink{display:inline-block}table.ansible-option-table .ansibleOptionLink:after{content:"🔗";opacity:0}table.ansible-option-table p{margin:0 0 8px}table.ansible-option-table tr:hover .ansibleOptionLink:after{opacity:1}table.ansible-option-table td{padding:0!important;white-space:normal}table.ansible-option-table td>div.ansible-option-cell{padding:8px 16px;border-top:1px solid #000}table.ansible-option-table td:first-child{height:inherit;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}table.ansible-option-table td:first-child>div.ansible-option-cell{height:inherit;-webkit-box-flex:1;-webkit-flex:1 0 auto;-ms-flex:1 0 auto;flex:1 0 auto;white-space:nowrap;max-width:100%}table.ansible-option-table .ansible-option-indent{margin-left:2em;border-right:1px solid #000}table.ansible-option-table .ansible-attribute-support-label{display:none}table.ansible-option-table .ansible-attribute-support-label,table.ansible-option-table .ansible-attribute-support-property{font-weight:700}table.ansible-option-table .ansible-attribute-support-none{font-weight:700;color:red}table.ansible-option-table .ansible-attribute-support-partial{font-weight:700;color:#a5a500}table.ansible-option-table .ansible-attribute-support-full{font-weight:700;color:green}table.ansible-option-table .ansible-attribute-details{font-style:italic}@media (max-width:1200px){table.ansible-option-table{display:block;height:unset;border:none!important}table.ansible-option-table thead{display:none}table.ansible-option-table tbody,table.ansible-option-table td,table.ansible-option-table tr{display:block;border:none!important}table.ansible-option-table tbody .row-even td,table.ansible-option-table tbody .row-odd td{background-color:unset!important}table.ansible-option-table td>div.ansible-option-cell{border-top:none}table.ansible-option-table td:first-child>div.ansible-option-cell{background-color:#e7f2fa!important}table.ansible-option-table td:not(:first-child){display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}table.ansible-option-table td:not(:first-child)>div.ansible-option-cell{margin-left:1em}table.ansible-option-table .ansible-option-indent,table.ansible-option-table .ansible-option-indent-desc{margin-left:1em;border:none;border-right:3px solid #e7f2fa}table.ansible-option-table .ansible-attribute-support-label{display:unset}}.ansible-version-added{font-style:italic}.ansible-option-value a.reference.external,.ansible-option-value a.reference.external:hover,.ansible-option-value a.reference.internal,.ansible-option-value a.reference.internal:hover,.ansible-option a.reference.external,.ansible-option a.reference.external:hover,.ansible-option a.reference.internal,.ansible-option a.reference.internal:hover,.ansible-return-value a.reference.external,.ansible-return-value a.reference.external:hover,.ansible-return-value a.reference.internal,.ansible-return-value a.reference.internal:hover{color:unset} \ No newline at end of file diff --git a/main/_static/basic.css b/main/_static/basic.css index 7577acb..30fee9d 100644 --- a/main/_static/basic.css +++ b/main/_static/basic.css @@ -237,6 +237,10 @@ a.headerlink { visibility: hidden; } +a:visited { + color: #551A8B; +} + h1:hover > a.headerlink, h2:hover > a.headerlink, h3:hover > a.headerlink, @@ -670,6 +674,16 @@ dd { margin-left: 30px; } +.sig dd { + margin-top: 0px; + margin-bottom: 0px; +} + +.sig dl { + margin-top: 0px; + margin-bottom: 0px; +} + dl > dd:last-child, dl > dd:last-child > :last-child { margin-bottom: 0; @@ -738,6 +752,14 @@ abbr, acronym { cursor: help; } +.translated { + background-color: rgba(207, 255, 207, 0.2) +} + +.untranslated { + background-color: rgba(255, 207, 207, 0.2) +} + /* -- code displays --------------------------------------------------------- */ pre { diff --git a/main/_static/documentation_options.js b/main/_static/documentation_options.js index b57ae3b..7e4c114 100644 --- a/main/_static/documentation_options.js +++ b/main/_static/documentation_options.js @@ -1,5 +1,4 @@ -var DOCUMENTATION_OPTIONS = { - URL_ROOT: document.getElementById("documentation_options").getAttribute('data-url_root'), +const DOCUMENTATION_OPTIONS = { VERSION: '', LANGUAGE: 'en', COLLAPSE_INDEX: false, diff --git a/main/_static/pygments.css b/main/_static/pygments.css index 0d49244..fddd181 100644 --- a/main/_static/pygments.css +++ b/main/_static/pygments.css @@ -3,73 +3,79 @@ td.linenos .normal { color: inherit; background-color: transparent; padding-left span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } -.highlight .hll { background-color: #ffffcc } -.highlight { background: #eeffcc; } -.highlight .c { color: #408090; font-style: italic } /* Comment */ -.highlight .err { border: 1px solid #FF0000 } /* Error */ +.highlight .hll { background-color: #ffffcc; border: 1px solid #edff00; padding-top: 2px; border-radius: 3px; display: block } +.highlight { background: #f8f8f8; } +.highlight .c { color: #6a737d; font-style: italic } /* Comment */ +.highlight .err { color: #a61717; background-color: #e3d2d2; border: 1px solid #FF0000 } /* Error */ .highlight .k { color: #007020; font-weight: bold } /* Keyword */ -.highlight .o { color: #666666 } /* Operator */ -.highlight .ch { color: #408090; font-style: italic } /* Comment.Hashbang */ -.highlight .cm { color: #408090; font-style: italic } /* Comment.Multiline */ +.highlight .l { color: #032f62 } /* Literal */ +.highlight .n { color: #333333 } /* Name */ +.highlight .o { color: #666666; font-weight: bold } /* Operator */ +.highlight .p { font-weight: bold } /* Punctuation */ +.highlight .ch { color: #6a737d; font-style: italic } /* Comment.Hashbang */ +.highlight .cm { color: #6a737d; font-style: italic } /* Comment.Multiline */ .highlight .cp { color: #007020 } /* Comment.Preproc */ -.highlight .cpf { color: #408090; font-style: italic } /* Comment.PreprocFile */ -.highlight .c1 { color: #408090; font-style: italic } /* Comment.Single */ -.highlight .cs { color: #408090; background-color: #fff0f0 } /* Comment.Special */ -.highlight .gd { color: #A00000 } /* Generic.Deleted */ +.highlight .cpf { color: #6a737d; font-style: italic } /* Comment.PreprocFile */ +.highlight .c1 { color: #6a737d; font-style: italic } /* Comment.Single */ +.highlight .cs { color: #999999; font-weight: bold; font-style: italic; background-color: #fff0f0 } /* Comment.Special */ +.highlight .gd { color: #A00000; background-color: #ffdddd } /* Generic.Deleted */ .highlight .ge { font-style: italic } /* Generic.Emph */ -.highlight .ges { font-weight: bold; font-style: italic } /* Generic.EmphStrong */ -.highlight .gr { color: #FF0000 } /* Generic.Error */ +.highlight .gr { color: #aa0000 } /* Generic.Error */ .highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */ -.highlight .gi { color: #00A000 } /* Generic.Inserted */ +.highlight .gi { color: #00A000; background-color: #ddffdd } /* Generic.Inserted */ .highlight .go { color: #333333 } /* Generic.Output */ .highlight .gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */ .highlight .gs { font-weight: bold } /* Generic.Strong */ .highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */ -.highlight .gt { color: #0044DD } /* Generic.Traceback */ +.highlight .gt { color: #0040D0 } /* Generic.Traceback */ .highlight .kc { color: #007020; font-weight: bold } /* Keyword.Constant */ .highlight .kd { color: #007020; font-weight: bold } /* Keyword.Declaration */ .highlight .kn { color: #007020; font-weight: bold } /* Keyword.Namespace */ -.highlight .kp { color: #007020 } /* Keyword.Pseudo */ +.highlight .kp { color: #007020; font-weight: bold } /* Keyword.Pseudo */ .highlight .kr { color: #007020; font-weight: bold } /* Keyword.Reserved */ -.highlight .kt { color: #902000 } /* Keyword.Type */ +.highlight .kt { color: #902000; font-weight: bold } /* Keyword.Type */ +.highlight .ld { color: #032f62 } /* Literal.Date */ .highlight .m { color: #208050 } /* Literal.Number */ .highlight .s { color: #4070a0 } /* Literal.String */ -.highlight .na { color: #4070a0 } /* Name.Attribute */ -.highlight .nb { color: #007020 } /* Name.Builtin */ -.highlight .nc { color: #0e84b5; font-weight: bold } /* Name.Class */ -.highlight .no { color: #60add5 } /* Name.Constant */ +.highlight .na { color: #008080 } /* Name.Attribute */ +.highlight .nb { color: #0086b3 } /* Name.Builtin */ +.highlight .nc { color: #445588; font-weight: bold } /* Name.Class */ +.highlight .no { color: #008080 } /* Name.Constant */ .highlight .nd { color: #555555; font-weight: bold } /* Name.Decorator */ -.highlight .ni { color: #d55537; font-weight: bold } /* Name.Entity */ -.highlight .ne { color: #007020 } /* Name.Exception */ -.highlight .nf { color: #06287e } /* Name.Function */ +.highlight .ni { color: #800080; font-weight: bold } /* Name.Entity */ +.highlight .ne { color: #990000; font-weight: bold } /* Name.Exception */ +.highlight .nf { color: #990000; font-weight: bold } /* Name.Function */ .highlight .nl { color: #002070; font-weight: bold } /* Name.Label */ -.highlight .nn { color: #0e84b5; font-weight: bold } /* Name.Namespace */ -.highlight .nt { color: #062873; font-weight: bold } /* Name.Tag */ -.highlight .nv { color: #bb60d5 } /* Name.Variable */ +.highlight .nn { color: #555555; font-weight: bold } /* Name.Namespace */ +.highlight .nx { color: #333333 } /* Name.Other */ +.highlight .py { color: #333333 } /* Name.Property */ +.highlight .nt { color: #22863a; font-weight: bold } /* Name.Tag */ +.highlight .nv { color: #9960b5; font-weight: bold } /* Name.Variable */ .highlight .ow { color: #007020; font-weight: bold } /* Operator.Word */ +.highlight .pm { font-weight: bold } /* Punctuation.Marker */ .highlight .w { color: #bbbbbb } /* Text.Whitespace */ -.highlight .mb { color: #208050 } /* Literal.Number.Bin */ -.highlight .mf { color: #208050 } /* Literal.Number.Float */ -.highlight .mh { color: #208050 } /* Literal.Number.Hex */ -.highlight .mi { color: #208050 } /* Literal.Number.Integer */ -.highlight .mo { color: #208050 } /* Literal.Number.Oct */ -.highlight .sa { color: #4070a0 } /* Literal.String.Affix */ -.highlight .sb { color: #4070a0 } /* Literal.String.Backtick */ -.highlight .sc { color: #4070a0 } /* Literal.String.Char */ -.highlight .dl { color: #4070a0 } /* Literal.String.Delimiter */ -.highlight .sd { color: #4070a0; font-style: italic } /* Literal.String.Doc */ -.highlight .s2 { color: #4070a0 } /* Literal.String.Double */ -.highlight .se { color: #4070a0; font-weight: bold } /* Literal.String.Escape */ -.highlight .sh { color: #4070a0 } /* Literal.String.Heredoc */ -.highlight .si { color: #70a0d0; font-style: italic } /* Literal.String.Interpol */ -.highlight .sx { color: #c65d09 } /* Literal.String.Other */ -.highlight .sr { color: #235388 } /* Literal.String.Regex */ -.highlight .s1 { color: #4070a0 } /* Literal.String.Single */ -.highlight .ss { color: #517918 } /* Literal.String.Symbol */ -.highlight .bp { color: #007020 } /* Name.Builtin.Pseudo */ -.highlight .fm { color: #06287e } /* Name.Function.Magic */ -.highlight .vc { color: #bb60d5 } /* Name.Variable.Class */ -.highlight .vg { color: #bb60d5 } /* Name.Variable.Global */ -.highlight .vi { color: #bb60d5 } /* Name.Variable.Instance */ -.highlight .vm { color: #bb60d5 } /* Name.Variable.Magic */ -.highlight .il { color: #208050 } /* Literal.Number.Integer.Long */ \ No newline at end of file +.highlight .mb { color: #009999 } /* Literal.Number.Bin */ +.highlight .mf { color: #009999 } /* Literal.Number.Float */ +.highlight .mh { color: #009999 } /* Literal.Number.Hex */ +.highlight .mi { color: #009999 } /* Literal.Number.Integer */ +.highlight .mo { color: #009999 } /* Literal.Number.Oct */ +.highlight .sa { color: #dd1144 } /* Literal.String.Affix */ +.highlight .sb { color: #dd1144 } /* Literal.String.Backtick */ +.highlight .sc { color: #dd1144 } /* Literal.String.Char */ +.highlight .dl { color: #dd1144 } /* Literal.String.Delimiter */ +.highlight .sd { color: #dd1144; font-style: italic } /* Literal.String.Doc */ +.highlight .s2 { color: #dd1144 } /* Literal.String.Double */ +.highlight .se { color: #dd1144; font-weight: bold } /* Literal.String.Escape */ +.highlight .sh { color: #dd1144 } /* Literal.String.Heredoc */ +.highlight .si { color: #dd1144; font-style: italic } /* Literal.String.Interpol */ +.highlight .sx { color: #dd1144 } /* Literal.String.Other */ +.highlight .sr { color: #009926 } /* Literal.String.Regex */ +.highlight .s1 { color: #dd1144 } /* Literal.String.Single */ +.highlight .ss { color: #990073 } /* Literal.String.Symbol */ +.highlight .bp { color: #999999 } /* Name.Builtin.Pseudo */ +.highlight .fm { color: #06287e; font-weight: bold } /* Name.Function.Magic */ +.highlight .vc { color: #008080; font-weight: bold } /* Name.Variable.Class */ +.highlight .vg { color: #008080; font-weight: bold } /* Name.Variable.Global */ +.highlight .vi { color: #008080; font-weight: bold } /* Name.Variable.Instance */ +.highlight .vm { color: #bb60d5; font-weight: bold } /* Name.Variable.Magic */ +.highlight .il { color: #009999 } /* Literal.Number.Integer.Long */ \ No newline at end of file diff --git a/main/_static/searchtools.js b/main/_static/searchtools.js index 97d56a7..7918c3f 100644 --- a/main/_static/searchtools.js +++ b/main/_static/searchtools.js @@ -57,12 +57,12 @@ const _removeChildren = (element) => { const _escapeRegExp = (string) => string.replace(/[.*+\-?^${}()|[\]\\]/g, "\\$&"); // $& means the whole matched string -const _displayItem = (item, searchTerms) => { +const _displayItem = (item, searchTerms, highlightTerms) => { const docBuilder = DOCUMENTATION_OPTIONS.BUILDER; - const docUrlRoot = DOCUMENTATION_OPTIONS.URL_ROOT; const docFileSuffix = DOCUMENTATION_OPTIONS.FILE_SUFFIX; const docLinkSuffix = DOCUMENTATION_OPTIONS.LINK_SUFFIX; const showSearchSummary = DOCUMENTATION_OPTIONS.SHOW_SEARCH_SUMMARY; + const contentRoot = document.documentElement.dataset.content_root; const [docName, title, anchor, descr, score, _filename] = item; @@ -75,20 +75,24 @@ const _displayItem = (item, searchTerms) => { if (dirname.match(/\/index\/$/)) dirname = dirname.substring(0, dirname.length - 6); else if (dirname === "index/") dirname = ""; - requestUrl = docUrlRoot + dirname; + requestUrl = contentRoot + dirname; linkUrl = requestUrl; } else { // normal html builders - requestUrl = docUrlRoot + docName + docFileSuffix; + requestUrl = contentRoot + docName + docFileSuffix; linkUrl = docName + docLinkSuffix; } let linkEl = listItem.appendChild(document.createElement("a")); linkEl.href = linkUrl + anchor; linkEl.dataset.score = score; linkEl.innerHTML = title; - if (descr) + if (descr) { listItem.appendChild(document.createElement("span")).innerHTML = " (" + descr + ")"; + // highlight search terms in the description + if (SPHINX_HIGHLIGHT_ENABLED) // set in sphinx_highlight.js + highlightTerms.forEach((term) => _highlightText(listItem, term, "highlighted")); + } else if (showSearchSummary) fetch(requestUrl) .then((responseData) => responseData.text()) @@ -97,6 +101,9 @@ const _displayItem = (item, searchTerms) => { listItem.appendChild( Search.makeSearchSummary(data, searchTerms) ); + // highlight search terms in the summary + if (SPHINX_HIGHLIGHT_ENABLED) // set in sphinx_highlight.js + highlightTerms.forEach((term) => _highlightText(listItem, term, "highlighted")); }); Search.output.appendChild(listItem); }; @@ -115,14 +122,15 @@ const _finishSearch = (resultCount) => { const _displayNextItem = ( results, resultCount, - searchTerms + searchTerms, + highlightTerms, ) => { // results left, load the summary and display it // this is intended to be dynamic (don't sub resultsCount) if (results.length) { - _displayItem(results.pop(), searchTerms); + _displayItem(results.pop(), searchTerms, highlightTerms); setTimeout( - () => _displayNextItem(results, resultCount, searchTerms), + () => _displayNextItem(results, resultCount, searchTerms, highlightTerms), 5 ); } @@ -360,7 +368,7 @@ const Search = { // console.info("search results:", Search.lastresults); // print the results - _displayNextItem(results, results.length, searchTerms); + _displayNextItem(results, results.length, searchTerms, highlightTerms); }, /** diff --git a/main/_static/sphinx_highlight.js b/main/_static/sphinx_highlight.js index aae669d..8a96c69 100644 --- a/main/_static/sphinx_highlight.js +++ b/main/_static/sphinx_highlight.js @@ -29,14 +29,19 @@ const _highlight = (node, addItems, text, className) => { } span.appendChild(document.createTextNode(val.substr(pos, text.length))); + const rest = document.createTextNode(val.substr(pos + text.length)); parent.insertBefore( span, parent.insertBefore( - document.createTextNode(val.substr(pos + text.length)), + rest, node.nextSibling ) ); node.nodeValue = val.substr(0, pos); + /* There may be more occurrences of search term in this node. So call this + * function recursively on the remaining fragment. + */ + _highlight(rest, addItems, text, className); if (isInSVG) { const rect = document.createElementNS( @@ -140,5 +145,10 @@ const SphinxHighlight = { }, }; -_ready(SphinxHighlight.highlightSearchWords); -_ready(SphinxHighlight.initEscapeListener); +_ready(() => { + /* Do not call highlightSearchWords() when we are on the search page. + * It will highlight words from the *previous* search query. + */ + if (typeof Search === "undefined") SphinxHighlight.highlightSearchWords(); + SphinxHighlight.initEscapeListener(); +}); diff --git a/main/developing.html b/main/developing.html index a74db66..2dcb00c 100644 --- a/main/developing.html +++ b/main/developing.html @@ -7,16 +7,17 @@ Contributor’s Guidelines — Keycloak Ansible Collection documentation + - - - - - + + + + + @@ -96,7 +97,7 @@
-

Contributor’s Guidelines

+

Contributor’s Guidelines

  • All YAML files named with .yml extension

  • Use spaces around jinja variables. {{ var }} over {{var}}

  • diff --git a/main/genindex.html b/main/genindex.html index b6dd7aa..751c9ca 100644 --- a/main/genindex.html +++ b/main/genindex.html @@ -6,16 +6,17 @@ Index — Keycloak Ansible Collection documentation + - - - - - + + + + + diff --git a/main/index.html b/main/index.html index f660bb3..1de1f47 100644 --- a/main/index.html +++ b/main/index.html @@ -7,16 +7,17 @@ Welcome to Keycloak Collection documentation — Keycloak Ansible Collection documentation + - - - - - + + + + + @@ -95,7 +96,7 @@
    -

    Welcome to Keycloak Collection documentation

    +

    Welcome to Keycloak Collection documentation

    User documentation

      diff --git a/main/plugins/index.html b/main/plugins/index.html index 2a65aef..55f9935 100644 --- a/main/plugins/index.html +++ b/main/plugins/index.html @@ -7,16 +7,17 @@ Plugin Index — Keycloak Ansible Collection documentation + - - - - - + + + + + @@ -101,7 +102,7 @@
      -

      Plugin Index

      +

      Plugin Index

      modules plugins

        diff --git a/main/plugins/keycloak_client.html b/main/plugins/keycloak_client.html index 6492293..491b617 100644 --- a/main/plugins/keycloak_client.html +++ b/main/plugins/keycloak_client.html @@ -7,16 +7,17 @@ keycloak_client – Allows administration of Keycloak clients via Keycloak API — Keycloak Ansible Collection documentation + - - - - - + + + + + @@ -112,7 +113,7 @@
        -

        keycloak_client – Allows administration of Keycloak clients via Keycloak API

        +

        keycloak_client – Allows administration of Keycloak clients via Keycloak API

        Note

        This module is part of the middleware_automation.keycloak collection.

        @@ -121,15 +122,15 @@
        -

        Synopsis

        +

        Synopsis

        • This module allows the administration of Keycloak clients via the Keycloak REST API. It requires access to the REST API via OpenID Connect; the user connecting and the client being used must have the requisite access rights. In a default Keycloak installation, admin-cli and an admin user would work, as would a separate client definition with the scope tailored to your needs and a user having the expected roles.

        • The names of module options are snake_cased versions of the camelCase ones found in the Keycloak API and its documentation at https://www.keycloak.org/docs-api/8.0/rest-api/index.html. Aliases are provided so camelCased versions can be used as well.

        • @@ -137,7 +138,7 @@
        -

        Parameters

        +

        Parameters

        @@ -164,8 +165,8 @@ @@ -335,7 +336,7 @@

        string

        @@ -430,8 +431,8 @@ @@ -444,8 +445,8 @@ @@ -473,7 +474,7 @@

        added in middleware_automation.keycloak 4.5.0

        @@ -525,8 +526,8 @@ @@ -537,8 +538,8 @@ @@ -551,8 +552,8 @@ @@ -565,8 +566,8 @@ @@ -576,7 +577,7 @@

        added in middleware_automation.keycloak 5.4.0

        @@ -642,8 +643,8 @@ @@ -672,8 +673,8 @@ @@ -709,8 +710,8 @@ @@ -754,8 +755,8 @@ @@ -764,7 +765,7 @@

        string

        @@ -833,8 +834,8 @@ @@ -847,8 +848,8 @@

        On absent, the client will be removed if it exists

        Choices:

        @@ -861,8 +862,8 @@ @@ -883,8 +884,8 @@ @@ -897,8 +898,8 @@ @@ -911,8 +912,8 @@ @@ -923,8 +924,8 @@ @@ -941,7 +942,7 @@

        Parameter

        Whether or not to display this client in account console, even if the user does not have an active session.

        Choices:

        OpenID Connect client_id to authenticate to the API with.

        -

        Default: :ansible-option-default:`"admin-cli"`

        +

        Default: "admin-cli"

        @@ -398,8 +399,8 @@

        Are authorization services enabled for this client or not (OpenID connect). This is ‘authorizationServicesEnabled’ in the Keycloak REST API.

        Choices:

        The access type of this client is bearer-only. This is ‘bearerOnly’ in the Keycloak REST API.

        Choices:

        How do clients authenticate with the auth server? Either client-secret or client-jwt can be chosen. When using client-secret, the module parameter secret can set it, while for client-jwt, you can use the keys use.jwks.url, jwks.url, and jwt.credential.certificate in the attributes module parameter to configure its behavior. This is ‘clientAuthenticatorType’ in the Keycloak REST API.

        Choices:

        Controls the HTTP connections timeout period (in seconds) to Keycloak API.

        -

        Default: :ansible-option-default:`10`

        +

        Default: 10

        @@ -485,8 +486,8 @@

        If enabled, users have to consent to client access. This is ‘consentRequired’ in the Keycloak REST API.

        Choices:

        Are direct access grants enabled for this client or not (OpenID connect). This is ‘directAccessGrantsEnabled’ in the Keycloak REST API.

        Choices:

        Is this client enabled or not?

        Choices:

        Is frontchannel logout enabled for this client or not. This is ‘frontchannelLogout’ in the Keycloak REST API.

        Choices:

        Is the “Full Scope Allowed” feature set for this client or not. This is ‘fullScopeAllowed’ in the Keycloak REST API.

        Choices:

        Configures the HTTP User-Agent header.

        -

        Default: :ansible-option-default:`"Ansible"`

        +

        Default: "Ansible"

        @@ -595,8 +596,8 @@

        Enable implicit flow for this client or not (OpenID connect). This is ‘implicitFlowEnabled’ in the Keycloak REST API.

        Choices:

        Type of client (either openid-connect or saml.

        Choices:

        Specifies whether a user needs to provide consent to a client for this mapper to be active.

        Choices:

        This is either openid-connect or saml, this specifies for which protocol this protocol mapper. is active.

        Choices:

        Is the access type for this client public or not. This is ‘publicClient’ in the Keycloak REST API.

        Choices:

        The realm to create the client in.

        -

        Default: :ansible-option-default:`"master"`

        +

        Default: "master"

        @@ -819,8 +820,8 @@

        Are service accounts enabled for this client or not (OpenID connect). This is ‘serviceAccountsEnabled’ in the Keycloak REST API.

        Choices:

        Enable standard flow for this client or not (OpenID connect). This is ‘standardFlowEnabled’ in the Keycloak REST API.

        Choices:

        Whether or not surrogate auth is required. This is ‘surrogateAuthRequired’ in the Keycloak REST API.

        Choices:

        Whether or not to use configuration from the client_template. This is ‘useTemplateConfig’ in the Keycloak REST API.

        Choices:

        Whether or not to use mapper configuration from the client_template. This is ‘useTemplateMappers’ in the Keycloak REST API.

        Choices:

        Whether or not to use scope configuration from the client_template. This is ‘useTemplateScope’ in the Keycloak REST API.

        Choices:

        Verify TLS certificates (do not disable this in production).

        Choices:

        -

        Attributes

        +

        Attributes

        @@ -970,7 +971,7 @@

        Attribute

        -

        Examples

        +

        Examples

        - name: Create or update Keycloak client (minimal example), authentication with credentials
           middleware_automation.keycloak.keycloak_client:
             auth_keycloak_url: https://auth.example.com/auth
        @@ -1098,7 +1099,7 @@
         
        -

        Return Values

        +

        Return Values

        Common return values are documented here, the following are the fields unique to this module:

        @@ -1113,7 +1114,7 @@

        Representation of client after module execution (sample is truncated).

        Returned: on success

        -

        Sample: :ansible-rv-sample-value:`{"adminUrl": "http://www.example.com/admin\_url", "attributes": {"request.object.signature.alg": "RS256"}}`

        +

        Sample: {"adminUrl": "http://www.example.com/admin_url", "attributes": {"request.object.signature.alg": "RS256"}}

        @@ -1122,7 +1123,7 @@

        Representation of existing client (sample is truncated).

        Returned: always

        -

        Sample: :ansible-rv-sample-value:`{"adminUrl": "http://www.example.com/admin\_url", "attributes": {"request.object.signature.alg": "RS256"}}`

        +

        Sample: {"adminUrl": "http://www.example.com/admin_url", "attributes": {"request.object.signature.alg": "RS256"}}

        @@ -1131,7 +1132,7 @@

        Message as to what action was taken.

        Returned: always

        -

        Sample: :ansible-rv-sample-value:`"Client testclient has been updated"`

        +

        Sample: "Client testclient has been updated"

        @@ -1140,13 +1141,13 @@

        Representation of proposed client.

        Returned: always

        -

        Sample: :ansible-rv-sample-value:`{"clientId": "test"}`

        +

        Sample: {"clientId": "test"}

        -

        Authors

        +

        Authors

        • Eike Frost (@eikef)

        diff --git a/main/plugins/keycloak_role.html b/main/plugins/keycloak_role.html index 11bcd3a..6b6fda4 100644 --- a/main/plugins/keycloak_role.html +++ b/main/plugins/keycloak_role.html @@ -7,16 +7,17 @@ keycloak_role – Allows administration of Keycloak roles via Keycloak API — Keycloak Ansible Collection documentation + - - - - - + + + + + @@ -112,7 +113,7 @@
        -

        keycloak_role – Allows administration of Keycloak roles via Keycloak API

        +

        keycloak_role – Allows administration of Keycloak roles via Keycloak API

        Note

        This module is part of the middleware_automation.keycloak collection.

        @@ -122,15 +123,15 @@

        New in middleware_automation.keycloak 3.4.0

        -

        Synopsis

        +

        Synopsis

        • This module allows you to add, remove or modify Keycloak roles via the Keycloak REST API. It requires access to the REST API via OpenID Connect; the user connecting and the client being used must have the requisite access rights. In a default Keycloak installation, admin-cli and an admin user would work, as would a separate client definition with the scope tailored to your needs and a user having the expected roles.

        • The names of module options are snake_cased versions of the camelCase ones found in the Keycloak API and its documentation at https://www.keycloak.org/docs-api/8.0/rest-api/index.html.

        • @@ -138,7 +139,7 @@
        -

        Parameters

        +

        Parameters

        @@ -159,7 +160,7 @@

        string

        @@ -281,8 +282,8 @@ @@ -290,7 +291,7 @@

        Parameter

        OpenID Connect client_id to authenticate to the API with.

        -

        Default: :ansible-option-default:`"admin-cli"`

        +

        Default: "admin-cli"

        @@ -217,7 +218,7 @@

        added in middleware_automation.keycloak 4.5.0

        Controls the HTTP connections timeout period (in seconds) to Keycloak API.

        -

        Default: :ansible-option-default:`10`

        +

        Default: 10

        @@ -233,7 +234,7 @@

        added in middleware_automation.keycloak 5.4.0

        Configures the HTTP User-Agent header.

        -

        Default: :ansible-option-default:`"Ansible"`

        +

        Default: "Ansible"

        @@ -249,7 +250,7 @@

        string

        The Keycloak realm under which this role resides.

        -

        Default: :ansible-option-default:`"master"`

        +

        Default: "master"

        @@ -261,8 +262,8 @@

        On absent, the role will be removed if it exists.

        Choices:

        Verify TLS certificates (do not disable this in production).

        Choices:

        -

        Attributes

        +

        Attributes

        @@ -319,7 +320,7 @@

        Attribute

        -

        Examples

        +

        Examples

        - name: Create a Keycloak realm role, authentication with credentials
           middleware_automation.keycloak.keycloak_role:
             name: my-new-kc-role
        @@ -388,7 +389,7 @@
         
        -

        Return Values

        +

        Return Values

        Common return values are documented here, the following are the fields unique to this module:

        @@ -403,7 +404,7 @@

        Representation of role after module execution (sample is truncated).

        Returned: on success

        -

        Sample: :ansible-rv-sample-value:`{"attributes": {}, "clientRole": true, "composite": false, "containerId": "9f03eb61-a826-4771-a9fd-930e06d2d36a", "description": "My updated client test role", "id": "561703dd-0f38-45ff-9a5a-0c978f794547", "name": "myrole"}`

        +

        Sample: {"attributes": {}, "clientRole": true, "composite": false, "containerId": "9f03eb61-a826-4771-a9fd-930e06d2d36a", "description": "My updated client test role", "id": "561703dd-0f38-45ff-9a5a-0c978f794547", "name": "myrole"}

        @@ -412,7 +413,7 @@

        Representation of existing role.

        Returned: always

        -

        Sample: :ansible-rv-sample-value:`{"attributes": {}, "clientRole": true, "composite": false, "containerId": "9f03eb61-a826-4771-a9fd-930e06d2d36a", "description": "My client test role", "id": "561703dd-0f38-45ff-9a5a-0c978f794547", "name": "myrole"}`

        +

        Sample: {"attributes": {}, "clientRole": true, "composite": false, "containerId": "9f03eb61-a826-4771-a9fd-930e06d2d36a", "description": "My client test role", "id": "561703dd-0f38-45ff-9a5a-0c978f794547", "name": "myrole"}

        @@ -421,7 +422,7 @@

        Message as to what action was taken.

        Returned: always

        -

        Sample: :ansible-rv-sample-value:`"Role myrole has been updated"`

        +

        Sample: "Role myrole has been updated"

        @@ -430,13 +431,13 @@

        Representation of proposed role.

        Returned: always

        -

        Sample: :ansible-rv-sample-value:`{"description": "My updated test description"}`

        +

        Sample: {"description": "My updated test description"}

        -

        Authors

        +

        Authors

        • Laurent Paumier (@laurpaum)

        diff --git a/main/plugins/keycloak_user_federation.html b/main/plugins/keycloak_user_federation.html index b25d7ab..ee92f38 100644 --- a/main/plugins/keycloak_user_federation.html +++ b/main/plugins/keycloak_user_federation.html @@ -7,16 +7,17 @@ keycloak_user_federation – Allows administration of Keycloak user federations via Keycloak API — Keycloak Ansible Collection documentation + - - - - - + + + + + @@ -112,7 +113,7 @@
        -

        keycloak_user_federation – Allows administration of Keycloak user federations via Keycloak API

        +

        keycloak_user_federation – Allows administration of Keycloak user federations via Keycloak API

        Note

        This module is part of the middleware_automation.keycloak collection.

        @@ -122,22 +123,22 @@

        New in middleware_automation.keycloak 3.7.0

        -

        Synopsis

        +

        Synopsis

        • This module allows you to add, remove or modify Keycloak user federations via the Keycloak REST API. It requires access to the REST API via OpenID Connect; the user connecting and the client being used must have the requisite access rights. In a default Keycloak installation, admin-cli and an admin user would work, as would a separate client definition with the scope tailored to your needs and a user having the expected roles.

        • The names of module options are snake_cased versions of the camelCase ones found in the Keycloak API and its documentation at https://www.keycloak.org/docs-api/20.0.2/rest-api/index.html.

        -

        Parameters

        +

        Parameters

        @@ -150,7 +151,7 @@

        string

        @@ -221,8 +222,8 @@ @@ -233,8 +234,8 @@ @@ -243,7 +244,7 @@

        integer

        @@ -280,7 +281,7 @@

        integer

        @@ -302,9 +303,9 @@ @@ -378,8 +379,8 @@ @@ -390,9 +391,9 @@ @@ -403,8 +404,8 @@ @@ -434,7 +435,7 @@

        integer

        @@ -477,8 +478,8 @@ @@ -487,7 +488,7 @@

        integer

        @@ -530,8 +531,8 @@ @@ -542,8 +543,8 @@ @@ -554,8 +555,8 @@ @@ -566,8 +567,8 @@ @@ -578,8 +579,8 @@ @@ -590,8 +591,8 @@ @@ -623,9 +624,9 @@ @@ -643,8 +644,8 @@ @@ -662,7 +663,7 @@

        added in middleware_automation.keycloak 4.5.0

        @@ -769,7 +770,7 @@

        string

        @@ -809,8 +810,8 @@ @@ -818,7 +819,7 @@

        Parameter

        OpenID Connect client_id to authenticate to the API with.

        -

        Default: :ansible-option-default:`"admin-cli"`

        +

        Default: "admin-cli"

        @@ -209,8 +210,8 @@

        Enable/disable HTTP authentication of users with SPNEGO/Kerberos tokens. The data about authenticated users will be provisioned from this LDAP server.

        Choices:

        Enable/disable possibility of username/password authentication against Kerberos database.

        Choices:

        Type of the Authentication method used during LDAP Bind operation. It is used in most of the requests sent to the LDAP server.

        Choices:

        Count of LDAP users to be imported from LDAP to Keycloak within a single transaction.

        -

        Default: :ansible-option-default:`1000`

        +

        Default: 1000

        @@ -267,11 +268,11 @@

        Cache Policy for this storage provider.

        Choices:

        Period for synchronization of changed or newly created LDAP users in seconds.

        -

        Default: :ansible-option-default:`-1`

        +

        Default: -1

        @@ -290,8 +291,8 @@

        Determines if Keycloak should use connection pooling for accessing LDAP server.

        Choices:

        A list of space-separated authentication types of connections that may be pooled.

        Choices:

        Enable/disable debug logging to standard output for Krb5LoginModule.

        Choices:

        READ_ONLY is a read-only LDAP store. WRITABLE means data will be synced back to LDAP on demand. UNSYNCED means user data will be imported, but not synced back to LDAP.

        Choices:

        Enable/disable this user federation.

        Choices:

        Period for full synchronization in seconds.

        -

        Default: :ansible-option-default:`-1`

        +

        Default: -1

        @@ -444,8 +445,8 @@

        If true, LDAP users will be imported into Keycloak DB and synced by the configured sync policies.

        Choices:

        Does the LDAP server support pagination.

        Choices:

        Priority of provider when doing a user lookup. Lowest first.

        -

        Default: :ansible-option-default:`0`

        +

        Default: 0

        @@ -511,8 +512,8 @@

        For one level, the search applies only for users in the DNs specified by User DNs. For subtree, the search applies to the whole subtree. See LDAP documentation for more details.

        Choices:

        Encrypts the connection to LDAP using STARTTLS, which will disable connection pooling.

        Choices:

        Should newly created users be created within LDAP store? Priority effects which provider is chosen to sync the new user.

        Choices:

        If enabled, email provided by this provider is not verified even if verification is enabled for the realm.

        Choices:

        Update profile on first login.

        Choices:

        Use Kerberos login module for authenticate username/password against Kerberos server instead of authenticating against LDAP server with Directory Service API.

        Choices:

        Use the LDAPv3 Password Modify Extended Operation (RFC-3062). The password modify extended operation usually requires that LDAP user already has password in the LDAP server. So when this is used with ‘Sync Registrations’, it can be good to add also ‘Hardcoded LDAP attribute mapper’ with randomly generated initial password.

        Choices:

        Specifies whether LDAP connection will use the truststore SPI with the truststore configured in standalone.xml/domain.xml. Always means that it will always use it. Never means that it will not use it. Only for ldaps means that it will use if your connection URL use ldaps. Note even if standalone.xml/domain.xml is not configured, the default Java cacerts or certificate specified by javax.net.ssl.trustStore property will be used.

        Choices:

        Determines if Keycloak should validate the password with the realm password policy before updating it.

        Choices:

        Controls the HTTP connections timeout period (in seconds) to Keycloak API.

        -

        Default: :ansible-option-default:`10`

        +

        Default: 10

        @@ -671,7 +672,7 @@

        added in middleware_automation.keycloak 5.4.0

        Configures the HTTP User-Agent header.

        -

        Default: :ansible-option-default:`"Ansible"`

        +

        Default: "Ansible"

        @@ -728,7 +729,7 @@

        string

        Component type for this mapper.

        -

        Default: :ansible-option-default:`"org.keycloak.storage.ldap.mappers.LDAPStorageMapper"`

        +

        Default: "org.keycloak.storage.ldap.mappers.LDAPStorageMapper"

        @@ -756,9 +757,9 @@

        Component type for user federation (only supported value is org.keycloak.storage.UserStorageProvider).

        -

        Default: :ansible-option-default:`"org.keycloak.storage.UserStorageProvider"`

        +

        Default: "org.keycloak.storage.UserStorageProvider"

        @@ -777,7 +778,7 @@

        string

        The Keycloak realm under which this user federation resides.

        -

        Default: :ansible-option-default:`"master"`

        +

        Default: "master"

        @@ -789,8 +790,8 @@

        On absent, the user federation will be removed if it exists.

        Choices:

        Verify TLS certificates (do not disable this in production).

        Choices:

        -

        Attributes

        +

        Attributes

        @@ -847,7 +848,7 @@

        Attribute

        -

        Examples

        +

        Examples

        - name: Create LDAP user federation
           middleware_automation.keycloak.keycloak_user_federation:
             auth_keycloak_url: https://keycloak.example.com/auth
        @@ -945,7 +946,7 @@
         
        -

        Return Values

        +

        Return Values

        Common return values are documented here, the following are the fields unique to this module:

        @@ -960,7 +961,7 @@

        Representation of user federation after module execution.

        Returned: on success

        -

        Sample: :ansible-rv-sample-value:`{"config": {"allowPasswordAuthentication": "false", "cachePolicy": "DEFAULT", "enabled": "true", "kerberosRealm": "EXAMPLE.COM", "keyTab": "/etc/krb5.keytab", "priority": "0", "serverPrincipal": "HTTP/host.example.com@EXAMPLE.COM", "updateProfileFirstLogin": "false"}, "id": "cf52ae4f-4471-4435-a0cf-bb620cadc122", "mappers": [], "name": "kerberos", "parentId": "myrealm", "providerId": "kerberos", "providerType": "org.keycloak.storage.UserStorageProvider"}`

        +

        Sample: {"config": {"allowPasswordAuthentication": "false", "cachePolicy": "DEFAULT", "enabled": "true", "kerberosRealm": "EXAMPLE.COM", "keyTab": "/etc/krb5.keytab", "priority": "0", "serverPrincipal": "HTTP/host.example.com@EXAMPLE.COM", "updateProfileFirstLogin": "false"}, "id": "cf52ae4f-4471-4435-a0cf-bb620cadc122", "mappers": [], "name": "kerberos", "parentId": "myrealm", "providerId": "kerberos", "providerType": "org.keycloak.storage.UserStorageProvider"}

        @@ -969,7 +970,7 @@

        Representation of existing user federation.

        Returned: always

        -

        Sample: :ansible-rv-sample-value:`{"config": {"allowKerberosAuthentication": "false", "authType": "simple", "batchSizeForSync": "1000", "bindCredential": "\*\*\*\*\*\*\*\*\*\*", "bindDn": "cn=directory reader", "cachePolicy": "DEFAULT", "changedSyncPeriod": "-1", "connectionPooling": "true", "connectionUrl": "ldaps://ldap.example.com:636", "debug": "false", "editMode": "READ\_ONLY", "enabled": "true", "fullSyncPeriod": "-1", "importEnabled": "true", "pagination": "true", "priority": "0", "rdnLDAPAttribute": "uid", "searchScope": "1", "syncRegistrations": "false", "trustEmail": "false", "useKerberosForPasswordAuthentication": "false", "useTruststoreSpi": "ldapsOnly", "userObjectClasses": "inetOrgPerson, organizationalPerson", "usernameLDAPAttribute": "uid", "usersDn": "ou=Users,dc=example,dc=com", "uuidLDAPAttribute": "entryUUID", "validatePasswordPolicy": "false", "vendor": "other"}, "id": "01122837-9047-4ae4-8ca0-6e2e891a765f", "mappers": [{"config": {"always.read.value.from.ldap": "false", "is.mandatory.in.ldap": "false", "ldap.attribute": "mail", "read.only": "true", "user.model.attribute": "email"}, "id": "17d60ce2-2d44-4c2c-8b1f-1fba601b9a9f", "name": "email", "parentId": "01122837-9047-4ae4-8ca0-6e2e891a765f", "providerId": "user-attribute-ldap-mapper", "providerType": "org.keycloak.storage.ldap.mappers.LDAPStorageMapper"}], "name": "myfed", "parentId": "myrealm", "providerId": "ldap", "providerType": "org.keycloak.storage.UserStorageProvider"}`

        +

        Sample: {"config": {"allowKerberosAuthentication": "false", "authType": "simple", "batchSizeForSync": "1000", "bindCredential": "**********", "bindDn": "cn=directory reader", "cachePolicy": "DEFAULT", "changedSyncPeriod": "-1", "connectionPooling": "true", "connectionUrl": "ldaps://ldap.example.com:636", "debug": "false", "editMode": "READ_ONLY", "enabled": "true", "fullSyncPeriod": "-1", "importEnabled": "true", "pagination": "true", "priority": "0", "rdnLDAPAttribute": "uid", "searchScope": "1", "syncRegistrations": "false", "trustEmail": "false", "useKerberosForPasswordAuthentication": "false", "useTruststoreSpi": "ldapsOnly", "userObjectClasses": "inetOrgPerson, organizationalPerson", "usernameLDAPAttribute": "uid", "usersDn": "ou=Users,dc=example,dc=com", "uuidLDAPAttribute": "entryUUID", "validatePasswordPolicy": "false", "vendor": "other"}, "id": "01122837-9047-4ae4-8ca0-6e2e891a765f", "mappers": [{"config": {"always.read.value.from.ldap": "false", "is.mandatory.in.ldap": "false", "ldap.attribute": "mail", "read.only": "true", "user.model.attribute": "email"}, "id": "17d60ce2-2d44-4c2c-8b1f-1fba601b9a9f", "name": "email", "parentId": "01122837-9047-4ae4-8ca0-6e2e891a765f", "providerId": "user-attribute-ldap-mapper", "providerType": "org.keycloak.storage.ldap.mappers.LDAPStorageMapper"}], "name": "myfed", "parentId": "myrealm", "providerId": "ldap", "providerType": "org.keycloak.storage.UserStorageProvider"}

        @@ -978,7 +979,7 @@

        Message as to what action was taken.

        Returned: always

        -

        Sample: :ansible-rv-sample-value:`"No changes required to user federation 164bb483-c613-482e-80fe-7f1431308799."`

        +

        Sample: "No changes required to user federation 164bb483-c613-482e-80fe-7f1431308799."

        @@ -987,13 +988,13 @@

        Representation of proposed user federation.

        Returned: always

        -

        Sample: :ansible-rv-sample-value:`{"config": {"allowKerberosAuthentication": "false", "authType": "simple", "batchSizeForSync": "1000", "bindCredential": "\*\*\*\*\*\*\*\*\*\*", "bindDn": "cn=directory reader", "cachePolicy": "DEFAULT", "connectionPooling": "true", "connectionUrl": "ldaps://ldap.example.com:636", "debug": "false", "editMode": "READ\_ONLY", "enabled": "true", "importEnabled": "true", "pagination": "true", "priority": "0", "rdnLDAPAttribute": "uid", "searchScope": "1", "syncRegistrations": "false", "trustEmail": "false", "useKerberosForPasswordAuthentication": "false", "useTruststoreSpi": "ldapsOnly", "userObjectClasses": "inetOrgPerson, organizationalPerson", "usernameLDAPAttribute": "uid", "usersDn": "ou=Users,dc=example,dc=com", "uuidLDAPAttribute": "entryUUID", "validatePasswordPolicy": "false", "vendor": "other"}, "name": "ldap", "providerId": "ldap", "providerType": "org.keycloak.storage.UserStorageProvider"}`

        +

        Sample: {"config": {"allowKerberosAuthentication": "false", "authType": "simple", "batchSizeForSync": "1000", "bindCredential": "**********", "bindDn": "cn=directory reader", "cachePolicy": "DEFAULT", "connectionPooling": "true", "connectionUrl": "ldaps://ldap.example.com:636", "debug": "false", "editMode": "READ_ONLY", "enabled": "true", "importEnabled": "true", "pagination": "true", "priority": "0", "rdnLDAPAttribute": "uid", "searchScope": "1", "syncRegistrations": "false", "trustEmail": "false", "useKerberosForPasswordAuthentication": "false", "useTruststoreSpi": "ldapsOnly", "userObjectClasses": "inetOrgPerson, organizationalPerson", "usernameLDAPAttribute": "uid", "usersDn": "ou=Users,dc=example,dc=com", "uuidLDAPAttribute": "entryUUID", "validatePasswordPolicy": "false", "vendor": "other"}, "name": "ldap", "providerId": "ldap", "providerType": "org.keycloak.storage.UserStorageProvider"}

        -

        Authors

        +

        Authors

        • Laurent Paumier (@laurpaum)

        diff --git a/main/releasing.html b/main/releasing.html index 24174dd..52aabb5 100644 --- a/main/releasing.html +++ b/main/releasing.html @@ -7,16 +7,17 @@ Collection Versioning Strategy — Keycloak Ansible Collection documentation + - - - - - + + + + + @@ -106,7 +107,7 @@
        -

        Collection Versioning Strategy

        +

        Collection Versioning Strategy

        Each supported collection maintained by Ansible follows Semantic Versioning 2.0.0 (https://semver.org/), for example: Given a version number MAJOR.MINOR.PATCH, the following is incremented:

        MAJOR version: when making incompatible API changes (see Feature Release scenarios below for examples)

        @@ -115,19 +116,19 @@ Given a version number MAJOR.MINOR.PATCH, the following is incremented:

        Additional labels for pre-release and build metadata are available as extensions to the MAJOR.MINOR.PATCH format.

        The first version of a generally available supported collection on Ansible Automation Hub shall be version 1.0.0. NOTE: By default, all newly created collections may begin with a smaller default version of 0.1.0, and therefore a version of 1.0.0 should be explicitly stated by the collection maintainer.

        -

        New content is added to an existing collection

        +

        New content is added to an existing collection

        Assuming the current release is 1.0.0, and a new module is ready to be added to the collection, the minor version would be incremented to 1.1.0. The change in the MINOR version indicates an additive change was made while maintaining backward compatibility for existing content within the collection.

        -

        New feature to existing plugin or role within a collection (backwards compatible)

        +

        New feature to existing plugin or role within a collection (backwards compatible)

        Assuming the current release is 1.0.0, and new features for an existing module are ready for release . We would increment the MINOR version to 1.1.0. The change in the MINOR version indicates an additive change was made while maintaining backward compatibility for existing content within the collection.

        -

        Bug fix or security fix to existing content within a collection

        +

        Bug fix or security fix to existing content within a collection

        Assuming the current release is 1.0.0 and a bug is fixed prior to the next minor release, the PATCH version would be incremented to 1.0.1. The patch indicates only a bug was fixed within a current version. The PATCH release does not contain new content, nor was functionality removed. Bug fixes may be included in a MINOR or MAJOR feature release if the timing allows, eliminating the need for a PATCH dedicated to the fix.

        -

        Breaking change to any content within a collection

        +

        Breaking change to any content within a collection

        Assuming the current release is 1.0.0, and a breaking change (API or module) is introduced for a user or developer. The MAJOR version would be incremented to 2.0.0.

        Examples of breaking changes within a collection may include but are not limited to:

          @@ -139,19 +140,19 @@ Given a version number MAJOR.MINOR.PATCH, the following is incremented:

        -

        Content removed from a collection

        +

        Content removed from a collection

        Deleting a module or API is a breaking change. Please see the ‘Breaking change’ section for how to version this.

        -

        A typographical error was fixed in the documentation for a collection

        +

        A typographical error was fixed in the documentation for a collection

        A correction to the README would be considered a bug fix and the PATCH incremented. See ‘Bug fix’ above.

        -

        Documentation added/removed/modified within a collection

        +

        Documentation added/removed/modified within a collection

        Only the PATCH version should be increased for a release that contains changes limited to revised documentation.

        -

        Release automation

        +

        Release automation

        New releases are triggered by annotated git tags named after semantic versioning. The automation publishes the built artifacts to ansible-galaxy and github releases page.

        diff --git a/main/roles/index.html b/main/roles/index.html index 3b68a09..f1fee11 100644 --- a/main/roles/index.html +++ b/main/roles/index.html @@ -7,16 +7,17 @@ Role Index — Keycloak Ansible Collection documentation + - - - - - + + + + + @@ -101,7 +102,7 @@
        -

        Role Index

        +

        Role Index

        • keycloak
            diff --git a/main/roles/keycloak.html b/main/roles/keycloak.html index bd5a18d..b693532 100644 --- a/main/roles/keycloak.html +++ b/main/roles/keycloak.html @@ -7,16 +7,17 @@ keycloak — Keycloak Ansible Collection documentation + - - - - - + + + + + @@ -113,10 +114,10 @@
            -

            keycloak

            +

            keycloak

            Install keycloak or Red Hat Single Sign-On server configurations.

            -

            Requirements

            +

            Requirements

            This role requires the python3-netaddr library installed on the controller node.

            • to install via yum/dnf: dnf install python3-netaddr

            • @@ -125,7 +126,7 @@
            -

            Dependencies

            +

            Dependencies

            The roles depends on:

        -

        Versions

        +

        Versions

        @@ -164,7 +165,7 @@

        RH-SSO VERSION

        -

        Patching

        +

        Patching

        When variable keycloak_rhsso_apply_patches is True (default: False), the role will automatically apply the latest cumulative patch for the selected base version.

        @@ -189,7 +190,7 @@
        -

        Role Defaults

        +

        Role Defaults

        • Service configuration

        @@ -435,7 +436,7 @@
        -

        Role Variables

        +

        Role Variables

        The following are a set of required variables for the role:

        @@ -559,7 +560,7 @@
        -

        Example Playbook

        +

        Example Playbook

        • The following is an example playbook that makes use of the role to install keycloak from remote:

        @@ -590,11 +591,11 @@
        -

        License

        +

        License

        Apache License 2.0

        -

        Author Information

        +

        Author Information

        • Guido Grazioli

        • Romain Pelisse

        • diff --git a/main/roles/keycloak_quarkus.html b/main/roles/keycloak_quarkus.html index 89cd5d6..866a315 100644 --- a/main/roles/keycloak_quarkus.html +++ b/main/roles/keycloak_quarkus.html @@ -7,16 +7,17 @@ keycloak_quarkus — Keycloak Ansible Collection documentation + - - - - - + + + + + @@ -108,10 +109,10 @@
          -

          keycloak_quarkus

          +

          keycloak_quarkus

          Install keycloak >= 20.0.0 (quarkus) server configurations.

          -

          Role Defaults

          +

          Role Defaults

          • Installation options

          @@ -424,7 +425,7 @@
          -

          Role Variables

          +

          Role Variables

          @@ -441,11 +442,11 @@

          Variable

          -

          License

          +

          License

          Apache License 2.0

          -

          Author Information

          +

          Author Information

          diff --git a/main/roles/keycloak_realm.html b/main/roles/keycloak_realm.html index 20c6300..485de7c 100644 --- a/main/roles/keycloak_realm.html +++ b/main/roles/keycloak_realm.html @@ -7,16 +7,17 @@ keycloak_realm — Keycloak Ansible Collection documentation + - - - - - + + + + + @@ -110,10 +111,10 @@
          -

          keycloak_realm

          +

          keycloak_realm

          Create realms and clients in keycloak or Red Hat Single Sign-On services.

          -

          Role Defaults

          +

          Role Defaults

          @@ -174,7 +175,7 @@

          Variable

          -

          Role Variables

          +

          Role Variables

          The following are a set of required variables for the role:

          @@ -231,7 +232,7 @@
          -

          Variable formats

          +

          Variable formats

          • keycloak_user_federation, a list of:

          @@ -280,7 +281,7 @@

          For a comprehensive example, refer to the playbook.

          -

          Example Playbook

          +

          Example Playbook

          The following is an example playbook that makes use of the role to create a realm in keycloak.

          ---
           - hosts: ...
          @@ -298,11 +299,11 @@
           
          -

          License

          +

          License

          Apache License 2.0

          -

          Author Information

          +

          Author Information

          • Guido Grazioli

          • Romain Pelisse

          • diff --git a/main/search.html b/main/search.html index 402bc51..a33d9f7 100644 --- a/main/search.html +++ b/main/search.html @@ -6,17 +6,18 @@ Search — Keycloak Ansible Collection documentation + - - - - - + + + + + diff --git a/main/searchindex.js b/main/searchindex.js index f8b46e0..0afc680 100644 --- a/main/searchindex.js +++ b/main/searchindex.js @@ -1 +1 @@ -Search.setIndex({"docnames": ["CHANGELOG", "README", "developing", "index", "plugins/index", "plugins/keycloak_client", "plugins/keycloak_role", "plugins/keycloak_user_federation", "releasing", "roles/index", "roles/keycloak", "roles/keycloak_quarkus", "roles/keycloak_realm", "testing"], "filenames": ["CHANGELOG.rst", "README.md", "developing.md", "index.rst", "plugins/index.rst", "plugins/keycloak_client.rst", "plugins/keycloak_role.rst", "plugins/keycloak_user_federation.rst", "releasing.md", "roles/index.rst", "roles/keycloak.md", "roles/keycloak_quarkus.md", "roles/keycloak_realm.md", "testing.md"], "titles": ["middleware_automation.keycloak Release Notes", "Ansible Collection - middleware_automation.keycloak", "Contributor\u2019s Guidelines", "Welcome to Keycloak Collection documentation", "Plugin Index", "keycloak_client \u2013 Allows administration of Keycloak clients via Keycloak API", "keycloak_role \u2013 Allows administration of Keycloak roles via Keycloak API", "keycloak_user_federation \u2013 Allows administration of Keycloak user federations via Keycloak API", "Collection Versioning Strategy", "Role Index", "keycloak", "keycloak_quarkus", "keycloak_realm", "Testing"], "terms": {"thi": [0, 1, 5, 6, 7, 8, 10], "changelog": [0, 3], "describ": [0, 1], "after": [0, 5, 6, 7, 8, 13], "version": [0, 3, 5, 6, 7, 9, 11], "updat": [0, 1, 5, 6, 7, 8], "keycloak_quarku": [0, 1, 3, 9], "22": [0, 11], "100": 0, "set": [0, 1, 5, 6, 10, 11, 12], "openjdk": [0, 10, 11], "17": [0, 1], "default": [0, 1, 2, 5, 6, 7, 8, 9], "103": 0, "fix": [0, 3], "incorrect": 0, "check": [0, 5, 7, 11], "keycloak_jgroups_subnet": [0, 10], "98": 0, "undefin": 0, "keycloak_db_valid_conn_sql": [0, 10], "91": 0, "allow": [0, 1, 3, 4, 8, 12], "overrid": [0, 2, 5, 10], "jgroup": [0, 10, 11], "subnet": [0, 10], "93": 0, "quarku": [0, 1, 11], "keycloakx": 0, "v21": 0, "92": 0, "add": [0, 6, 7], "profil": [0, 7, 10], "featur": [0, 3, 5, 10], "enabl": [0, 5, 7, 10, 11], "disabl": [0, 5, 6, 7, 10], "87": 0, "improv": 0, "servic": [0, 1, 5, 7, 10, 11, 12], "restart": [0, 10], "behavior": [0, 5, 10], "configur": [0, 3, 5, 6, 7, 10, 11, 12], "88": 0, "xa_datasource_class": 0, "valu": [0, 4, 12], "mariadb": [0, 10, 11], "jdbc": [0, 10, 11], "89": 0, "handl": 0, "wflyctl0117": 0, "when": [0, 1, 2, 5, 6, 7, 8, 10], "background": [0, 10], "valid": [0, 2, 5, 7, 10], "milli": 0, "i": [0, 1, 3, 5, 6, 7, 10, 11, 12, 13], "90": 0, "databas": [0, 7, 10, 11], "connect": [0, 5, 6, 7, 8, 10, 11], "pool": [0, 7, 10], "85": 0, "administr": [0, 1, 3, 4, 10, 11, 12], "endpoint": [0, 5, 10, 11], "url": [0, 5, 6, 7, 10, 11, 12], "86": 0, "forc": [0, 5, 10], "backend": [0, 10, 11], "frontend": [0, 10], "84": 0, "introduc": [0, 8], "systemd": [0, 10, 13], "unit": 0, "81": 0, "sqlserver": [0, 10], "role": [0, 2, 3, 4, 5, 7, 13], "78": 0, "xa": [0, 11], "transact": [0, 7, 11], "73": 0, "deprec": [0, 8, 10], "warn": 0, "ipaddr": 0, "77": 0, "fact": 0, "offlin": [0, 10, 11], "patch": [0, 8, 9], "sso": [0, 1, 10], "71": 0, "setup": [0, 13], "ha": [0, 1, 5, 6, 7, 10], "cluster": [0, 1, 5, 10, 11, 13], "without": [0, 5, 6, 7], "remot": [0, 10, 11, 13], "cach": [0, 1, 7, 10, 11, 13], "store": [0, 5, 7, 10], "68": 0, "pass": [0, 6, 10, 11], "attribut": [0, 4], "realm": [0, 1, 5, 6, 7, 10, 11, 12], "client": [0, 1, 3, 4, 6, 7, 10, 11, 12], "69": 0, "provid": [0, 1, 5, 6, 7, 12, 13], "config": [0, 5, 7, 12], "multipl": [0, 1], "modclust": [0, 10], "proxi": [0, 10, 11], "60": 0, "tcpping": [0, 10], "discoveri": [0, 10], "62": 0, "drop": [0, 5], "commun": [0, 10], "gener": [0, 5, 7, 8], "from": [0, 2, 3, 5, 7, 10], "depend": [0, 1, 5, 7, 9, 13], "61": 0, "switch": 0, "redhat_csp_download": 0, "common": [0, 5, 6, 7, 10], "63": 0, "rh": [0, 1, 10], "64": 0, "file": [0, 1, 2, 7, 10, 11], "path": [0, 1, 2, 10, 11, 12], "conf": [0, 11], "j2": 0, "templat": [0, 5, 10], "53": 0, "18": [0, 10], "46": 0, "variabl": [0, 1, 2, 9], "keycloak_no_log": 0, "control": [0, 5, 6, 7, 10], "ansibl": [0, 2, 3, 5, 6, 7, 8, 10, 13], "no_log": 0, "paramet": [0, 4, 8, 10], "debug": [0, 7], "purpos": 0, "47": 0, "start": [0, 2, 11], "retri": 0, "delai": 0, "51": 0, "develop": [0, 8, 11], "mode": [0, 5, 6, 7, 11], "45": 0, "renam": 0, "infinispan_": 0, "prefix": 0, "keycloak_infinispan_": 0, "42": 0, "var": [0, 2, 10, 12], "log": [0, 7, 11], "symlink": 0, "directori": [0, 1, 2, 7, 10, 11, 13], "44": 0, "us": [0, 1, 2, 5, 6, 7, 10, 11, 12], "absolut": 0, "certif": [0, 5, 6, 7, 10, 11], "39": 0, "becom": [0, 7], "task": [0, 1, 2, 10, 12], "otherwis": [0, 5], "fail": 0, "38": 0, "select": [0, 10], "java": [0, 7, 10, 11], "34": 0, "logfil": 0, "correctli": 0, "under": [0, 2, 5, 6, 7], "home": [0, 11], "35": 0, "option": [0, 5, 6, 7, 10, 11, 12], "32": 0, "new": [0, 3, 6, 7], "instal": [0, 3, 5, 6, 7, 10, 11, 13], "29": 0, "keycloak_config_override_templ": [0, 10], "custom": [0, 1, 6, 10], "xml": [0, 5, 7, 10], "30": [0, 10], "make": [0, 1, 8, 10, 12], "sure": [0, 1], "jvm": [0, 10, 11], "31": 0, "keycloak_admin_password": [0, 1, 10, 12], "assert": [0, 5], "wa": [0, 3, 5, 6, 7], "26": 0, "simplifi": 0, "logic": 0, "reduc": 0, "plai": [0, 2], "execut": [0, 1, 5, 6, 7], "time": [0, 5, 8], "19": 0, "keycloak_frontend_url": [0, 10], "accord": 0, "other": [0, 2, 5, 7, 13], "25": 0, "enhanc": 0, "bug": [0, 3], "document": [0, 5, 6, 7], "appli": [0, 7, 10], "latest": [0, 10], "cumul": [0, 10], "automat": [0, 7, 10, 13], "keycloak_rhsso_apply_patch": [0, 10], "true": [0, 1, 5, 6, 7, 10, 11, 12], "now": 0, "perform": [0, 1, 10, 11], "initi": [0, 7], "first": [0, 7, 8], "node": [0, 5, 10], "avoid": [0, 2], "lock": 0, "issu": [0, 5], "stabl": 0, "collect": [0, 5, 6, 7, 10, 12, 13], "note": [1, 5, 7, 8, 10], "If": [1, 5, 6, 7, 11], "you": [1, 5, 6, 7], "ar": [1, 2, 5, 6, 7, 8, 10, 12, 13], "red": [1, 3, 7, 10, 12], "hat": [1, 3, 7, 10, 12], "redhat": 1, "autom": [1, 2, 3], "hub": [1, 8], "certifi": 1, "singl": [1, 3, 5, 6, 7, 10, 12], "sign": [1, 3, 5, 10, 12], "On": [1, 3, 5, 6, 7, 10, 12], "been": [1, 5, 6, 7], "test": [1, 3, 5, 6, 8], "against": [1, 7], "follow": [1, 2, 5, 6, 7, 8, 10, 12, 13], "2": [1, 2, 3, 7, 8, 10, 11, 12, 13], "9": [1, 10, 11, 13], "10": [1, 5, 6, 7, 10], "plugin": [1, 3], "modul": [1, 5, 6, 7, 8], "within": [1, 3, 7], "mai": [1, 5, 6, 7, 8], "onli": [1, 5, 7, 8, 10], "specif": [1, 2, 5, 11], "A": [1, 3, 5, 6, 7, 13], "contain": [1, 2, 5, 7, 8, 12], "metadata": [1, 8], "identifi": [1, 7], "befor": [1, 5, 7], "need": [1, 2, 5, 6, 7, 8], "cli": [1, 5, 6, 7, 10, 11, 12], "can": [1, 5, 6, 7], "also": [1, 7, 10], "requir": [1, 2, 5, 6, 7, 8, 9, 11, 12, 13], "yml": [1, 2, 10, 13], "via": [1, 3, 4, 10], "r": [1, 10, 13], "format": [1, 5, 8, 9, 10, 11], "name": [1, 2, 5, 6, 7, 8, 10, 11, 12], "The": [1, 5, 6, 7, 8, 10, 11, 12, 13], "python": [1, 13], "packag": [1, 10, 11], "present": [1, 5, 6, 7], "host": [1, 7, 10, 12], "netaddr": [1, 10], "pip": [1, 10, 13], "txt": [1, 10, 13], "keycloak_realm": [1, 3, 9], "user": [1, 2, 4, 5, 6, 8, 10, 11, 12], "feder": [1, 3, 4, 12], "": [1, 3, 5, 7, 11], "an": [1, 3, 5, 6, 7, 10, 11, 12], "variant": 1, "0": [1, 3, 5, 6, 7, 8, 10, 11, 12], "base": [1, 5, 10], "defin": [1, 2, 5, 7, 10], "most": [1, 7], "both": [1, 5], "differ": [1, 5, 7], "section": [1, 5, 8], "For": [1, 5, 7, 12], "full": [1, 5, 6, 7], "detail": [1, 5, 6, 7], "refer": [1, 5, 12], "readm": [1, 8], "zip": [1, 10, 11], "archiv": [1, 10, 11], "avail": [1, 5, 8, 12, 13], "work": [1, 5, 6, 7, 10, 11], "keycloak_offline_instal": [1, 10], "skip": 1, "download": [1, 3, 10, 11], "local": [1, 10, 13], "doe": [1, 5, 6, 7, 8], "match": [1, 10], "so": [1, 5, 7], "provis": [1, 7], "It": [1, 5, 6, 7], "possibl": [1, 2, 5, 7], "keycloak_download_url": [1, 10], "final": 1, "filenam": [1, 10, 11], "ie": [1, 2], "legaci": [1, 10], "x": 1, "y": 1, "z": 1, "server": [1, 5, 7, 10, 11], "dist": 1, "root": [1, 5, 10, 11], "ansible_host": 1, "e": [1, 2, 5, 6, 11], "rhn": 1, "cred": 1, "changem": [1, 12], "password": [1, 5, 6, 7, 10, 11, 12], "consol": [1, 5, 7, 10, 11, 12], "account": [1, 5, 10, 11, 12], "inventori": [1, 8, 13], "below": [1, 5, 7, 8], "deploi": 1, "localhost": [1, 5, 6, 10, 11, 12, 13], "ansible_connect": [1, 13], "all": [1, 2, 5, 6, 7, 8, 10, 13], "belong": 1, "must": [1, 5, 6, 7], "ansible_play_batch": 1, "thei": [1, 5, 7], "target": [1, 5, 6, 7], "same": [1, 2, 5, 7], "creat": [1, 5, 6, 7, 8, 12, 13], "apach": [1, 10, 11, 12], "v2": [1, 5], "later": 1, "see": [1, 5, 7, 8], "view": 1, "text": 1, "yaml": 2, "extens": [2, 5, 8], "space": [2, 7], "around": 2, "jinja": 2, "over": 2, "intern": [2, 5], "should": [2, 5, 7, 8, 10, 11, 12], "lowercas": 2, "keep": 2, "self": 2, "includ": [2, 5, 7, 8, 10, 12, 13], "do": [2, 5, 6, 7], "noth": 2, "more": [2, 7, 11], "than": [2, 5], "list": [2, 5, 6, 7, 10, 11, 12], "except": 2, "where": [2, 5, 7], "pre_task": 2, "post_task": 2, "separ": [2, 5, 6, 7, 11], "underscor": 2, "g": [2, 5, 6], "my_rol": 2, "my_playbook": 2, "dash": 2, "my": [2, 6, 7], "trail": 2, "slash": 2, "my_path": 2, "foo": [2, 7], "concaten": 2, "convent": 2, "bar": 2, "indent": 2, "each": [2, 8], "v": 2, "interpol": 2, "don": [2, 7], "t": [2, 7, 11], "chang": [2, 3, 5, 6, 7, 13], "overridden": 2, "go": [2, 5], "those": [2, 7], "would": [2, 5, 6, 7, 8], "like": 2, "argument": 2, "have": [2, 5, 6, 7], "meta": 2, "argument_spec": 2, "playbook": [2, 3, 5, 6, 7, 8, 9], "focus": 2, "compat": [2, 3], "platform": 2, "middleware_autom": [3, 5, 6, 7, 10, 12, 13], "usag": 3, "licens": [3, 9], "index": [3, 5, 6, 7], "keycloak_cli": [3, 4, 12], "api": [3, 4, 8], "keycloak_rol": [3, 4], "keycloak_user_feder": [3, 4, 12], "continu": 3, "integr": 3, "contributor": 3, "guidelin": 3, "strategi": 3, "content": [3, 5, 7], "ad": [3, 5, 6, 7], "exist": [3, 5, 6, 7, 10, 11], "backward": 3, "secur": 3, "break": [3, 13], "ani": [3, 5, 7], "remov": [3, 5, 6, 7, 10, 11], "typograph": 3, "error": 3, "modifi": [3, 5, 6, 7], "releas": [3, 10, 11, 13], "v1": 3, "8": [3, 5, 6, 10], "devel": 3, "7": [3, 5, 7, 10], "6": [3, 10], "5": [3, 5, 6, 7, 10, 13], "4": [3, 5, 6, 7, 10, 11], "1": [3, 5, 7, 8, 10], "3": [3, 5, 6, 7, 10, 13], "infinispan": [3, 10, 11, 13], "data": [3, 5, 7, 11], "grid": 3, "wildfli": [3, 13], "jboss": [3, 10], "eap": [3, 10], "tomcat": 3, "jw": 3, "activemq": 3, "amq": 3, "broker": 3, "kafka": 3, "stream": 3, "csp": 3, "jcliff": 3, "keycloak": [4, 9, 11, 12, 13], "synopsi": 4, "exampl": [4, 8, 9], "return": [4, 8], "author": [4, 9], "part": [5, 6, 7], "To": [5, 6, 7, 10], "galaxi": [5, 6, 7, 8, 10, 13], "specifi": [5, 6, 7, 10, 11], "rest": [5, 6, 7, 10, 11, 12], "access": [5, 6, 7], "openid": [5, 6, 7], "being": [5, 6, 7], "requisit": [5, 6, 7], "right": [5, 6, 7], "In": [5, 6, 7, 13], "admin": [5, 6, 7, 10, 11, 12], "definit": [5, 6, 7], "scope": [5, 6, 7], "tailor": [5, 6, 7], "your": [5, 6, 7], "expect": [5, 6, 7], "snake_cas": [5, 6, 7], "camelcas": [5, 6, 7], "ones": [5, 6, 7], "found": [5, 6, 7], "its": [5, 6, 7], "http": [5, 6, 7, 8, 10, 11, 12, 13], "www": [5, 6, 7], "org": [5, 6, 7, 8, 10, 11, 12], "doc": [5, 6, 7, 12], "html": [5, 6, 7], "alias": [5, 6, 7], "well": 5, "alwai": [5, 6, 7, 10], "saniti": 5, "input": 5, "saml": 5, "instanc": [5, 6, 7], "vice": 5, "versa": 5, "Be": 5, "care": 5, "usual": [5, 7], "sensibl": 5, "chosen": [5, 7], "comment": [5, 6, 7], "admin_url": 5, "adminurl": 5, "string": [5, 6, 7], "interfac": 5, "always_display_in_consol": 5, "alwaysdisplayinconsol": 5, "boolean": [5, 6, 7], "whether": [5, 7, 11], "displai": [5, 7], "even": [5, 7], "activ": [5, 7, 10], "session": 5, "choic": [5, 6, 7], "entri": [5, 6, 7, 8, 11], "fals": [5, 6, 7, 10, 11, 12], "dictionari": [5, 6, 7, 12], "dict": [5, 6, 7, 10], "further": 5, "variou": 5, "given": [5, 7, 8], "while": [5, 8], "exhaust": 5, "permiss": 5, "appropri": 5, "protocol": [5, 7, 10], "anywai": 5, "simpli": 5, "jwk": 5, "kei": [5, 6, 7, 11], "jwt": 5, "credenti": [5, 6, 7], "base64": 5, "encod": 5, "request": [5, 7, 10], "object": [5, 7], "signatur": 5, "alg": 5, "jwa": 5, "algorithm": 5, "which": [5, 6, 7, 12, 13], "send": 5, "oidc": 5, "One": 5, "none": [5, 7, 10, 11], "rs256": 5, "authnstat": 5, "statement": 5, "method": [5, 7], "timestamp": 5, "login": [5, 7], "respons": 5, "encrypt": [5, 7], "public": [5, 11, 12], "post": 5, "bind": [5, 7, 10, 11], "onetimeus": 5, "condit": 5, "keyinfo": 5, "ext": 5, "redirect": 5, "lookup": [5, 7], "optim": 5, "through": [5, 7], "inclus": 5, "id": [5, 6, 7, 12], "element": [5, 7], "rsa_sha256": 5, "rsa_sha1": 5, "rsa_sha512": 5, "dsa_sha1": 5, "privat": [5, 11], "saml_assertion_consumer_url_post": 5, "consum": 5, "saml_assertion_consumer_url_redirect": 5, "saml_force_name_id_format": 5, "ignor": 5, "nameid": 5, "subject": 5, "one": [5, 7, 11], "instead": [5, 7], "saml_name_id_format": 5, "usernam": [5, 6, 7, 10, 11, 12], "email": [5, 7, 12], "transient": 5, "persist": 5, "saml_signature_canonicalization_method": 5, "canonic": 5, "four": 5, "w3": 5, "2001": 5, "exc": 5, "c14n": 5, "exclus": 5, "withcom": 5, "exclusive_with_com": 5, "tr": 5, "rec": 5, "20010315": 5, "inclusive_with_com": 5, "saml_single_logout_service_url_post": 5, "logout": 5, "saml_single_logout_service_url_redirect": 5, "obtain": [5, 7], "info": [5, 11], "userinfo": 5, "unsign": 5, "auth_client_id": [5, 6, 7], "client_id": [5, 6, 7, 12], "authent": [5, 6, 7, 10, 11, 12], "auth_client_secret": [5, 6, 7], "secret": [5, 6, 7], "conjunct": [5, 6, 7], "auth_keycloak_url": [5, 6, 7], "auth_password": [5, 6, 7], "auth_realm": [5, 6, 7], "auth_usernam": [5, 6, 7], "authentication_flow_binding_overrid": 5, "authenticationflowbindingoverrid": 5, "flow": 5, "authorization_services_en": 5, "authorizationservicesen": 5, "authorization_set": 5, "authorizationset": 5, "structur": [5, 8], "pleas": [5, 8], "_resourceserverrepresent": 5, "base_url": 5, "baseurl": 5, "auth": [5, 6, 7, 10, 11, 12], "link": [5, 7], "back": [5, 7], "bearer_onli": 5, "beareronli": 5, "type": [5, 7, 10, 12], "bearer": 5, "client_authenticator_typ": 5, "clientauthenticatortyp": 5, "how": [5, 8, 10], "either": [5, 8, 12], "clientid": 5, "alphanumer": 5, "take": 5, "preced": 5, "client_templ": 5, "clienttempl": 5, "field": [5, 6, 7], "silent": 5, "connection_timeout": [5, 6, 7], "integ": [5, 6, 7], "timeout": [5, 6, 7], "period": [5, 6, 7], "second": [5, 6, 7], "consent_requir": 5, "consentrequir": 5, "consent": 5, "default_client_scop": 5, "defaultclientscop": 5, "default_rol": 5, "defaultrol": 5, "referenc": 5, "yet": [5, 6, 7], "descript": [5, 6, 7, 10, 11, 12], "direct_access_grants_en": 5, "directaccessgrantsen": 5, "direct": 5, "grant": 5, "frontchannel_logout": 5, "frontchannellogout": 5, "frontchannel": 5, "full_scope_allow": 5, "fullscopeallow": 5, "http_agent": [5, 6, 7], "agent": [5, 6, 7], "header": [5, 6, 7], "uuid": [5, 7], "implicit_flow_en": 5, "implicitflowen": 5, "implicit": 5, "node_re_registration_timeout": 5, "nodereregistrationtimeout": 5, "re": 5, "registr": [5, 7], "not_befor": 5, "notbefor": 5, "revok": 5, "token": [5, 6, 7], "date": [5, 10], "unix": 5, "optional_client_scop": 5, "optionalclientscop": 5, "protocol_mapp": 5, "protocolmapp": 5, "mapper": [5, 7, 12], "sourc": 5, "parent": [5, 7], "class": [5, 7], "easiest": [5, 7], "dump": [5, 7], "alreadi": [5, 7], "consenttext": 5, "human": 5, "readabl": 5, "accept": [5, 7], "imposs": 5, "sinc": [5, 7], "extend": [5, 7], "spi": [5, 7], "ship": 5, "least": 5, "docker": [5, 10, 13], "address": [5, 10, 11], "group": [5, 10, 11], "membership": 5, "hardcod": [5, 7], "claim": 5, "script": 5, "sha256": 5, "pairwis": 5, "sub": 5, "usermodel": 5, "properti": [5, 7], "usersessionmodel": 5, "look": 5, "public_cli": [5, 12], "publiccli": 5, "master": [5, 6, 7, 10, 11, 12], "redirect_uri": 5, "redirecturi": 5, "uri": 5, "registered_nod": 5, "registerednod": 5, "regist": 5, "nodenam": 5, "last": 5, "registration_access_token": 5, "registrationaccesstoken": 5, "root_url": 5, "rooturl": 5, "append": 5, "rel": [5, 11], "here": [5, 6, 7], "exit": 5, "current": [5, 8], "save": 5, "service_accounts_en": 5, "serviceaccountsen": 5, "standard_flow_en": 5, "standardflowen": 5, "standard": [5, 7], "state": [5, 6, 7, 8], "absent": [5, 6, 7], "surrogate_auth_requir": 5, "surrogateauthrequir": 5, "surrog": 5, "use_template_config": 5, "usetemplateconfig": 5, "use_template_mapp": 5, "usetemplatemapp": 5, "use_template_scop": 5, "usetemplatescop": 5, "validate_cert": [5, 6, 7], "verifi": [5, 6, 7, 13], "tl": [5, 6, 7, 10, 11, 12], "product": [5, 6, 7], "web_origin": [5, 12], "weborigin": 5, "cor": 5, "origin": [5, 12], "support": [5, 6, 7, 8, 12], "check_mod": [5, 6, 7], "run": [5, 6, 7, 10, 11, 13], "statu": [5, 6, 7, 10], "predict": [5, 6, 7], "diff_mod": [5, 6, 7], "Will": [5, 6, 7], "what": [5, 6, 7], "possibli": [5, 6, 7], "diff": [5, 6, 7], "minim": 5, "com": [5, 6, 7, 10, 11, 13], "delegate_to": [5, 6], "delet": [5, 6, 7, 8], "bell": 5, "whistl": 5, "d8b127a3": 5, "31f6": 5, "44c8": 5, "a7e4": 5, "4ab9a3e78d95": 5, "this_is_a_test": 5, "wonder": 5, "basepath": 5, "reallywellkeptsecret": 5, "8888": 5, "1507825725": 5, "node01": 5, "1507828202": 5, "eyjwt_token": 5, "test01": 5, "test02": 5, "browser": 5, "4c90336b": 5, "bf1d": 5, "4b87": 5, "916d": 5, "3677ba4e5fbb": 5, "family_nam": 5, "jsontyp": 5, "label": [5, 8], "lastnam": [5, 12], "familynam": 5, "famili": 5, "nameformat": 5, "basic": 5, "certificateher": 5, "privatekeyher": 5, "jwks_url_for_client_auth_jwt": 5, "jwt_credential_certificate_for_client_auth": 5, "uniqu": [5, 6, 7], "end_stat": [5, 6, 7], "represent": [5, 6, 7], "sampl": [5, 6, 7, 13], "truncat": [5, 6], "success": [5, 6, 7], "rv": [5, 6, 7], "_url": 5, "msg": [5, 6, 7], "messag": [5, 6, 7], "action": [5, 6, 7], "taken": [5, 6, 7], "testclient": 5, "propos": [5, 6, 7], "eik": 5, "frost": 5, "eikef": 5, "multi": [6, 13], "individu": [6, 11], "wai": 6, "call": [6, 10, 11, 12], "translat": 6, "suitabl": 6, "pair": [6, 10], "resid": [6, 7], "consid": [6, 8], "kc": 6, "mycustomrealm": 6, "myclient": 6, "some": [6, 7], "attrib1": 6, "value1": 6, "attrib2": 6, "value2": 6, "attrib3": 6, "numer": 6, "item": 6, "clientrol": 6, "composit": 6, "containerid": 6, "9f03eb61": 6, "a826": 6, "4771": 6, "a9fd": 6, "930e06d2d36a": 6, "561703dd": 6, "0f38": 6, "45ff": 6, "9a5a": 6, "0c978f794547": 6, "myrol": 6, "laurent": [6, 7], "paumier": [6, 7], "laurpaum": [6, 7], "20": [7, 10, 11], "provider_id": [7, 12], "ldap": 7, "kerbero": 7, "sssd": 7, "allowkerberosauthent": 7, "spnego": 7, "about": 7, "allowpasswordauthent": 7, "authtyp": 7, "dure": 7, "oper": 7, "sent": 7, "simpl": 7, "batchsizeforsync": 7, "count": 7, "import": 7, "1000": 7, "bindcredenti": 7, "binddn": 7, "dn": 7, "cachepolici": 7, "polici": 7, "storag": [7, 12], "evict": 7, "_daili": 7, "_weekli": 7, "max": 7, "_lifespan": 7, "NO": 7, "_cach": 7, "changedsyncperiod": 7, "synchron": 7, "newli": [7, 8], "connectionpool": 7, "determin": 7, "connectionpoolingauthent": 7, "digest": 7, "md5": 7, "connectionpoolingdebug": 7, "indic": [7, 8], "level": [7, 11], "output": 7, "produc": 7, "fine": 7, "trace": 7, "creation": 7, "inform": [7, 9], "connectionpoolinginits": 7, "number": [7, 8], "per": 7, "ident": 7, "connectionpoolingmaxs": 7, "maximum": 7, "maintain": [7, 8], "concurr": 7, "connectionpoolingprefs": 7, "prefer": [7, 10], "connectionpoolingprotocol": 7, "plain": 7, "ssl": 7, "connectionpoolingtimeout": 7, "millisecond": 7, "idl": 7, "remain": 7, "close": 7, "connectiontimeout": 7, "connectionurl": 7, "customusersearchfilt": 7, "addit": [7, 8, 10, 11], "filter": [7, 8], "search": 7, "leav": [7, 10, 11], "empti": [7, 10, 11], "krb5loginmodul": 7, "editmod": 7, "read_onli": 7, "read": 7, "writabl": 7, "mean": 7, "sync": 7, "demand": 7, "unsync": 7, "_onli": 7, "evictiondai": 7, "dai": 7, "week": 7, "invalid": 7, "evictionhour": 7, "hour": 7, "evictionminut": 7, "minut": 7, "fullsyncperiod": 7, "importen": 7, "db": [7, 10], "kerberosrealm": 7, "keytab": 7, "locat": 7, "princip": 7, "etc": [7, 10, 11], "krb5": 7, "maxlifespan": 7, "lifespan": 7, "pagin": 7, "prioriti": 7, "lowest": 7, "rdnldapattribut": 7, "rdn": 7, "top": 7, "typic": 7, "howev": 7, "cn": 7, "might": 7, "samaccountnam": 7, "readtimeout": 7, "searchscop": 7, "subtre": 7, "whole": 7, "serverprincip": 7, "domain": 7, "starttl": 7, "syncregistr": 7, "effect": 7, "trustemail": 7, "verif": 7, "updateprofilefirstlogin": 7, "usekerberosforpasswordauthent": 7, "usepasswordmodifyextendedop": 7, "ldapv3": 7, "rfc": 7, "3062": 7, "good": 7, "randomli": 7, "usernameldapattribut": 7, "map": [7, 12], "mani": 7, "vendor": 7, "uid": 7, "fill": 7, "record": 7, "want": 7, "userobjectclass": 7, "objectclass": 7, "divid": 7, "comma": [7, 11], "inetorgperson": 7, "organizationalperson": 7, "written": 7, "just": 7, "usersdn": 7, "tree": 7, "usetruststorespi": 7, "truststor": [7, 10], "standalon": [7, 10], "never": 7, "cacert": [7, 10, 11], "javax": 7, "net": 7, "ldapsonli": 7, "uuidldapattribut": 7, "entryuuid": 7, "objectguid": 7, "notion": 7, "suppos": 7, "among": 7, "validatepasswordpolici": 7, "short": 7, "write": 7, "rhd": 7, "left": 7, "associ": 7, "identityprovidermapp": 7, "parentid": 7, "blank": 7, "providerid": 7, "providertyp": 7, "compon": 7, "ldapstoragemapp": 7, "parent_id": 7, "provider_typ": [7, 12], "userstorageprovid": [7, 12], "636": 7, "ou": 7, "dc": 7, "reader": 7, "cf52ae4f": 7, "4471": 7, "4435": 7, "a0cf": 7, "bb620cadc122": 7, "myrealm": 7, "01122837": 7, "9047": 7, "4ae4": 7, "8ca0": 7, "6e2e891a765f": 7, "mandatori": 7, "mail": 7, "model": 7, "17d60ce2": 7, "2d44": 7, "4c2c": 7, "8b1f": 7, "1fba601b9a9f": 7, "myfe": 7, "No": 7, "164bb483": 7, "c613": 7, "482e": 7, "80fe": 7, "7f1431308799": 7, "semant": 8, "semver": 8, "major": 8, "minor": 8, "increment": 8, "incompat": 8, "scenario": 8, "function": [8, 13], "manner": 8, "matrix": 8, "strict": 8, "pre": [8, 10, 11], "build": 8, "shall": 8, "By": 8, "begin": 8, "smaller": 8, "therefor": 8, "explicitli": 8, "assum": 8, "readi": 8, "made": 8, "we": [8, 12], "prior": 8, "next": 8, "nor": 8, "elimin": 8, "dedic": 8, "limit": 8, "argspec": 8, "shape": 8, "inbound": 8, "payload": 8, "cfg": 8, "outcom": 8, "previou": 8, "correct": [8, 13], "abov": 8, "increas": 8, "revis": 8, "trigger": 8, "annot": 8, "git": [8, 13], "tag": 8, "publish": 8, "built": 8, "artifact": 8, "github": [8, 10, 11, 13], "page": 8, "python3": 10, "librari": 10, "yum": 10, "dnf": 10, "posix": [10, 11], "ga": 10, "septemb": 10, "2021": 10, "15": 10, "june": 10, "2022": 10, "cp": 10, "januari": 10, "novemb": 10, "11": [10, 11], "keycloak_ha_en": 10, "auto": [10, 11], "keycloak_ha_discoveri": 10, "member": 10, "jdbc_ping": 10, "keycloak_db_en": 10, "els": [10, 11], "keycloak_remote_cache_en": 10, "keycloak_admin_us": [10, 12], "keycloak_bind_address": 10, "port": [10, 11, 12], "keycloak_management_port_bind_address": 10, "manag": [10, 11, 12], "127": 10, "keycloak_host": [10, 12], "hostnam": [10, 11, 12], "keycloak_http_port": [10, 11, 12], "8080": [10, 11, 12], "keycloak_https_port": [10, 12], "8443": [10, 11, 12], "keycloak_ajp_port": 10, "ajp": [10, 11], "8009": [10, 11], "keycloak_jgroups_port": 10, "tcp": [10, 11], "7600": [10, 11], "keycloak_management_http_port": [10, 11, 12], "9990": [10, 12], "keycloak_management_https_port": 10, "9993": 10, "keycloak_prefer_ipv4": 10, "ipv4": 10, "stack": 10, "keycloak_config_standalone_xml": 10, "keycloak_service_us": 10, "keycloak_service_group": 10, "keycloak_service_restart_alwai": 10, "keycloak_service_restart_on_failur": 10, "failur": 10, "keycloak_service_startlimitintervalsec": 10, "startlimitintervalsec": 10, "300": 10, "keycloak_service_startlimitburst": 10, "startlimitburst": 10, "keycloak_service_restartsec": 10, "restartsec": 10, "keycloak_service_pidfil": 10, "pid": [10, 11], "keycloak_featur": 10, "known": 10, "keycloak_jvm_packag": 10, "rhel": [10, 11, 13], "runtim": [10, 11], "headless": [10, 11], "keycloak_java_hom": 10, "java_hom": [10, 11], "jre": [10, 11], "rpm": [10, 11], "keycloak_java_opt": 10, "xms1024m": [10, 11], "xmx2048m": [10, 11], "keycloak_vers": 10, "keycloak_dest": 10, "opt": [10, 11], "keycloak_arch": 10, "keycloak_configure_firewalld": 10, "ensur": [10, 11, 13], "firewalld": [10, 11], "miscellan": [10, 11], "keycloak_download_url_9x": 10, "keycloak_installdir": 10, "keycloak_jboss_hom": 10, "keycloak_rhsso_installdir": 10, "keycloak_config_dir": 10, "keycloak_config_path_to_standalone_xml": 10, "keycloak_auth_realm": [10, 12], "keycloak_auth_cli": [10, 11, 12], "keycloak_force_instal": [10, 11], "keycloak_url": [10, 11, 12], "keycloak_management_url": [10, 11, 12], "keycloak_frontend_url_forc": 10, "keycloak_db_background_valid": 10, "keycloak_db_background_validation_milli": 10, "frequenli": 10, "10000": 10, "keycloak_db_background_validate_on_match": 10, "minimum": 10, "12": 10, "charact": 10, "keycloak_modcluster_en": 10, "subsystem": 10, "keycloak_modcluster_url": 10, "revers": [10, 11], "keycloak_modcluster_port": 10, "6666": 10, "keycloak_jdbc_engin": 10, "engin": [10, 11], "postgr": [10, 11], "keycloak_infinispan_url": 10, "11122": 10, "keycloak_infinispan_us": 10, "supervisor": [10, 11], "keycloak_infinispan_pass": 10, "keycloak_infinispan_sasl_mechan": 10, "scram": [10, 11], "sha": [10, 11], "512": [10, 11], "keycloak_infinispan_use_ssl": 10, "hotrod": 10, "keycloak_infinispan_trust_store_path": 10, "pki": [10, 11], "keycloak_infinispan_trust_store_password": 10, "open": 10, "changeit": [10, 11], "keycloak_jdbc_url": 10, "postgresql": [10, 11], "5432": [10, 11], "keycloak_jdbc_driver_vers": 10, "driver": [10, 11], "1212": [10, 11], "keycloak_db_us": 10, "keycloak_db_pass": 10, "queri": 10, "sql": 10, "keycloak_admin_url": 10, "infer": 10, "machin": 10, "rout": 10, "remembertochangem": 10, "include_rol": [10, 12], "16": 10, "guido": [10, 11, 12], "grazioli": [10, 11, 12], "romain": [10, 12], "peliss": [10, 12], "pavan": 10, "kumar": 10, "motaparthi": 10, "keycloak_quarkus_vers": 11, "keycloak_quarkus_ha_en": 11, "keycloak_quarkus_db_en": 11, "keycloak_quarkus_admin_us": 11, "keycloak_quarkus_bind_address": 11, "keycloak_quarkus_host": 11, "keycloak_quarkus_http_port": 11, "keycloak_quarkus_https_port": 11, "keycloak_quarkus_ajp_port": 11, "keycloak_quarkus_jgroups_port": 11, "keycloak_quarkus_service_us": 11, "keycloak_quarkus_service_group": 11, "keycloak_quarkus_service_pidfil": 11, "keycloak_quarkus_jvm_packag": 11, "keycloak_quarkus_java_hom": 11, "keycloak_quarkus_java_opt": 11, "keycloak_quarkus_frontend_url": 11, "keycloak_quarkus_http_relative_path": 11, "context": [11, 12], "keycloak_quarkus_http_en": 11, "listen": 11, "keycloak_quarkus_https_en": 11, "keycloak_quarkus_key_fil": 11, "pem": 11, "keycloak_quarkus_cert_fil": 11, "chain": 11, "crt": 11, "keycloak_quarkus_jdbc_engin": 11, "postr": 11, "keycloak_quarkus_db_us": 11, "keycloak_quarkus_db_pass": 11, "keycloak_quarkus_jdbc_url": 11, "keycloak_quarkus_jdbc_driver_vers": 11, "keycloak_quarkus_ispn_us": 11, "keycloak_quarkus_ispn_pass": 11, "keycloak_quarkus_ispn_url": 11, "keycloak_quarkus_ispn_sasl_mechan": 11, "mechan": 11, "keycloak_quarkus_ispn_use_ssl": 11, "keycloak_quarkus_ispn_trust_store_path": 11, "trust": 11, "keycloak_quarkus_ispn_trust_store_password": 11, "keystor": 11, "keycloak_quarkus_offline_instal": 11, "keycloak_quarkus_download_url": 11, "keycloak_quarkus_dest": 11, "keycloak_quarkus_arch": 11, "keycloak_quarkus_configure_firewalld": 11, "keycloak_quarkus_metrics_en": 11, "metric": 11, "keycloak_quarkus_health_en": 11, "expos": 11, "health": 11, "keycloak_quarkus_installdir": 11, "keycloak_quarkus_hom": 11, "keycloak_quarkus_config_dir": 11, "keycloak_quarkus_master_realm": 11, "keycloak_quarkus_log": 11, "handler": 11, "keycloak_quarkus_log_level": 11, "categori": 11, "keycloak_quarkus_log_fil": 11, "keycloak_quarkus_log_format": 11, "d": 11, "yyyi": 11, "mm": 11, "dd": 11, "hh": 11, "ss": 11, "sss": 11, "5p": 11, "c": 11, "n": 11, "keycloak_quarkus_proxy_mod": 11, "forward": 11, "behind": 11, "edg": 11, "keycloak_quarkus_start_dev": 11, "dev": 11, "keycloak_quarkus_transaction_xa_en": 11, "keycloak_quarkus_admin_pass": 11, "ye": 11, "keycloak_context": 12, "main": 12, "keycloak_client_publ": 12, "keycloak_client_web_origin": 12, "web": 12, "declar": 12, "keycloak_client_default_rol": 12, "keycloak_client_us": 12, "confidenti": 12, "firstnam": 12, "client_rol": 12, "comprehens": 12, "testrealm": 12, "molecul": 13, "cover": 13, "idempot": 13, "order": 13, "clone": 13, "repositori": 13, "yamllint": 13, "core": 13, "flake8": 13, "lint": 13, "voluptu": 13, "demo": 13, "aggreg": 13, "rebuilt": 13, "everi": 13, "non": 13, "consist": 13, "behaviour": 13, "flang": 13, "deploy": 13, "crossdc": 13, "region": 13, "system": 13, "step": 13, "environ": 13, "middlewar": 13, "cd": 13, "dep": 13, "cat": 13, "eof": 13}, "objects": {}, "objtypes": {}, "objnames": {}, "titleterms": {"middleware_autom": [0, 1], "keycloak": [0, 1, 3, 5, 6, 7, 10], "releas": [0, 8], "note": 0, "topic": 0, "v1": 0, "2": 0, "8": 0, "devel": 0, "minor": 0, "chang": [0, 8], "bugfix": 0, "7": 0, "6": 0, "5": 0, "4": 0, "1": 0, "0": 0, "major": 0, "break": [0, 8], "port": 0, "guid": 0, "3": 0, "summari": 0, "ansibl": 1, "collect": [1, 3, 8], "version": [1, 8, 10], "compat": [1, 8], "instal": 1, "from": [1, 8], "galaxi": 1, "includ": 1, "role": [1, 6, 8, 9, 10, 11, 12], "usag": 1, "playbook": [1, 10, 12, 13], "control": 1, "node": 1, "offlin": 1, "altern": 1, "sourc": 1, "like": 1, "corpor": 1, "nexu": 1, "artifactori": 1, "proxi": 1, "etc": 1, "exampl": [1, 5, 6, 7, 10, 12], "command": 1, "configur": 1, "config": 1, "licens": [1, 10, 11, 12], "contributor": 2, "": 2, "guidelin": 2, "welcom": 3, "document": [3, 8], "user": [3, 7], "develop": 3, "gener": 3, "middlewar": 3, "plugin": [4, 8], "index": [4, 9], "modul": 4, "keycloak_cli": 5, "allow": [5, 6, 7], "administr": [5, 6, 7], "client": 5, "via": [5, 6, 7], "api": [5, 6, 7], "synopsi": [5, 6, 7], "paramet": [5, 6, 7], "attribut": [5, 6, 7], "return": [5, 6, 7], "valu": [5, 6, 7], "author": [5, 6, 7, 10, 11, 12], "keycloak_rol": 6, "keycloak_user_feder": 7, "feder": 7, "strategi": 8, "new": 8, "content": 8, "i": 8, "ad": 8, "an": 8, "exist": 8, "featur": 8, "within": 8, "backward": 8, "bug": 8, "fix": 8, "secur": 8, "ani": 8, "remov": 8, "A": 8, "typograph": 8, "error": 8, "wa": 8, "modifi": 8, "autom": 8, "requir": 10, "depend": 10, "patch": 10, "default": [10, 11, 12], "variabl": [10, 11, 12], "inform": [10, 11, 12], "keycloak_quarku": 11, "keycloak_realm": 12, "format": 12, "test": 13, "continu": 13, "integr": 13}, "envversion": {"sphinx.domains.c": 2, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 8, "sphinx.domains.index": 1, "sphinx.domains.javascript": 2, "sphinx.domains.math": 2, "sphinx.domains.python": 3, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.intersphinx": 1, "sphinx": 57}, "alltitles": {"middleware_automation.keycloak Release Notes": [[0, "middleware-automation-keycloak-release-notes"]], "Topics": [[0, "topics"]], "v1.2.8-devel": [[0, "v1-2-8-devel"]], "Minor Changes": [[0, "minor-changes"], [0, "id5"], [0, "id8"], [0, "id14"], [0, "id19"], [0, "id25"], [0, "id30"], [0, "id37"], [0, "id52"], [0, "id56"], [0, "id60"], [0, "id67"]], "Bugfixes": [[0, "bugfixes"], [0, "id12"], [0, "id22"], [0, "id27"], [0, "id35"], [0, "id43"], [0, "id47"], [0, "id49"], [0, "id58"], [0, "id63"]], "v1.2.7": [[0, "v1-2-7"]], "v1.2.6": [[0, "v1-2-6"]], "v1.2.5": [[0, "v1-2-5"]], "v1.2.4": [[0, "v1-2-4"]], "v1.2.1": [[0, "v1-2-1"]], "v1.2.0": [[0, "v1-2-0"]], "Major Changes": [[0, "major-changes"], [0, "id54"], [0, "id65"]], "v1.1.1": [[0, "v1-1-1"]], "v1.1.0": [[0, "v1-1-0"]], "Breaking Changes / Porting Guide": [[0, "breaking-changes-porting-guide"], [0, "id45"]], "v1.0.7": [[0, "v1-0-7"]], "v1.0.6": [[0, "v1-0-6"]], "v1.0.5": [[0, "v1-0-5"]], "v1.0.4": [[0, "v1-0-4"]], "v1.0.3": [[0, "v1-0-3"]], "v1.0.2": [[0, "v1-0-2"]], "v1.0.1": [[0, "v1-0-1"]], "Release Summary": [[0, "release-summary"], [0, "id69"]], "v1.0.0": [[0, "v1-0-0"]], "Ansible Collection - middleware_automation.keycloak": [[1, "ansible-collection-middleware-automation-keycloak"]], "Ansible version compatibility": [[1, "ansible-version-compatibility"]], "Installation": [[1, "installation"]], "Installing the Collection from Ansible Galaxy": [[1, "installing-the-collection-from-ansible-galaxy"]], "Included roles": [[1, "included-roles"]], "Usage": [[1, "usage"]], "Install Playbook": [[1, "install-playbook"]], "Install from controller node (offline)": [[1, "install-from-controller-node-offline"]], "Install from alternate sources (like corporate Nexus, artifactory, proxy, etc)": [[1, "install-from-alternate-sources-like-corporate-nexus-artifactory-proxy-etc"]], "Example installation command": [[1, "example-installation-command"]], "Configuration": [[1, "configuration"]], "Config Playbook": [[1, "config-playbook"]], "Example configuration command": [[1, "example-configuration-command"]], "License": [[1, "license"], [10, "license"], [11, "license"], [12, "license"]], "Contributor\u2019s Guidelines": [[2, "contributor-s-guidelines"]], "Welcome to Keycloak Collection documentation": [[3, "welcome-to-keycloak-collection-documentation"]], "User documentation": [[3, null]], "Developer documentation": [[3, null]], "General": [[3, null]], "Middleware collections": [[3, null]], "Plugin Index": [[4, "plugin-index"]], "modules plugins": [[4, null]], "keycloak_client \u2013 Allows administration of Keycloak clients via Keycloak API": [[5, "keycloak-client-allows-administration-of-keycloak-clients-via-keycloak-api"]], "Synopsis": [[5, "synopsis"], [6, "synopsis"], [7, "synopsis"]], "Parameters": [[5, "parameters"], [6, "parameters"], [7, "parameters"]], "Attributes": [[5, "attributes"], [6, "attributes"], [7, "attributes"]], "Examples": [[5, "examples"], [6, "examples"], [7, "examples"]], "Return Values": [[5, "return-values"], [6, "return-values"], [7, "return-values"]], "Authors": [[5, "authors"], [6, "authors"], [7, "authors"]], "keycloak_role \u2013 Allows administration of Keycloak roles via Keycloak API": [[6, "keycloak-role-allows-administration-of-keycloak-roles-via-keycloak-api"]], "keycloak_user_federation \u2013 Allows administration of Keycloak user federations via Keycloak API": [[7, "keycloak-user-federation-allows-administration-of-keycloak-user-federations-via-keycloak-api"]], "Collection Versioning Strategy": [[8, "collection-versioning-strategy"]], "New content is added to an existing collection": [[8, "new-content-is-added-to-an-existing-collection"]], "New feature to existing plugin or role within a collection (backwards compatible)": [[8, "new-feature-to-existing-plugin-or-role-within-a-collection-backwards-compatible"]], "Bug fix or security fix to existing content within a collection": [[8, "bug-fix-or-security-fix-to-existing-content-within-a-collection"]], "Breaking change to any content within a collection": [[8, "breaking-change-to-any-content-within-a-collection"]], "Content removed from a collection": [[8, "content-removed-from-a-collection"]], "A typographical error was fixed in the documentation for a collection": [[8, "a-typographical-error-was-fixed-in-the-documentation-for-a-collection"]], "Documentation added/removed/modified within a collection": [[8, "documentation-added-removed-modified-within-a-collection"]], "Release automation": [[8, "release-automation"]], "Role Index": [[9, "role-index"]], "keycloak": [[10, "keycloak"]], "Requirements": [[10, "requirements"]], "Dependencies": [[10, "dependencies"]], "Versions": [[10, "versions"]], "Patching": [[10, "patching"]], "Role Defaults": [[10, "role-defaults"], [11, "role-defaults"], [12, "role-defaults"]], "Role Variables": [[10, "role-variables"], [11, "role-variables"], [12, "role-variables"]], "Example Playbook": [[10, "example-playbook"], [12, "example-playbook"]], "Author Information": [[10, "author-information"], [11, "author-information"], [12, "author-information"]], "keycloak_quarkus": [[11, "keycloak-quarkus"]], "keycloak_realm": [[12, "keycloak-realm"]], "Variable formats": [[12, "variable-formats"]], "Testing": [[13, "testing"]], "Continuous integration": [[13, "continuous-integration"]], "Integration testing": [[13, "integration-testing"]], "Test playbooks": [[13, "test-playbooks"]]}, "indexentries": {}}) \ No newline at end of file +Search.setIndex({"docnames": ["CHANGELOG", "README", "developing", "index", "plugins/index", "plugins/keycloak_client", "plugins/keycloak_role", "plugins/keycloak_user_federation", "releasing", "roles/index", "roles/keycloak", "roles/keycloak_quarkus", "roles/keycloak_realm", "testing"], "filenames": ["CHANGELOG.rst", "README.md", "developing.md", "index.rst", "plugins/index.rst", "plugins/keycloak_client.rst", "plugins/keycloak_role.rst", "plugins/keycloak_user_federation.rst", "releasing.md", "roles/index.rst", "roles/keycloak.md", "roles/keycloak_quarkus.md", "roles/keycloak_realm.md", "testing.md"], "titles": ["middleware_automation.keycloak Release Notes", "Ansible Collection - middleware_automation.keycloak", "Contributor\u2019s Guidelines", "Welcome to Keycloak Collection documentation", "Plugin Index", "keycloak_client \u2013 Allows administration of Keycloak clients via Keycloak API", "keycloak_role \u2013 Allows administration of Keycloak roles via Keycloak API", "keycloak_user_federation \u2013 Allows administration of Keycloak user federations via Keycloak API", "Collection Versioning Strategy", "Role Index", "keycloak", "keycloak_quarkus", "keycloak_realm", "Testing"], "terms": {"thi": [0, 1, 5, 6, 7, 8, 10], "changelog": [0, 3], "describ": [0, 1], "after": [0, 5, 6, 7, 8, 13], "version": [0, 3, 5, 6, 7, 9, 11], "updat": [0, 1, 5, 6, 7, 8], "keycloak_quarku": [0, 1, 3, 9], "22": [0, 11], "100": 0, "set": [0, 1, 5, 6, 10, 11, 12], "openjdk": [0, 10, 11], "17": [0, 1], "default": [0, 1, 2, 5, 6, 7, 8, 9], "103": 0, "fix": [0, 3], "incorrect": 0, "check": [0, 5, 7, 11], "keycloak_jgroups_subnet": [0, 10], "98": 0, "undefin": 0, "keycloak_db_valid_conn_sql": [0, 10], "91": 0, "allow": [0, 1, 3, 4, 8, 12], "overrid": [0, 2, 5, 10], "jgroup": [0, 10, 11], "subnet": [0, 10], "93": 0, "quarku": [0, 1, 11], "keycloakx": 0, "v21": 0, "92": 0, "add": [0, 6, 7], "profil": [0, 7, 10], "featur": [0, 3, 5, 10], "enabl": [0, 5, 7, 10, 11], "disabl": [0, 5, 6, 7, 10], "87": 0, "improv": 0, "servic": [0, 1, 5, 7, 10, 11, 12], "restart": [0, 10], "behavior": [0, 5, 10], "configur": [0, 3, 5, 6, 7, 10, 11, 12], "88": 0, "xa_datasource_class": 0, "valu": [0, 4, 12], "mariadb": [0, 10, 11], "jdbc": [0, 10, 11], "89": 0, "handl": 0, "wflyctl0117": 0, "when": [0, 1, 2, 5, 6, 7, 8, 10], "background": [0, 10], "valid": [0, 2, 5, 7, 10], "milli": 0, "i": [0, 1, 3, 5, 6, 7, 10, 11, 12, 13], "90": 0, "databas": [0, 7, 10, 11], "connect": [0, 5, 6, 7, 8, 10, 11], "pool": [0, 7, 10], "85": 0, "administr": [0, 1, 3, 4, 10, 11, 12], "endpoint": [0, 5, 10, 11], "url": [0, 5, 6, 7, 10, 11, 12], "86": 0, "forc": [0, 5, 10], "backend": [0, 10, 11], "frontend": [0, 10], "84": 0, "introduc": [0, 8], "systemd": [0, 10, 13], "unit": 0, "81": 0, "sqlserver": [0, 10], "role": [0, 2, 3, 4, 5, 7, 13], "78": 0, "xa": [0, 11], "transact": [0, 7, 11], "73": 0, "deprec": [0, 8, 10], "warn": 0, "ipaddr": 0, "77": 0, "fact": 0, "offlin": [0, 10, 11], "patch": [0, 8, 9], "sso": [0, 1, 10], "71": 0, "setup": [0, 13], "ha": [0, 1, 5, 6, 7, 10], "cluster": [0, 1, 5, 10, 11, 13], "without": [0, 5, 6, 7], "remot": [0, 10, 11, 13], "cach": [0, 1, 7, 10, 11, 13], "store": [0, 5, 7, 10], "68": 0, "pass": [0, 6, 10, 11], "attribut": [0, 4], "realm": [0, 1, 5, 6, 7, 10, 11, 12], "client": [0, 1, 3, 4, 6, 7, 10, 11, 12], "69": 0, "provid": [0, 1, 5, 6, 7, 12, 13], "config": [0, 5, 7, 12], "multipl": [0, 1], "modclust": [0, 10], "proxi": [0, 10, 11], "60": 0, "tcpping": [0, 10], "discoveri": [0, 10], "62": 0, "drop": [0, 5], "commun": [0, 10], "gener": [0, 5, 7, 8], "from": [0, 2, 3, 5, 7, 10], "depend": [0, 1, 5, 7, 9, 13], "61": 0, "switch": 0, "redhat_csp_download": 0, "common": [0, 5, 6, 7, 10], "63": 0, "rh": [0, 1, 10], "64": 0, "file": [0, 1, 2, 7, 10, 11], "path": [0, 1, 2, 10, 11, 12], "conf": [0, 11], "j2": 0, "templat": [0, 5, 10], "53": 0, "18": [0, 10], "46": 0, "variabl": [0, 1, 2, 9], "keycloak_no_log": 0, "control": [0, 5, 6, 7, 10], "ansibl": [0, 2, 3, 5, 6, 7, 8, 10, 13], "no_log": 0, "paramet": [0, 4, 8, 10], "debug": [0, 7], "purpos": 0, "47": 0, "start": [0, 2, 11], "retri": 0, "delai": 0, "51": 0, "develop": [0, 8, 11], "mode": [0, 5, 6, 7, 11], "45": 0, "renam": 0, "infinispan_": 0, "prefix": 0, "keycloak_infinispan_": 0, "42": 0, "var": [0, 2, 10, 12], "log": [0, 7, 11], "symlink": 0, "directori": [0, 1, 2, 7, 10, 11, 13], "44": 0, "us": [0, 1, 2, 5, 6, 7, 10, 11, 12], "absolut": 0, "certif": [0, 5, 6, 7, 10, 11], "39": 0, "becom": [0, 7], "task": [0, 1, 2, 10, 12], "otherwis": [0, 5], "fail": 0, "38": 0, "select": [0, 10], "java": [0, 7, 10, 11], "34": 0, "logfil": 0, "correctli": 0, "under": [0, 2, 5, 6, 7], "home": [0, 11], "35": 0, "option": [0, 5, 6, 7, 10, 11, 12], "32": 0, "new": [0, 3, 6, 7], "instal": [0, 3, 5, 6, 7, 10, 11, 13], "29": 0, "keycloak_config_override_templ": [0, 10], "custom": [0, 1, 6, 10], "xml": [0, 5, 7, 10], "30": [0, 10], "make": [0, 1, 8, 10, 12], "sure": [0, 1], "jvm": [0, 10, 11], "31": 0, "keycloak_admin_password": [0, 1, 10, 12], "assert": [0, 5], "wa": [0, 3, 5, 6, 7], "26": 0, "simplifi": 0, "logic": 0, "reduc": 0, "plai": [0, 2], "execut": [0, 1, 5, 6, 7], "time": [0, 5, 8], "19": 0, "keycloak_frontend_url": [0, 10], "accord": 0, "other": [0, 2, 5, 7, 13], "25": 0, "enhanc": 0, "bug": [0, 3], "document": [0, 5, 6, 7], "appli": [0, 7, 10], "latest": [0, 10], "cumul": [0, 10], "automat": [0, 7, 10, 13], "keycloak_rhsso_apply_patch": [0, 10], "true": [0, 1, 5, 6, 7, 10, 11, 12], "now": 0, "perform": [0, 1, 10, 11], "initi": [0, 7], "first": [0, 7, 8], "node": [0, 5, 10], "avoid": [0, 2], "lock": 0, "issu": [0, 5], "stabl": 0, "collect": [0, 5, 6, 7, 10, 12, 13], "note": [1, 5, 7, 8, 10], "If": [1, 5, 6, 7, 11], "you": [1, 5, 6, 7], "ar": [1, 2, 5, 6, 7, 8, 10, 12, 13], "red": [1, 3, 7, 10, 12], "hat": [1, 3, 7, 10, 12], "redhat": 1, "autom": [1, 2, 3], "hub": [1, 8], "certifi": 1, "singl": [1, 3, 5, 6, 7, 10, 12], "sign": [1, 3, 5, 10, 12], "On": [1, 3, 5, 6, 7, 10, 12], "been": [1, 5, 6, 7], "test": [1, 3, 5, 6, 8], "against": [1, 7], "follow": [1, 2, 5, 6, 7, 8, 10, 12, 13], "2": [1, 2, 3, 7, 8, 10, 11, 12, 13], "9": [1, 10, 11, 13], "10": [1, 5, 6, 7, 10], "plugin": [1, 3], "modul": [1, 5, 6, 7, 8], "within": [1, 3, 7], "mai": [1, 5, 6, 7, 8], "onli": [1, 5, 7, 8, 10], "specif": [1, 2, 5, 11], "A": [1, 3, 5, 6, 7, 13], "contain": [1, 2, 5, 7, 8, 12], "metadata": [1, 8], "identifi": [1, 7], "befor": [1, 5, 7], "need": [1, 2, 5, 6, 7, 8], "cli": [1, 5, 6, 7, 10, 11, 12], "can": [1, 5, 6, 7], "also": [1, 7, 10], "requir": [1, 2, 5, 6, 7, 8, 9, 11, 12, 13], "yml": [1, 2, 10, 13], "via": [1, 3, 4, 10], "r": [1, 10, 13], "format": [1, 5, 8, 9, 10, 11], "name": [1, 2, 5, 6, 7, 8, 10, 11, 12], "The": [1, 5, 6, 7, 8, 10, 11, 12, 13], "python": [1, 13], "packag": [1, 10, 11], "present": [1, 5, 6, 7], "host": [1, 7, 10, 12], "netaddr": [1, 10], "pip": [1, 10, 13], "txt": [1, 10, 13], "keycloak_realm": [1, 3, 9], "user": [1, 2, 4, 5, 6, 8, 10, 11, 12], "feder": [1, 3, 4, 12], "": [1, 3, 5, 7, 11], "an": [1, 3, 5, 6, 7, 10, 11, 12], "variant": 1, "0": [1, 3, 5, 6, 7, 8, 10, 11, 12], "base": [1, 5, 10], "defin": [1, 2, 5, 7, 10], "most": [1, 7], "both": [1, 5], "differ": [1, 5, 7], "section": [1, 5, 8], "For": [1, 5, 7, 12], "full": [1, 5, 6, 7], "detail": [1, 5, 6, 7], "refer": [1, 5, 12], "readm": [1, 8], "zip": [1, 10, 11], "archiv": [1, 10, 11], "avail": [1, 5, 8, 12, 13], "work": [1, 5, 6, 7, 10, 11], "keycloak_offline_instal": [1, 10], "skip": 1, "download": [1, 3, 10, 11], "local": [1, 10, 13], "doe": [1, 5, 6, 7, 8], "match": [1, 10], "so": [1, 5, 7], "provis": [1, 7], "It": [1, 5, 6, 7], "possibl": [1, 2, 5, 7], "keycloak_download_url": [1, 10], "final": 1, "filenam": [1, 10, 11], "ie": [1, 2], "legaci": [1, 10], "x": 1, "y": 1, "z": 1, "server": [1, 5, 7, 10, 11], "dist": 1, "root": [1, 5, 10, 11], "ansible_host": 1, "e": [1, 2, 5, 6, 11], "rhn": 1, "cred": 1, "changem": [1, 12], "password": [1, 5, 6, 7, 10, 11, 12], "consol": [1, 5, 7, 10, 11, 12], "account": [1, 5, 10, 11, 12], "inventori": [1, 8, 13], "below": [1, 5, 7, 8], "deploi": 1, "localhost": [1, 5, 6, 10, 11, 12, 13], "ansible_connect": [1, 13], "all": [1, 2, 5, 6, 7, 8, 10, 13], "belong": 1, "must": [1, 5, 6, 7], "ansible_play_batch": 1, "thei": [1, 5, 7], "target": [1, 5, 6, 7], "same": [1, 2, 5, 7], "creat": [1, 5, 6, 7, 8, 12, 13], "apach": [1, 10, 11, 12], "v2": [1, 5], "later": 1, "see": [1, 5, 7, 8], "view": 1, "text": 1, "yaml": 2, "extens": [2, 5, 8], "space": [2, 7], "around": 2, "jinja": 2, "over": 2, "intern": [2, 5], "should": [2, 5, 7, 8, 10, 11, 12], "lowercas": 2, "keep": 2, "self": 2, "includ": [2, 5, 7, 8, 10, 12, 13], "do": [2, 5, 6, 7], "noth": 2, "more": [2, 7, 11], "than": [2, 5], "list": [2, 5, 6, 7, 10, 11, 12], "except": 2, "where": [2, 5, 7], "pre_task": 2, "post_task": 2, "separ": [2, 5, 6, 7, 11], "underscor": 2, "g": [2, 5, 6], "my_rol": 2, "my_playbook": 2, "dash": 2, "my": [2, 6, 7], "trail": 2, "slash": 2, "my_path": 2, "foo": [2, 7], "concaten": 2, "convent": 2, "bar": 2, "indent": 2, "each": [2, 8], "v": 2, "interpol": 2, "don": [2, 7], "t": [2, 7, 11], "chang": [2, 3, 5, 6, 7, 13], "overridden": 2, "go": [2, 5], "those": [2, 7], "would": [2, 5, 6, 7, 8], "like": 2, "argument": 2, "have": [2, 5, 6, 7], "meta": 2, "argument_spec": 2, "playbook": [2, 3, 5, 6, 7, 8, 9], "focus": 2, "compat": [2, 3], "platform": 2, "middleware_autom": [3, 5, 6, 7, 10, 12, 13], "usag": 3, "licens": [3, 9], "index": [3, 5, 6, 7], "keycloak_cli": [3, 4, 12], "api": [3, 4, 8], "keycloak_rol": [3, 4], "keycloak_user_feder": [3, 4, 12], "continu": 3, "integr": 3, "contributor": 3, "guidelin": 3, "strategi": 3, "content": [3, 5, 7], "ad": [3, 5, 6, 7], "exist": [3, 5, 6, 7, 10, 11], "backward": 3, "secur": 3, "break": [3, 13], "ani": [3, 5, 7], "remov": [3, 5, 6, 7, 10, 11], "typograph": 3, "error": 3, "modifi": [3, 5, 6, 7], "releas": [3, 10, 11, 13], "v1": 3, "8": [3, 5, 6, 10], "devel": 3, "7": [3, 5, 7, 10], "6": [3, 10], "5": [3, 5, 6, 7, 10, 13], "4": [3, 5, 6, 7, 10, 11], "1": [3, 5, 7, 8, 10], "3": [3, 5, 6, 7, 10, 13], "infinispan": [3, 10, 11, 13], "data": [3, 5, 7, 11], "grid": 3, "wildfli": [3, 13], "jboss": [3, 10], "eap": [3, 10], "tomcat": 3, "jw": 3, "activemq": 3, "amq": 3, "broker": 3, "kafka": 3, "stream": 3, "csp": 3, "jcliff": 3, "keycloak": [4, 9, 11, 12, 13], "synopsi": 4, "exampl": [4, 8, 9], "return": [4, 8], "author": [4, 9], "part": [5, 6, 7], "To": [5, 6, 7, 10], "galaxi": [5, 6, 7, 8, 10, 13], "specifi": [5, 6, 7, 10, 11], "rest": [5, 6, 7, 10, 11, 12], "access": [5, 6, 7], "openid": [5, 6, 7], "being": [5, 6, 7], "requisit": [5, 6, 7], "right": [5, 6, 7], "In": [5, 6, 7, 13], "admin": [5, 6, 7, 10, 11, 12], "definit": [5, 6, 7], "scope": [5, 6, 7], "tailor": [5, 6, 7], "your": [5, 6, 7], "expect": [5, 6, 7], "snake_cas": [5, 6, 7], "camelcas": [5, 6, 7], "ones": [5, 6, 7], "found": [5, 6, 7], "its": [5, 6, 7], "http": [5, 6, 7, 8, 10, 11, 12, 13], "www": [5, 6, 7], "org": [5, 6, 7, 8, 10, 11, 12], "doc": [5, 6, 7, 12], "html": [5, 6, 7], "alias": [5, 6, 7], "well": 5, "alwai": [5, 6, 7, 10], "saniti": 5, "input": 5, "saml": 5, "instanc": [5, 6, 7], "vice": 5, "versa": 5, "Be": 5, "care": 5, "usual": [5, 7], "sensibl": 5, "chosen": [5, 7], "comment": [5, 6, 7], "admin_url": 5, "adminurl": 5, "string": [5, 6, 7], "interfac": 5, "always_display_in_consol": 5, "alwaysdisplayinconsol": 5, "boolean": [5, 6, 7], "whether": [5, 7, 11], "displai": [5, 7], "even": [5, 7], "activ": [5, 7, 10], "session": 5, "choic": [5, 6, 7], "fals": [5, 6, 7, 10, 11, 12], "dictionari": [5, 6, 7, 12], "dict": [5, 6, 7, 10], "further": 5, "variou": 5, "given": [5, 7, 8], "while": [5, 8], "exhaust": 5, "permiss": 5, "appropri": 5, "protocol": [5, 7, 10], "anywai": 5, "simpli": 5, "jwk": 5, "kei": [5, 6, 7, 11], "jwt": 5, "credenti": [5, 6, 7], "base64": 5, "encod": 5, "request": [5, 7, 10], "object": [5, 7], "signatur": 5, "alg": 5, "jwa": 5, "algorithm": 5, "which": [5, 6, 7, 12, 13], "send": 5, "oidc": 5, "One": 5, "none": [5, 7, 10, 11], "rs256": 5, "authnstat": 5, "statement": 5, "method": [5, 7], "timestamp": 5, "login": [5, 7], "respons": 5, "encrypt": [5, 7], "public": [5, 11, 12], "post": 5, "bind": [5, 7, 10, 11], "onetimeus": 5, "condit": 5, "keyinfo": 5, "ext": 5, "redirect": 5, "lookup": [5, 7], "optim": 5, "through": [5, 7], "inclus": 5, "id": [5, 6, 7, 12], "element": [5, 7], "rsa_sha256": 5, "rsa_sha1": 5, "rsa_sha512": 5, "dsa_sha1": 5, "privat": [5, 11], "saml_assertion_consumer_url_post": 5, "consum": 5, "saml_assertion_consumer_url_redirect": 5, "saml_force_name_id_format": 5, "ignor": 5, "nameid": 5, "subject": 5, "one": [5, 7, 11], "instead": [5, 7], "saml_name_id_format": 5, "usernam": [5, 6, 7, 10, 11, 12], "email": [5, 7, 12], "transient": 5, "persist": 5, "saml_signature_canonicalization_method": 5, "canonic": 5, "four": 5, "w3": 5, "2001": 5, "exc": 5, "c14n": 5, "exclus": 5, "withcom": 5, "exclusive_with_com": 5, "tr": 5, "rec": 5, "20010315": 5, "inclusive_with_com": 5, "saml_single_logout_service_url_post": 5, "logout": 5, "saml_single_logout_service_url_redirect": 5, "obtain": [5, 7], "info": [5, 11], "userinfo": 5, "unsign": 5, "auth_client_id": [5, 6, 7], "client_id": [5, 6, 7, 12], "authent": [5, 6, 7, 10, 11, 12], "auth_client_secret": [5, 6, 7], "secret": [5, 6, 7], "conjunct": [5, 6, 7], "auth_keycloak_url": [5, 6, 7], "auth_password": [5, 6, 7], "auth_realm": [5, 6, 7], "auth_usernam": [5, 6, 7], "authentication_flow_binding_overrid": 5, "authenticationflowbindingoverrid": 5, "flow": 5, "authorization_services_en": 5, "authorizationservicesen": 5, "authorization_set": 5, "authorizationset": 5, "structur": [5, 8], "pleas": [5, 8], "_resourceserverrepresent": 5, "base_url": 5, "baseurl": 5, "auth": [5, 6, 7, 10, 11, 12], "link": [5, 7], "back": [5, 7], "bearer_onli": 5, "beareronli": 5, "type": [5, 7, 10, 12], "bearer": 5, "client_authenticator_typ": 5, "clientauthenticatortyp": 5, "how": [5, 8, 10], "either": [5, 8, 12], "clientid": 5, "alphanumer": 5, "take": 5, "preced": 5, "client_templ": 5, "clienttempl": 5, "field": [5, 6, 7], "silent": 5, "connection_timeout": [5, 6, 7], "integ": [5, 6, 7], "timeout": [5, 6, 7], "period": [5, 6, 7], "second": [5, 6, 7], "consent_requir": 5, "consentrequir": 5, "consent": 5, "default_client_scop": 5, "defaultclientscop": 5, "default_rol": 5, "defaultrol": 5, "referenc": 5, "yet": [5, 6, 7], "descript": [5, 6, 7, 10, 11, 12], "direct_access_grants_en": 5, "directaccessgrantsen": 5, "direct": 5, "grant": 5, "frontchannel_logout": 5, "frontchannellogout": 5, "frontchannel": 5, "full_scope_allow": 5, "fullscopeallow": 5, "http_agent": [5, 6, 7], "agent": [5, 6, 7], "header": [5, 6, 7], "uuid": [5, 7], "implicit_flow_en": 5, "implicitflowen": 5, "implicit": 5, "node_re_registration_timeout": 5, "nodereregistrationtimeout": 5, "re": 5, "registr": [5, 7], "not_befor": 5, "notbefor": 5, "revok": 5, "token": [5, 6, 7], "date": [5, 10], "unix": 5, "optional_client_scop": 5, "optionalclientscop": 5, "protocol_mapp": 5, "protocolmapp": 5, "mapper": [5, 7, 12], "sourc": 5, "parent": [5, 7], "class": [5, 7], "easiest": [5, 7], "dump": [5, 7], "alreadi": [5, 7], "consenttext": 5, "human": 5, "readabl": 5, "accept": [5, 7], "imposs": 5, "sinc": [5, 7], "extend": [5, 7], "spi": [5, 7], "ship": 5, "least": 5, "docker": [5, 10, 13], "address": [5, 10, 11], "group": [5, 10, 11], "membership": 5, "hardcod": [5, 7], "claim": 5, "script": 5, "sha256": 5, "pairwis": 5, "sub": 5, "usermodel": 5, "properti": [5, 7], "usersessionmodel": 5, "look": 5, "public_cli": [5, 12], "publiccli": 5, "master": [5, 6, 7, 10, 11, 12], "redirect_uri": 5, "redirecturi": 5, "uri": 5, "registered_nod": 5, "registerednod": 5, "regist": 5, "nodenam": 5, "last": 5, "registration_access_token": 5, "registrationaccesstoken": 5, "root_url": 5, "rooturl": 5, "append": 5, "rel": [5, 11], "here": [5, 6, 7], "exit": 5, "current": [5, 8], "save": 5, "service_accounts_en": 5, "serviceaccountsen": 5, "standard_flow_en": 5, "standardflowen": 5, "standard": [5, 7], "state": [5, 6, 7, 8], "absent": [5, 6, 7], "surrogate_auth_requir": 5, "surrogateauthrequir": 5, "surrog": 5, "use_template_config": 5, "usetemplateconfig": 5, "use_template_mapp": 5, "usetemplatemapp": 5, "use_template_scop": 5, "usetemplatescop": 5, "validate_cert": [5, 6, 7], "verifi": [5, 6, 7, 13], "tl": [5, 6, 7, 10, 11, 12], "product": [5, 6, 7], "web_origin": [5, 12], "weborigin": 5, "cor": 5, "origin": [5, 12], "support": [5, 6, 7, 8, 12], "check_mod": [5, 6, 7], "run": [5, 6, 7, 10, 11, 13], "statu": [5, 6, 7, 10], "predict": [5, 6, 7], "diff_mod": [5, 6, 7], "Will": [5, 6, 7], "what": [5, 6, 7], "possibli": [5, 6, 7], "diff": [5, 6, 7], "minim": 5, "com": [5, 6, 7, 10, 11, 13], "delegate_to": [5, 6], "delet": [5, 6, 7, 8], "bell": 5, "whistl": 5, "d8b127a3": 5, "31f6": 5, "44c8": 5, "a7e4": 5, "4ab9a3e78d95": 5, "this_is_a_test": 5, "wonder": 5, "basepath": 5, "reallywellkeptsecret": 5, "8888": 5, "1507825725": 5, "node01": 5, "1507828202": 5, "eyjwt_token": 5, "test01": 5, "test02": 5, "browser": 5, "4c90336b": 5, "bf1d": 5, "4b87": 5, "916d": 5, "3677ba4e5fbb": 5, "family_nam": 5, "jsontyp": 5, "label": [5, 8], "lastnam": [5, 12], "familynam": 5, "famili": 5, "nameformat": 5, "basic": 5, "certificateher": 5, "privatekeyher": 5, "jwks_url_for_client_auth_jwt": 5, "jwt_credential_certificate_for_client_auth": 5, "uniqu": [5, 6, 7], "end_stat": [5, 6, 7], "represent": [5, 6, 7], "sampl": [5, 6, 7, 13], "truncat": [5, 6], "success": [5, 6, 7], "msg": [5, 6, 7], "messag": [5, 6, 7], "action": [5, 6, 7], "taken": [5, 6, 7], "testclient": 5, "propos": [5, 6, 7], "eik": 5, "frost": 5, "eikef": 5, "multi": [6, 13], "individu": [6, 11], "wai": 6, "call": [6, 10, 11, 12], "translat": 6, "suitabl": 6, "pair": [6, 10], "resid": [6, 7], "consid": [6, 8], "kc": 6, "mycustomrealm": 6, "myclient": 6, "some": [6, 7], "attrib1": 6, "value1": 6, "attrib2": 6, "value2": 6, "attrib3": 6, "numer": 6, "item": 6, "clientrol": 6, "composit": 6, "containerid": 6, "9f03eb61": 6, "a826": 6, "4771": 6, "a9fd": 6, "930e06d2d36a": 6, "561703dd": 6, "0f38": 6, "45ff": 6, "9a5a": 6, "0c978f794547": 6, "myrol": 6, "laurent": [6, 7], "paumier": [6, 7], "laurpaum": [6, 7], "20": [7, 10, 11], "provider_id": [7, 12], "ldap": 7, "kerbero": 7, "sssd": 7, "allowkerberosauthent": 7, "spnego": 7, "about": 7, "allowpasswordauthent": 7, "authtyp": 7, "dure": 7, "oper": 7, "sent": 7, "simpl": 7, "batchsizeforsync": 7, "count": 7, "import": 7, "1000": 7, "bindcredenti": 7, "binddn": 7, "dn": 7, "cachepolici": 7, "polici": 7, "storag": [7, 12], "evict_daili": 7, "evict_weekli": 7, "max_lifespan": 7, "no_cach": 7, "changedsyncperiod": 7, "synchron": 7, "newli": [7, 8], "connectionpool": 7, "determin": 7, "connectionpoolingauthent": 7, "digest": 7, "md5": 7, "connectionpoolingdebug": 7, "indic": [7, 8], "level": [7, 11], "output": 7, "produc": 7, "fine": 7, "trace": 7, "creation": 7, "inform": [7, 9], "connectionpoolinginits": 7, "number": [7, 8], "per": 7, "ident": 7, "connectionpoolingmaxs": 7, "maximum": 7, "maintain": [7, 8], "concurr": 7, "connectionpoolingprefs": 7, "prefer": [7, 10], "connectionpoolingprotocol": 7, "plain": 7, "ssl": 7, "connectionpoolingtimeout": 7, "millisecond": 7, "idl": 7, "remain": 7, "close": 7, "connectiontimeout": 7, "connectionurl": 7, "customusersearchfilt": 7, "addit": [7, 8, 10, 11], "filter": [7, 8], "search": 7, "leav": [7, 10, 11], "empti": [7, 10, 11], "krb5loginmodul": 7, "editmod": 7, "read_onli": 7, "read": 7, "writabl": 7, "mean": 7, "sync": 7, "demand": 7, "unsync": 7, "evictiondai": 7, "dai": 7, "week": 7, "entri": [7, 8, 11], "invalid": 7, "evictionhour": 7, "hour": 7, "evictionminut": 7, "minut": 7, "fullsyncperiod": 7, "importen": 7, "db": [7, 10], "kerberosrealm": 7, "keytab": 7, "locat": 7, "princip": 7, "etc": [7, 10, 11], "krb5": 7, "maxlifespan": 7, "max": 7, "lifespan": 7, "pagin": 7, "prioriti": 7, "lowest": 7, "rdnldapattribut": 7, "rdn": 7, "top": 7, "typic": 7, "howev": 7, "cn": 7, "might": 7, "samaccountnam": 7, "readtimeout": 7, "searchscop": 7, "subtre": 7, "whole": 7, "serverprincip": 7, "domain": 7, "starttl": 7, "syncregistr": 7, "effect": 7, "trustemail": 7, "verif": 7, "updateprofilefirstlogin": 7, "usekerberosforpasswordauthent": 7, "usepasswordmodifyextendedop": 7, "ldapv3": 7, "rfc": 7, "3062": 7, "good": 7, "randomli": 7, "usernameldapattribut": 7, "map": [7, 12], "mani": 7, "vendor": 7, "uid": 7, "fill": 7, "record": 7, "want": 7, "userobjectclass": 7, "objectclass": 7, "divid": 7, "comma": [7, 11], "inetorgperson": 7, "organizationalperson": 7, "written": 7, "just": 7, "usersdn": 7, "tree": 7, "usetruststorespi": 7, "truststor": [7, 10], "standalon": [7, 10], "never": 7, "cacert": [7, 10, 11], "javax": 7, "net": 7, "ldapsonli": 7, "uuidldapattribut": 7, "entryuuid": 7, "objectguid": 7, "notion": 7, "suppos": 7, "among": 7, "validatepasswordpolici": 7, "short": 7, "write": 7, "rhd": 7, "left": 7, "associ": 7, "identityprovidermapp": 7, "parentid": 7, "blank": 7, "providerid": 7, "providertyp": 7, "compon": 7, "ldapstoragemapp": 7, "parent_id": 7, "provider_typ": [7, 12], "userstorageprovid": [7, 12], "636": 7, "ou": 7, "dc": 7, "reader": 7, "cf52ae4f": 7, "4471": 7, "4435": 7, "a0cf": 7, "bb620cadc122": 7, "myrealm": 7, "01122837": 7, "9047": 7, "4ae4": 7, "8ca0": 7, "6e2e891a765f": 7, "mandatori": 7, "mail": 7, "model": 7, "17d60ce2": 7, "2d44": 7, "4c2c": 7, "8b1f": 7, "1fba601b9a9f": 7, "myfe": 7, "No": 7, "164bb483": 7, "c613": 7, "482e": 7, "80fe": 7, "7f1431308799": 7, "semant": 8, "semver": 8, "major": 8, "minor": 8, "increment": 8, "incompat": 8, "scenario": 8, "function": [8, 13], "manner": 8, "matrix": 8, "strict": 8, "pre": [8, 10, 11], "build": 8, "shall": 8, "By": 8, "begin": 8, "smaller": 8, "therefor": 8, "explicitli": 8, "assum": 8, "readi": 8, "made": 8, "we": [8, 12], "prior": 8, "next": 8, "nor": 8, "elimin": 8, "dedic": 8, "limit": 8, "argspec": 8, "shape": 8, "inbound": 8, "payload": 8, "cfg": 8, "outcom": 8, "previou": 8, "correct": [8, 13], "abov": 8, "increas": 8, "revis": 8, "trigger": 8, "annot": 8, "git": [8, 13], "tag": 8, "publish": 8, "built": 8, "artifact": 8, "github": [8, 10, 11, 13], "page": 8, "python3": 10, "librari": 10, "yum": 10, "dnf": 10, "posix": [10, 11], "ga": 10, "septemb": 10, "2021": 10, "15": 10, "june": 10, "2022": 10, "cp": 10, "januari": 10, "novemb": 10, "11": [10, 11], "keycloak_ha_en": 10, "auto": [10, 11], "keycloak_ha_discoveri": 10, "member": 10, "jdbc_ping": 10, "keycloak_db_en": 10, "els": [10, 11], "keycloak_remote_cache_en": 10, "keycloak_admin_us": [10, 12], "keycloak_bind_address": 10, "port": [10, 11, 12], "keycloak_management_port_bind_address": 10, "manag": [10, 11, 12], "127": 10, "keycloak_host": [10, 12], "hostnam": [10, 11, 12], "keycloak_http_port": [10, 11, 12], "8080": [10, 11, 12], "keycloak_https_port": [10, 12], "8443": [10, 11, 12], "keycloak_ajp_port": 10, "ajp": [10, 11], "8009": [10, 11], "keycloak_jgroups_port": 10, "tcp": [10, 11], "7600": [10, 11], "keycloak_management_http_port": [10, 11, 12], "9990": [10, 12], "keycloak_management_https_port": 10, "9993": 10, "keycloak_prefer_ipv4": 10, "ipv4": 10, "stack": 10, "keycloak_config_standalone_xml": 10, "keycloak_service_us": 10, "keycloak_service_group": 10, "keycloak_service_restart_alwai": 10, "keycloak_service_restart_on_failur": 10, "failur": 10, "keycloak_service_startlimitintervalsec": 10, "startlimitintervalsec": 10, "300": 10, "keycloak_service_startlimitburst": 10, "startlimitburst": 10, "keycloak_service_restartsec": 10, "restartsec": 10, "keycloak_service_pidfil": 10, "pid": [10, 11], "keycloak_featur": 10, "known": 10, "keycloak_jvm_packag": 10, "rhel": [10, 11, 13], "runtim": [10, 11], "headless": [10, 11], "keycloak_java_hom": 10, "java_hom": [10, 11], "jre": [10, 11], "rpm": [10, 11], "keycloak_java_opt": 10, "xms1024m": [10, 11], "xmx2048m": [10, 11], "keycloak_vers": 10, "keycloak_dest": 10, "opt": [10, 11], "keycloak_arch": 10, "keycloak_configure_firewalld": 10, "ensur": [10, 11, 13], "firewalld": [10, 11], "miscellan": [10, 11], "keycloak_download_url_9x": 10, "keycloak_installdir": 10, "keycloak_jboss_hom": 10, "keycloak_rhsso_installdir": 10, "keycloak_config_dir": 10, "keycloak_config_path_to_standalone_xml": 10, "keycloak_auth_realm": [10, 12], "keycloak_auth_cli": [10, 11, 12], "keycloak_force_instal": [10, 11], "keycloak_url": [10, 11, 12], "keycloak_management_url": [10, 11, 12], "keycloak_frontend_url_forc": 10, "keycloak_db_background_valid": 10, "keycloak_db_background_validation_milli": 10, "frequenli": 10, "10000": 10, "keycloak_db_background_validate_on_match": 10, "minimum": 10, "12": 10, "charact": 10, "keycloak_modcluster_en": 10, "subsystem": 10, "keycloak_modcluster_url": 10, "revers": [10, 11], "keycloak_modcluster_port": 10, "6666": 10, "keycloak_jdbc_engin": 10, "engin": [10, 11], "postgr": [10, 11], "keycloak_infinispan_url": 10, "11122": 10, "keycloak_infinispan_us": 10, "supervisor": [10, 11], "keycloak_infinispan_pass": 10, "keycloak_infinispan_sasl_mechan": 10, "scram": [10, 11], "sha": [10, 11], "512": [10, 11], "keycloak_infinispan_use_ssl": 10, "hotrod": 10, "keycloak_infinispan_trust_store_path": 10, "pki": [10, 11], "keycloak_infinispan_trust_store_password": 10, "open": 10, "changeit": [10, 11], "keycloak_jdbc_url": 10, "postgresql": [10, 11], "5432": [10, 11], "keycloak_jdbc_driver_vers": 10, "driver": [10, 11], "1212": [10, 11], "keycloak_db_us": 10, "keycloak_db_pass": 10, "queri": 10, "sql": 10, "keycloak_admin_url": 10, "infer": 10, "machin": 10, "rout": 10, "remembertochangem": 10, "include_rol": [10, 12], "16": 10, "guido": [10, 11, 12], "grazioli": [10, 11, 12], "romain": [10, 12], "peliss": [10, 12], "pavan": 10, "kumar": 10, "motaparthi": 10, "keycloak_quarkus_vers": 11, "keycloak_quarkus_ha_en": 11, "keycloak_quarkus_db_en": 11, "keycloak_quarkus_admin_us": 11, "keycloak_quarkus_bind_address": 11, "keycloak_quarkus_host": 11, "keycloak_quarkus_http_port": 11, "keycloak_quarkus_https_port": 11, "keycloak_quarkus_ajp_port": 11, "keycloak_quarkus_jgroups_port": 11, "keycloak_quarkus_service_us": 11, "keycloak_quarkus_service_group": 11, "keycloak_quarkus_service_pidfil": 11, "keycloak_quarkus_jvm_packag": 11, "keycloak_quarkus_java_hom": 11, "keycloak_quarkus_java_opt": 11, "keycloak_quarkus_frontend_url": 11, "keycloak_quarkus_http_relative_path": 11, "context": [11, 12], "keycloak_quarkus_http_en": 11, "listen": 11, "keycloak_quarkus_https_en": 11, "keycloak_quarkus_key_fil": 11, "pem": 11, "keycloak_quarkus_cert_fil": 11, "chain": 11, "crt": 11, "keycloak_quarkus_jdbc_engin": 11, "postr": 11, "keycloak_quarkus_db_us": 11, "keycloak_quarkus_db_pass": 11, "keycloak_quarkus_jdbc_url": 11, "keycloak_quarkus_jdbc_driver_vers": 11, "keycloak_quarkus_ispn_us": 11, "keycloak_quarkus_ispn_pass": 11, "keycloak_quarkus_ispn_url": 11, "keycloak_quarkus_ispn_sasl_mechan": 11, "mechan": 11, "keycloak_quarkus_ispn_use_ssl": 11, "keycloak_quarkus_ispn_trust_store_path": 11, "trust": 11, "keycloak_quarkus_ispn_trust_store_password": 11, "keystor": 11, "keycloak_quarkus_offline_instal": 11, "keycloak_quarkus_download_url": 11, "keycloak_quarkus_dest": 11, "keycloak_quarkus_arch": 11, "keycloak_quarkus_configure_firewalld": 11, "keycloak_quarkus_metrics_en": 11, "metric": 11, "keycloak_quarkus_health_en": 11, "expos": 11, "health": 11, "keycloak_quarkus_installdir": 11, "keycloak_quarkus_hom": 11, "keycloak_quarkus_config_dir": 11, "keycloak_quarkus_master_realm": 11, "keycloak_quarkus_log": 11, "handler": 11, "keycloak_quarkus_log_level": 11, "categori": 11, "keycloak_quarkus_log_fil": 11, "keycloak_quarkus_log_format": 11, "d": 11, "yyyi": 11, "mm": 11, "dd": 11, "hh": 11, "ss": 11, "sss": 11, "5p": 11, "c": 11, "n": 11, "keycloak_quarkus_proxy_mod": 11, "forward": 11, "behind": 11, "edg": 11, "keycloak_quarkus_start_dev": 11, "dev": 11, "keycloak_quarkus_transaction_xa_en": 11, "keycloak_quarkus_admin_pass": 11, "ye": 11, "keycloak_context": 12, "main": 12, "keycloak_client_publ": 12, "keycloak_client_web_origin": 12, "web": 12, "declar": 12, "keycloak_client_default_rol": 12, "keycloak_client_us": 12, "confidenti": 12, "firstnam": 12, "client_rol": 12, "comprehens": 12, "testrealm": 12, "molecul": 13, "cover": 13, "idempot": 13, "order": 13, "clone": 13, "repositori": 13, "yamllint": 13, "core": 13, "flake8": 13, "lint": 13, "voluptu": 13, "demo": 13, "aggreg": 13, "rebuilt": 13, "everi": 13, "non": 13, "consist": 13, "behaviour": 13, "flang": 13, "deploy": 13, "crossdc": 13, "region": 13, "system": 13, "step": 13, "environ": 13, "middlewar": 13, "cd": 13, "dep": 13, "cat": 13, "eof": 13}, "objects": {}, "objtypes": {}, "objnames": {}, "titleterms": {"middleware_autom": [0, 1], "keycloak": [0, 1, 3, 5, 6, 7, 10], "releas": [0, 8], "note": 0, "topic": 0, "v1": 0, "2": 0, "8": 0, "devel": 0, "minor": 0, "chang": [0, 8], "bugfix": 0, "7": 0, "6": 0, "5": 0, "4": 0, "1": 0, "0": 0, "major": 0, "break": [0, 8], "port": 0, "guid": 0, "3": 0, "summari": 0, "ansibl": 1, "collect": [1, 3, 8], "version": [1, 8, 10], "compat": [1, 8], "instal": 1, "from": [1, 8], "galaxi": 1, "includ": 1, "role": [1, 6, 8, 9, 10, 11, 12], "usag": 1, "playbook": [1, 10, 12, 13], "control": 1, "node": 1, "offlin": 1, "altern": 1, "sourc": 1, "like": 1, "corpor": 1, "nexu": 1, "artifactori": 1, "proxi": 1, "etc": 1, "exampl": [1, 5, 6, 7, 10, 12], "command": 1, "configur": 1, "config": 1, "licens": [1, 10, 11, 12], "contributor": 2, "": 2, "guidelin": 2, "welcom": 3, "document": [3, 8], "user": [3, 7], "develop": 3, "gener": 3, "middlewar": 3, "plugin": [4, 8], "index": [4, 9], "modul": 4, "keycloak_cli": 5, "allow": [5, 6, 7], "administr": [5, 6, 7], "client": 5, "via": [5, 6, 7], "api": [5, 6, 7], "synopsi": [5, 6, 7], "paramet": [5, 6, 7], "attribut": [5, 6, 7], "return": [5, 6, 7], "valu": [5, 6, 7], "author": [5, 6, 7, 10, 11, 12], "keycloak_rol": 6, "keycloak_user_feder": 7, "feder": 7, "strategi": 8, "new": 8, "content": 8, "i": 8, "ad": 8, "an": 8, "exist": 8, "featur": 8, "within": 8, "backward": 8, "bug": 8, "fix": 8, "secur": 8, "ani": 8, "remov": 8, "A": 8, "typograph": 8, "error": 8, "wa": 8, "modifi": 8, "autom": 8, "requir": 10, "depend": 10, "patch": 10, "default": [10, 11, 12], "variabl": [10, 11, 12], "inform": [10, 11, 12], "keycloak_quarku": 11, "keycloak_realm": 12, "format": 12, "test": 13, "continu": 13, "integr": 13}, "envversion": {"sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.intersphinx": 1, "sphinx": 60}, "alltitles": {"middleware_automation.keycloak Release Notes": [[0, "middleware-automation-keycloak-release-notes"]], "Topics": [[0, "topics"]], "v1.2.8-devel": [[0, "v1-2-8-devel"]], "Minor Changes": [[0, "minor-changes"], [0, "id5"], [0, "id8"], [0, "id14"], [0, "id19"], [0, "id25"], [0, "id30"], [0, "id37"], [0, "id52"], [0, "id56"], [0, "id60"], [0, "id67"]], "Bugfixes": [[0, "bugfixes"], [0, "id12"], [0, "id22"], [0, "id27"], [0, "id35"], [0, "id43"], [0, "id47"], [0, "id49"], [0, "id58"], [0, "id63"]], "v1.2.7": [[0, "v1-2-7"]], "v1.2.6": [[0, "v1-2-6"]], "v1.2.5": [[0, "v1-2-5"]], "v1.2.4": [[0, "v1-2-4"]], "v1.2.1": [[0, "v1-2-1"]], "v1.2.0": [[0, "v1-2-0"]], "Major Changes": [[0, "major-changes"], [0, "id54"], [0, "id65"]], "v1.1.1": [[0, "v1-1-1"]], "v1.1.0": [[0, "v1-1-0"]], "Breaking Changes / Porting Guide": [[0, "breaking-changes-porting-guide"], [0, "id45"]], "v1.0.7": [[0, "v1-0-7"]], "v1.0.6": [[0, "v1-0-6"]], "v1.0.5": [[0, "v1-0-5"]], "v1.0.4": [[0, "v1-0-4"]], "v1.0.3": [[0, "v1-0-3"]], "v1.0.2": [[0, "v1-0-2"]], "v1.0.1": [[0, "v1-0-1"]], "Release Summary": [[0, "release-summary"], [0, "id69"]], "v1.0.0": [[0, "v1-0-0"]], "Ansible Collection - middleware_automation.keycloak": [[1, "ansible-collection-middleware-automation-keycloak"]], "Ansible version compatibility": [[1, "ansible-version-compatibility"]], "Installation": [[1, "installation"]], "Installing the Collection from Ansible Galaxy": [[1, "installing-the-collection-from-ansible-galaxy"]], "Included roles": [[1, "included-roles"]], "Usage": [[1, "usage"]], "Install Playbook": [[1, "install-playbook"]], "Install from controller node (offline)": [[1, "install-from-controller-node-offline"]], "Install from alternate sources (like corporate Nexus, artifactory, proxy, etc)": [[1, "install-from-alternate-sources-like-corporate-nexus-artifactory-proxy-etc"]], "Example installation command": [[1, "example-installation-command"]], "Configuration": [[1, "configuration"]], "Config Playbook": [[1, "config-playbook"]], "Example configuration command": [[1, "example-configuration-command"]], "License": [[1, "license"], [10, "license"], [11, "license"], [12, "license"]], "Contributor\u2019s Guidelines": [[2, "contributor-s-guidelines"]], "Welcome to Keycloak Collection documentation": [[3, "welcome-to-keycloak-collection-documentation"]], "User documentation": [[3, null]], "Developer documentation": [[3, null]], "General": [[3, null]], "Middleware collections": [[3, null]], "Plugin Index": [[4, "plugin-index"]], "modules plugins": [[4, null]], "keycloak_client \u2013 Allows administration of Keycloak clients via Keycloak API": [[5, "keycloak-client-allows-administration-of-keycloak-clients-via-keycloak-api"]], "Synopsis": [[5, "synopsis"], [6, "synopsis"], [7, "synopsis"]], "Parameters": [[5, "parameters"], [6, "parameters"], [7, "parameters"]], "Attributes": [[5, "attributes"], [6, "attributes"], [7, "attributes"]], "Examples": [[5, "examples"], [6, "examples"], [7, "examples"]], "Return Values": [[5, "return-values"], [6, "return-values"], [7, "return-values"]], "Authors": [[5, "authors"], [6, "authors"], [7, "authors"]], "keycloak_role \u2013 Allows administration of Keycloak roles via Keycloak API": [[6, "keycloak-role-allows-administration-of-keycloak-roles-via-keycloak-api"]], "keycloak_user_federation \u2013 Allows administration of Keycloak user federations via Keycloak API": [[7, "keycloak-user-federation-allows-administration-of-keycloak-user-federations-via-keycloak-api"]], "Collection Versioning Strategy": [[8, "collection-versioning-strategy"]], "New content is added to an existing collection": [[8, "new-content-is-added-to-an-existing-collection"]], "New feature to existing plugin or role within a collection (backwards compatible)": [[8, "new-feature-to-existing-plugin-or-role-within-a-collection-backwards-compatible"]], "Bug fix or security fix to existing content within a collection": [[8, "bug-fix-or-security-fix-to-existing-content-within-a-collection"]], "Breaking change to any content within a collection": [[8, "breaking-change-to-any-content-within-a-collection"]], "Content removed from a collection": [[8, "content-removed-from-a-collection"]], "A typographical error was fixed in the documentation for a collection": [[8, "a-typographical-error-was-fixed-in-the-documentation-for-a-collection"]], "Documentation added/removed/modified within a collection": [[8, "documentation-added-removed-modified-within-a-collection"]], "Release automation": [[8, "release-automation"]], "Role Index": [[9, "role-index"]], "keycloak": [[10, "keycloak"]], "Requirements": [[10, "requirements"]], "Dependencies": [[10, "dependencies"]], "Versions": [[10, "versions"]], "Patching": [[10, "patching"]], "Role Defaults": [[10, "role-defaults"], [11, "role-defaults"], [12, "role-defaults"]], "Role Variables": [[10, "role-variables"], [11, "role-variables"], [12, "role-variables"]], "Example Playbook": [[10, "example-playbook"], [12, "example-playbook"]], "Author Information": [[10, "author-information"], [11, "author-information"], [12, "author-information"]], "keycloak_quarkus": [[11, "keycloak-quarkus"]], "keycloak_realm": [[12, "keycloak-realm"]], "Variable formats": [[12, "variable-formats"]], "Testing": [[13, "testing"]], "Continuous integration": [[13, "continuous-integration"]], "Integration testing": [[13, "integration-testing"]], "Test playbooks": [[13, "test-playbooks"]]}, "indexentries": {}}) \ No newline at end of file diff --git a/main/testing.html b/main/testing.html index 19aaa1b..454cdbe 100644 --- a/main/testing.html +++ b/main/testing.html @@ -7,16 +7,17 @@ Testing — Keycloak Ansible Collection documentation + - - - - - + + + + + @@ -101,9 +102,9 @@
            -

            Testing

            +

            Testing

            -

            Continuous integration

            +

            Continuous integration

            The collection is tested with a molecule setup covering the included roles and verifying correct installation and idempotency. In order to run the molecule tests locally with python 3.9 available, after cloning the repository:

            pip install yamllint 'molecule[docker]~=3.5.2' ansible-core flake8 ansible-lint voluptuous
            @@ -112,7 +113,7 @@ In order to run the molecule tests locally with python 3.9 available, after clon
             
            -

            Integration testing

            +

            Integration testing

            Demo repositories which depend on the collection, and aggregate functionality with other middleware_automation collections, are automatically rebuilt at every collection release to ensure non-breaking changes and consistent behaviour.

            The repository are:

            @@ -124,7 +125,7 @@ A clustered multi-regional installation of keycloak with infinispan remote cache
          -

          Test playbooks

          +

          Test playbooks

          Sample playbooks are provided in the playbooks/ directory; to run the playbooks locally (requires a rhel system with python 3.9+, ansible, and systemd) the steps are as follows:

          # setup environment
           pip install ansible-core