diff --git a/main/CHANGELOG.html b/main/CHANGELOG.html index d3471fd..04a23e2 100644 --- a/main/CHANGELOG.html +++ b/main/CHANGELOG.html @@ -17,6 +17,7 @@ + diff --git a/main/README.html b/main/README.html index b7a467b..e8e9904 100644 --- a/main/README.html +++ b/main/README.html @@ -17,6 +17,7 @@ + diff --git a/main/_static/doctools.js b/main/_static/doctools.js index c3db08d..527b876 100644 --- a/main/_static/doctools.js +++ b/main/_static/doctools.js @@ -10,6 +10,13 @@ */ "use strict"; +const BLACKLISTED_KEY_CONTROL_ELEMENTS = new Set([ + "TEXTAREA", + "INPUT", + "SELECT", + "BUTTON", +]); + const _ready = (callback) => { if (document.readyState !== "loading") { callback(); @@ -18,73 +25,11 @@ const _ready = (callback) => { } }; -/** - * highlight a given string on a node by wrapping it in - * span elements with the given class name. - */ -const _highlight = (node, addItems, text, className) => { - if (node.nodeType === Node.TEXT_NODE) { - const val = node.nodeValue; - const parent = node.parentNode; - const pos = val.toLowerCase().indexOf(text); - if ( - pos >= 0 && - !parent.classList.contains(className) && - !parent.classList.contains("nohighlight") - ) { - let span; - - const closestNode = parent.closest("body, svg, foreignObject"); - const isInSVG = closestNode && closestNode.matches("svg"); - if (isInSVG) { - span = document.createElementNS("http://www.w3.org/2000/svg", "tspan"); - } else { - span = document.createElement("span"); - span.classList.add(className); - } - - span.appendChild(document.createTextNode(val.substr(pos, text.length))); - parent.insertBefore( - span, - parent.insertBefore( - document.createTextNode(val.substr(pos + text.length)), - node.nextSibling - ) - ); - node.nodeValue = val.substr(0, pos); - - if (isInSVG) { - const rect = document.createElementNS( - "http://www.w3.org/2000/svg", - "rect" - ); - const bbox = parent.getBBox(); - rect.x.baseVal.value = bbox.x; - rect.y.baseVal.value = bbox.y; - rect.width.baseVal.value = bbox.width; - rect.height.baseVal.value = bbox.height; - rect.setAttribute("class", className); - addItems.push({ parent: parent, target: rect }); - } - } - } else if (node.matches && !node.matches("button, select, textarea")) { - node.childNodes.forEach((el) => _highlight(el, addItems, text, className)); - } -}; -const _highlightText = (thisNode, text, className) => { - let addItems = []; - _highlight(thisNode, addItems, text, className); - addItems.forEach((obj) => - obj.parent.insertAdjacentElement("beforebegin", obj.target) - ); -}; - /** * Small JavaScript module for the documentation. */ const Documentation = { init: () => { - Documentation.highlightSearchWords(); Documentation.initDomainIndexTable(); Documentation.initOnKeyListeners(); }, @@ -126,51 +71,6 @@ const Documentation = { Documentation.LOCALE = catalog.locale; }, - /** - * highlight the search words provided in the url in the text - */ - highlightSearchWords: () => { - const highlight = - new URLSearchParams(window.location.search).get("highlight") || ""; - const terms = highlight.toLowerCase().split(/\s+/).filter(x => x); - if (terms.length === 0) return; // nothing to do - - // There should never be more than one element matching "div.body" - const divBody = document.querySelectorAll("div.body"); - const body = divBody.length ? divBody[0] : document.querySelector("body"); - window.setTimeout(() => { - terms.forEach((term) => _highlightText(body, term, "highlighted")); - }, 10); - - const searchBox = document.getElementById("searchbox"); - if (searchBox === null) return; - searchBox.appendChild( - document - .createRange() - .createContextualFragment( - '" - ) - ); - }, - - /** - * helper function to hide the search marks again - */ - hideSearchWords: () => { - document - .querySelectorAll("#searchbox .highlight-link") - .forEach((el) => el.remove()); - document - .querySelectorAll("span.highlighted") - .forEach((el) => el.classList.remove("highlighted")); - const url = new URL(window.location); - url.searchParams.delete("highlight"); - window.history.replaceState({}, "", url); - }, - /** * helper function to focus on search bar */ @@ -210,15 +110,11 @@ const Documentation = { ) return; - const blacklistedElements = new Set([ - "TEXTAREA", - "INPUT", - "SELECT", - "BUTTON", - ]); document.addEventListener("keydown", (event) => { - if (blacklistedElements.has(document.activeElement.tagName)) return; // bail for input elements - if (event.altKey || event.ctrlKey || event.metaKey) return; // bail with special keys + // bail for input elements + if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName)) return; + // bail with special keys + if (event.altKey || event.ctrlKey || event.metaKey) return; if (!event.shiftKey) { switch (event.key) { @@ -240,10 +136,6 @@ const Documentation = { event.preventDefault(); } break; - case "Escape": - if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) break; - Documentation.hideSearchWords(); - event.preventDefault(); } } diff --git a/main/_static/searchtools.js b/main/_static/searchtools.js index f2fb7d5..e89e34d 100644 --- a/main/_static/searchtools.js +++ b/main/_static/searchtools.js @@ -57,14 +57,14 @@ const _removeChildren = (element) => { const _escapeRegExp = (string) => string.replace(/[.*+\-?^${}()|[\]\\]/g, "\\$&"); // $& means the whole matched string -const _displayItem = (item, highlightTerms, searchTerms) => { +const _displayItem = (item, searchTerms) => { 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 [docName, title, anchor, descr] = item; + const [docName, title, anchor, descr, score, _filename] = item; let listItem = document.createElement("li"); let requestUrl; @@ -82,10 +82,9 @@ const _displayItem = (item, highlightTerms, searchTerms) => { requestUrl = docUrlRoot + docName + docFileSuffix; linkUrl = docName + docLinkSuffix; } - const params = new URLSearchParams(); - params.set("highlight", [...highlightTerms].join(" ")); let linkEl = listItem.appendChild(document.createElement("a")); - linkEl.href = linkUrl + "?" + params.toString() + anchor; + linkEl.href = linkUrl + anchor; + linkEl.dataset.score = score; linkEl.innerHTML = title; if (descr) listItem.appendChild(document.createElement("span")).innerHTML = @@ -96,7 +95,7 @@ const _displayItem = (item, highlightTerms, searchTerms) => { .then((data) => { if (data) listItem.appendChild( - Search.makeSearchSummary(data, searchTerms, highlightTerms) + Search.makeSearchSummary(data, searchTerms) ); }); Search.output.appendChild(listItem); @@ -116,15 +115,14 @@ const _finishSearch = (resultCount) => { const _displayNextItem = ( results, resultCount, - highlightTerms, searchTerms ) => { // results left, load the summary and display it // this is intended to be dynamic (don't sub resultsCount) if (results.length) { - _displayItem(results.pop(), highlightTerms, searchTerms); + _displayItem(results.pop(), searchTerms); setTimeout( - () => _displayNextItem(results, resultCount, highlightTerms, searchTerms), + () => _displayNextItem(results, resultCount, searchTerms), 5 ); } @@ -237,6 +235,12 @@ const Search = { * execute search (requires search index to be loaded) */ query: (query) => { + const filenames = Search._index.filenames; + const docNames = Search._index.docnames; + const titles = Search._index.titles; + const allTitles = Search._index.alltitles; + const indexEntries = Search._index.indexentries; + // stem the search terms and add them to the correct list const stemmer = new Stemmer(); const searchTerms = new Set(); @@ -264,6 +268,10 @@ const Search = { } }); + if (SPHINX_HIGHLIGHT_ENABLED) { // set in sphinx_highlight.js + localStorage.setItem("sphinx_highlight_terms", [...highlightTerms].join(" ")) + } + // console.debug("SEARCH: searching for:"); // console.info("required: ", [...searchTerms]); // console.info("excluded: ", [...excludedTerms]); @@ -272,6 +280,40 @@ const Search = { let results = []; _removeChildren(document.getElementById("search-progress")); + const queryLower = query.toLowerCase(); + for (const [title, foundTitles] of Object.entries(allTitles)) { + if (title.toLowerCase().includes(queryLower) && (queryLower.length >= title.length/2)) { + for (const [file, id] of foundTitles) { + let score = Math.round(100 * queryLower.length / title.length) + results.push([ + docNames[file], + titles[file] !== title ? `${titles[file]} > ${title}` : title, + id !== null ? "#" + id : "", + null, + score, + filenames[file], + ]); + } + } + } + + // search for explicit entries in index directives + for (const [entry, foundEntries] of Object.entries(indexEntries)) { + if (entry.includes(queryLower) && (queryLower.length >= entry.length/2)) { + for (const [file, id] of foundEntries) { + let score = Math.round(100 * queryLower.length / entry.length) + results.push([ + docNames[file], + titles[file], + id ? "#" + id : "", + null, + score, + filenames[file], + ]); + } + } + } + // lookup as object objectTerms.forEach((term) => results.push(...Search.performObjectSearch(term, objectTerms)) @@ -318,7 +360,7 @@ const Search = { // console.info("search results:", Search.lastresults); // print the results - _displayNextItem(results, results.length, highlightTerms, searchTerms); + _displayNextItem(results, results.length, searchTerms); }, /** @@ -399,8 +441,8 @@ const Search = { // prepare search const terms = Search._index.terms; const titleTerms = Search._index.titleterms; - const docNames = Search._index.docnames; const filenames = Search._index.filenames; + const docNames = Search._index.docnames; const titles = Search._index.titles; const scoreMap = new Map(); @@ -497,11 +539,9 @@ const Search = { /** * helper function to return a node containing the * search summary for a given text. keywords is a list - * of stemmed words, highlightWords is the list of normal, unstemmed - * words. the first one is used to find the occurrence, the - * latter for highlighting it. + * of stemmed words. */ - makeSearchSummary: (htmlText, keywords, highlightWords) => { + makeSearchSummary: (htmlText, keywords) => { const text = Search.htmlToText(htmlText); if (text === "") return null; @@ -519,10 +559,6 @@ const Search = { summary.classList.add("context"); summary.textContent = top + text.substr(startWithContext, 240).trim() + tail; - highlightWords.forEach((highlightWord) => - _highlightText(summary, highlightWord, "highlighted") - ); - return summary; }, }; diff --git a/main/_static/sphinx_highlight.js b/main/_static/sphinx_highlight.js new file mode 100644 index 0000000..aae669d --- /dev/null +++ b/main/_static/sphinx_highlight.js @@ -0,0 +1,144 @@ +/* Highlighting utilities for Sphinx HTML documentation. */ +"use strict"; + +const SPHINX_HIGHLIGHT_ENABLED = true + +/** + * highlight a given string on a node by wrapping it in + * span elements with the given class name. + */ +const _highlight = (node, addItems, text, className) => { + if (node.nodeType === Node.TEXT_NODE) { + const val = node.nodeValue; + const parent = node.parentNode; + const pos = val.toLowerCase().indexOf(text); + if ( + pos >= 0 && + !parent.classList.contains(className) && + !parent.classList.contains("nohighlight") + ) { + let span; + + const closestNode = parent.closest("body, svg, foreignObject"); + const isInSVG = closestNode && closestNode.matches("svg"); + if (isInSVG) { + span = document.createElementNS("http://www.w3.org/2000/svg", "tspan"); + } else { + span = document.createElement("span"); + span.classList.add(className); + } + + span.appendChild(document.createTextNode(val.substr(pos, text.length))); + parent.insertBefore( + span, + parent.insertBefore( + document.createTextNode(val.substr(pos + text.length)), + node.nextSibling + ) + ); + node.nodeValue = val.substr(0, pos); + + if (isInSVG) { + const rect = document.createElementNS( + "http://www.w3.org/2000/svg", + "rect" + ); + const bbox = parent.getBBox(); + rect.x.baseVal.value = bbox.x; + rect.y.baseVal.value = bbox.y; + rect.width.baseVal.value = bbox.width; + rect.height.baseVal.value = bbox.height; + rect.setAttribute("class", className); + addItems.push({ parent: parent, target: rect }); + } + } + } else if (node.matches && !node.matches("button, select, textarea")) { + node.childNodes.forEach((el) => _highlight(el, addItems, text, className)); + } +}; +const _highlightText = (thisNode, text, className) => { + let addItems = []; + _highlight(thisNode, addItems, text, className); + addItems.forEach((obj) => + obj.parent.insertAdjacentElement("beforebegin", obj.target) + ); +}; + +/** + * Small JavaScript module for the documentation. + */ +const SphinxHighlight = { + + /** + * highlight the search words provided in localstorage in the text + */ + highlightSearchWords: () => { + if (!SPHINX_HIGHLIGHT_ENABLED) return; // bail if no highlight + + // get and clear terms from localstorage + const url = new URL(window.location); + const highlight = + localStorage.getItem("sphinx_highlight_terms") + || url.searchParams.get("highlight") + || ""; + localStorage.removeItem("sphinx_highlight_terms") + url.searchParams.delete("highlight"); + window.history.replaceState({}, "", url); + + // get individual terms from highlight string + const terms = highlight.toLowerCase().split(/\s+/).filter(x => x); + if (terms.length === 0) return; // nothing to do + + // There should never be more than one element matching "div.body" + const divBody = document.querySelectorAll("div.body"); + const body = divBody.length ? divBody[0] : document.querySelector("body"); + window.setTimeout(() => { + terms.forEach((term) => _highlightText(body, term, "highlighted")); + }, 10); + + const searchBox = document.getElementById("searchbox"); + if (searchBox === null) return; + searchBox.appendChild( + document + .createRange() + .createContextualFragment( + '" + ) + ); + }, + + /** + * helper function to hide the search marks again + */ + hideSearchWords: () => { + document + .querySelectorAll("#searchbox .highlight-link") + .forEach((el) => el.remove()); + document + .querySelectorAll("span.highlighted") + .forEach((el) => el.classList.remove("highlighted")); + localStorage.removeItem("sphinx_highlight_terms") + }, + + initEscapeListener: () => { + // only install a listener if it is really needed + if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) return; + + document.addEventListener("keydown", (event) => { + // bail for input elements + if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName)) return; + // bail with special keys + if (event.shiftKey || event.altKey || event.ctrlKey || event.metaKey) return; + if (DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS && (event.key === "Escape")) { + SphinxHighlight.hideSearchWords(); + event.preventDefault(); + } + }); + }, +}; + +_ready(SphinxHighlight.highlightSearchWords); +_ready(SphinxHighlight.initEscapeListener); diff --git a/main/developing.html b/main/developing.html index 96fb51b..70fdfbd 100644 --- a/main/developing.html +++ b/main/developing.html @@ -17,6 +17,7 @@ + diff --git a/main/genindex.html b/main/genindex.html index 512ed74..685586f 100644 --- a/main/genindex.html +++ b/main/genindex.html @@ -16,6 +16,7 @@ + diff --git a/main/index.html b/main/index.html index 99d62a3..73a3f04 100644 --- a/main/index.html +++ b/main/index.html @@ -17,6 +17,7 @@ + diff --git a/main/plugins/index.html b/main/plugins/index.html index 5b7a730..dd31b84 100644 --- a/main/plugins/index.html +++ b/main/plugins/index.html @@ -17,6 +17,7 @@ + diff --git a/main/releasing.html b/main/releasing.html index 8d7f2ae..cc72dab 100644 --- a/main/releasing.html +++ b/main/releasing.html @@ -17,6 +17,7 @@ + diff --git a/main/roles/index.html b/main/roles/index.html index 5f9bccd..7a7fcb1 100644 --- a/main/roles/index.html +++ b/main/roles/index.html @@ -17,6 +17,7 @@ + diff --git a/main/roles/keycloak.html b/main/roles/keycloak.html index 37f95f1..81cfa22 100644 --- a/main/roles/keycloak.html +++ b/main/roles/keycloak.html @@ -17,6 +17,7 @@ + diff --git a/main/roles/keycloak_quarkus.html b/main/roles/keycloak_quarkus.html index bf9d9d6..d56bdca 100644 --- a/main/roles/keycloak_quarkus.html +++ b/main/roles/keycloak_quarkus.html @@ -17,6 +17,7 @@ + diff --git a/main/roles/keycloak_realm.html b/main/roles/keycloak_realm.html index 9948da2..a87ac86 100644 --- a/main/roles/keycloak_realm.html +++ b/main/roles/keycloak_realm.html @@ -17,6 +17,7 @@ + diff --git a/main/search.html b/main/search.html index d435e77..d53ef88 100644 --- a/main/search.html +++ b/main/search.html @@ -17,6 +17,7 @@ + diff --git a/main/searchindex.js b/main/searchindex.js index 5413855..48bc79b 100644 --- a/main/searchindex.js +++ b/main/searchindex.js @@ -1 +1 @@ -Search.setIndex({"docnames": ["CHANGELOG", "README", "developing", "index", "plugins/index", "releasing", "roles/index", "roles/keycloak", "roles/keycloak_quarkus", "roles/keycloak_realm", "testing"], "filenames": ["CHANGELOG.rst", "README.md", "developing.md", "index.rst", "plugins/index.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", "Middleware_Automation.Keycloak", "Collection Versioning Strategy", "Role Index", "keycloak", "keycloak_quarkus", "keycloak_realm", "Testing"], "terms": {"thi": [0, 1, 5, 7], "changelog": [0, 3], "describ": [0, 1], "after": [0, 5, 10], "version": [0, 3, 4, 6, 8], "renam": 0, "variabl": [0, 1, 2, 6], "from": [0, 2, 3, 7], "infinispan_": 0, "prefix": 0, "keycloak_infinispan_": 0, "42": 0, "keycloak_quarku": [0, 1, 3, 6], "us": [0, 1, 2, 7, 8, 9], "absolut": 0, "path": [0, 1, 2, 7, 8, 9], "certif": [0, 7, 8], "file": [0, 1, 2, 7, 8], "39": 0, "becom": 0, "task": [0, 1, 2, 7, 9], "otherwis": 0, "fail": 0, "38": 0, "add": 0, "select": [0, 7], "java": [0, 7, 8], "systemd": [0, 10], "unit": 0, "34": 0, "set": [0, 1, 7, 8, 9], "logfil": 0, "correctli": 0, "under": [0, 2], "home": [0, 8], "35": 0, "updat": [0, 1, 5], "config": [0, 9], "option": [0, 7, 8, 9], "quarku": [0, 1, 8], "32": 0, "new": [0, 3], "role": [0, 2, 3, 10], "instal": [0, 3, 4, 7, 8, 10], "17": [0, 1, 8], "29": 0, "keycloak_config_override_templ": [0, 7], "paramet": [0, 5], "pass": [0, 7, 8], "custom": [0, 7], "xml": [0, 7], "templat": [0, 7], "30": 0, "make": [0, 1, 5, 7, 9], "sure": 0, "start": [0, 2], "jvm": [0, 7, 8], "31": 0, "keycloak_admin_password": [0, 1, 7, 9], "default": [0, 2, 5, 6], "assert": 0, "wa": [0, 3], "26": 0, "simplifi": 0, "depend": [0, 1, 6, 10], "logic": 0, "reduc": 0, "plai": [0, 2], "execut": [0, 1], "time": [0, 5], "19": 0, "keycloak_frontend_url": [0, 7], "accord": 0, "other": [0, 2, 10], "25": 0, "enhanc": 0, "bug": [0, 3], "document": [0, 4], "fix": [0, 3], "appli": [0, 7], "latest": [0, 7], "cumul": [0, 7], "patch": [0, 5, 6], "rh": [0, 1, 7], "sso": [0, 1, 7], "automat": [0, 4, 7, 10], "when": [0, 1, 2, 5, 7], "keycloak_rhsso_apply_patch": [0, 7], "i": [0, 1, 3, 7, 8, 9, 10], "true": [0, 1, 7, 8, 9], "18": 0, "cluster": [0, 1, 7, 8, 10], "now": 0, "perform": [0, 7, 8], "databas": [0, 7, 8], "initi": 0, "first": [0, 5], "node": [0, 7], "avoid": [0, 2], "lock": 0, "issu": [0, 1, 4], "stabl": 0, "collect": [0, 4, 7, 9, 10], "red": [1, 4, 7, 9], "hat": [1, 4, 7, 9], "singl": [1, 4, 7, 9], "sign": [1, 4, 7, 9], "On": [1, 7, 9], "ha": 1, "been": 1, "test": [1, 3, 5], "against": 1, "follow": [1, 2, 5, 7, 9, 10], "2": [1, 2, 3, 5, 7, 8, 9, 10], "9": [1, 7, 8, 10], "10": 1, "plugin": [1, 3], "modul": [1, 5], "within": [1, 3], "mai": [1, 5], "onli": [1, 5, 7], "specif": [1, 2, 8], "A": [1, 3, 10], "contain": [1, 2, 5, 9], "metadata": [1, 5], "identifi": 1, "befor": 1, "you": 1, "need": [1, 2, 5], "cli": [1, 7, 8, 9], "can": 1, "also": 1, "requir": [1, 2, 5, 6, 8, 9, 10], "yml": [1, 2, 10], "via": [1, 7], "r": [1, 7, 10], "format": [1, 5, 6, 8], "name": [1, 2, 5, 7, 8, 9], "The": [1, 5, 7, 8, 9, 10], "python": [1, 10], "packag": [1, 7, 8], "present": 1, "host": [1, 4, 7, 9], "netaddr": [1, 7], "provid": [1, 9, 10], "pip": [1, 7, 10], "txt": [1, 7, 10], "servic": [1, 4, 7, 8, 9], "keycloak_realm": [1, 3, 6], "realm": [1, 7, 8, 9], "user": [1, 2, 5, 7, 8, 9], "feder": [1, 9], "": [1, 3, 8], "client": [1, 7, 8, 9], "an": [1, 3, 7, 8, 9], "variant": 1, "0": [1, 3, 4, 5, 7, 8, 9], "upstream": 1, "base": [1, 7], "defin": [1, 2], "rhsso": 1, "both": 1, "differ": 1, "section": [1, 5], "For": [1, 9], "full": 1, "detail": 1, "refer": [1, 9], "readm": [1, 5], "zip": [1, 7, 8], "archiv": [1, 7, 8], "avail": [1, 5, 9, 10], "repositori": [1, 4, 10], "root": [1, 7, 8], "directori": [1, 2, 7, 8, 10], "keycloak_offline_instal": [1, 7], "allow": [1, 5, 9], "skip": 1, "download": [1, 7, 8], "match": 1, "so": 1, "cach": [1, 7, 8, 10], "multipl": 1, "ar": [1, 2, 4, 5, 7, 9, 10], "provis": 1, "And": 1, "keycloak_rhsso_en": [1, 7], "x": 1, "y": 1, "z": 1, "server": [1, 7, 8], "dist": 1, "fals": [1, 7, 8, 9], "sso_download_url": 1, "http": [1, 5, 7, 8, 9, 10], "intern": [1, 2], "privat": [1, 8], "net": 1, "keycloak_download_url": [1, 7], "ansible_host": 1, "e": [1, 2, 8], "rhn": [1, 7], "cred": 1, "changem": [1, 9], "password": [1, 7, 8, 9], "administr": [1, 7, 8, 9], "consol": [1, 7, 8, 9], "account": [1, 7, 8, 9], "inventori": [1, 5, 10], "below": [1, 5], "deploi": 1, "localhost": [1, 7, 8, 9, 10], "ansible_connect": [1, 10], "creat": [1, 5, 9, 10], "v1": [1, 3], "beta": 1, "releas": [1, 3, 7, 8, 10], "technic": 1, "preview": 1, "If": [1, 8], "have": [1, 2, 7], "ani": [1, 3], "question": 1, "relat": 1, "pleas": [1, 5], "don": [1, 2], "t": [1, 2, 8], "hesit": 1, "contact": 1, "u": 1, "middlewar": [1, 10], "core": [1, 10], "redhat": [1, 4], "com": [1, 4, 7, 8, 10], "open": [1, 7], "github": [1, 5, 7, 8, 10], "apach": [1, 7, 8, 9], "v2": 1, "later": 1, "see": [1, 5], "view": 1, "text": 1, "all": [2, 5, 10], "yaml": 2, "extens": [2, 5], "space": 2, "around": 2, "jinja": 2, "var": [2, 7, 9], "over": 2, "should": [2, 5, 7, 8, 9], "lowercas": 2, "keep": 2, "self": 2, "includ": [2, 5, 7, 9, 10], "possibl": 2, "do": 2, "noth": 2, "more": [2, 8], "than": 2, "list": [2, 4, 8, 9], "except": 2, "where": 2, "pre_task": 2, "post_task": 2, "separ": [2, 8], "valid": 2, "ie": 2, "underscor": 2, "g": 2, "my_rol": 2, "my_playbook": 2, "dash": 2, "my": 2, "trail": 2, "slash": 2, "my_path": 2, "foo": 2, "concaten": 2, "same": 2, "convent": 2, "bar": 2, "indent": 2, "each": [2, 5], "v": 2, "interpol": 2, "chang": [2, 3, 10], "overridden": 2, "go": 2, "those": 2, "would": [2, 5], "like": 2, "overrid": 2, "argument": 2, "meta": 2, "argument_spec": 2, "playbook": [2, 3, 5, 6], "focus": 2, "compat": [2, 3], "ansibl": [2, 3, 5, 7, 10], "autom": [2, 3], "platform": 2, "middleware_autom": [3, 7, 9, 10], "usag": 3, "configur": [3, 4, 7, 8, 9], "support": [3, 5, 9], "licens": [3, 6], "descript": [3, 7, 8, 9], "index": 3, "continu": 3, "integr": 3, "contributor": 3, "guidelin": 3, "strategi": 3, "content": 3, "ad": 3, "exist": [3, 7, 8], "featur": 3, "backward": 3, "secur": 3, "break": [3, 10], "remov": [3, 7, 8], "typograph": 3, "error": 3, "modifi": 3, "1": [3, 4, 5, 7, 8], "devel": 3, "7": [3, 7], "6": 3, "5": [3, 7, 10], "4": [3, 7, 8], "3": [3, 10], "search": 3, "page": [3, 5], "author": [4, 6], "romain": [4, 7, 9], "peliss": [4, 7, 9], "rpeliss": 4, "guido": [4, 7, 8, 9], "grazioli": [4, 7, 8, 9], "ggraziol": 4, "pavan": [4, 7], "kumar": [4, 7], "motaparthi": [4, 7], "pmotapar": 4, "tracker": 4, "sourc": 4, "There": 4, "gener": [4, 5], "doc": [4, 9], "here": 4, "maintain": 5, "semant": 5, "semver": 5, "org": [5, 7, 8, 9], "exampl": [5, 6], "given": 5, "number": 5, "major": 5, "minor": 5, "increment": 5, "incompat": 5, "api": 5, "scenario": 5, "function": [5, 10], "manner": 5, "matrix": 5, "deprec": [5, 7], "strict": 5, "addit": [5, 7, 8], "label": 5, "pre": [5, 7, 8], "build": 5, "hub": 5, "shall": 5, "note": [5, 7], "By": 5, "newli": 5, "begin": 5, "smaller": 5, "therefor": 5, "explicitli": 5, "state": 5, "assum": 5, "current": 5, "readi": 5, "indic": 5, "made": 5, "while": 5, "we": [5, 9], "prior": 5, "next": 5, "doe": 5, "nor": 5, "elimin": 5, "dedic": 5, "introduc": 5, "develop": 5, "limit": 5, "argspec": 5, "either": 5, "structur": 5, "shape": 5, "inbound": 5, "return": 5, "payload": 5, "filter": 5, "connect": [5, 7, 8], "cfg": 5, "entri": [5, 8], "outcom": 5, "previou": 5, "delet": 5, "how": 5, "correct": [5, 10], "consid": 5, "abov": 5, "increas": 5, "revis": 5, "trigger": 5, "annot": 5, "git": [5, 10], "tag": 5, "publish": 5, "built": 5, "artifact": 5, "galaxi": [5, 10], "keycloak": [6, 8, 9, 10], "inform": 6, "python3": 7, "librari": 7, "control": 7, "yum": 7, "dnf": 7, "8": 7, "redhat_csp_download": 7, "date": 7, "eap": 7, "ga": 7, "septemb": 7, "20": 7, "2021": 7, "15": 7, "cp": 7, "januari": 7, "2022": 7, "keycloak_ha_en": 7, "enabl": [7, 8], "auto": [7, 8], "backend": [7, 8], "remot": [7, 8, 10], "infinispan": [7, 8, 10], "keycloak_db_en": 7, "els": [7, 8], "keycloak_admin_us": [7, 9], "admin": [7, 8, 9], "keycloak_bind_address": 7, "address": [7, 8], "bind": [7, 8], "port": [7, 8, 9], "keycloak_host": [7, 9], "hostnam": [7, 8, 9], "keycloak_http_port": [7, 8, 9], "8080": [7, 8, 9], "keycloak_https_port": [7, 9], "tl": [7, 8, 9], "8443": [7, 8, 9], "keycloak_ajp_port": 7, "ajp": [7, 8], "8009": [7, 8], "keycloak_jgroups_port": 7, "jgroup": [7, 8], "tcp": [7, 8], "7600": [7, 8], "keycloak_management_http_port": [7, 8, 9], "manag": [7, 8, 9], "9990": [7, 9], "keycloak_management_https_port": 7, "9993": 7, "keycloak_prefer_ipv4": 7, "prefer": 7, "ipv4": 7, "stack": 7, "keycloak_config_standalone_xml": 7, "filenam": [7, 8], "keycloak_service_us": 7, "posix": [7, 8], "usernam": [7, 8, 9], "keycloak_service_group": 7, "group": [7, 8], "keycloak_service_pidfil": 7, "pid": [7, 8], "run": [7, 8, 10], "keycloak_jvm_packag": 7, "rhel": [7, 8, 10], "runtim": [7, 8], "openjdk": [7, 8], "headless": [7, 8], "keycloak_java_hom": 7, "java_hom": [7, 8], "jre": [7, 8], "leav": [7, 8], "empti": [7, 8], "specifi": [7, 8], "rpm": [7, 8], "none": [7, 8], "keycloak_java_opt": 7, "xms1024m": [7, 8], "xmx2048m": [7, 8], "offlin": [7, 8], "url": [7, 8, 9], "keycloak_vers": 7, "keycloak_dest": 7, "opt": [7, 8], "keycloak_arch": 7, "keycloak_configure_firewalld": 7, "ensur": [7, 8, 10], "firewalld": [7, 8], "miscellan": [7, 8], "keycloak_download_url_9x": 7, "jboss": 7, "keycloak_installdir": 7, "keycloak_jboss_hom": 7, "work": [7, 8], "keycloak_rhsso_installdir": 7, "keycloak_config_dir": 7, "standalon": 7, "keycloak_config_path_to_standalone_xml": 7, "keycloak_auth_realm": [7, 9], "rest": [7, 8, 9], "authent": [7, 8, 9], "master": [7, 8, 9], "keycloak_auth_cli": [7, 8, 9], "call": [7, 8, 9], "keycloak_force_instal": [7, 8], "keycloak_url": [7, 8, 9], "keycloak_management_url": [7, 8, 9], "minimum": 7, "12": 7, "charact": 7, "frontend": 7, "endpoint": [7, 8], "keycloak_modcluster_url": 7, "modclust": 7, "revers": [7, 8], "proxi": [7, 8], "keycloak_jdbc_engin": 7, "engin": [7, 8], "db": 7, "postgr": [7, 8], "mariadb": [7, 8], "keycloak_infinispan_url": 7, "11122": 7, "keycloak_infinispan_us": 7, "supervisor": [7, 8], "keycloak_infinispan_pass": 7, "keycloak_infinispan_sasl_mechan": 7, "type": [7, 9], "scram": [7, 8], "sha": [7, 8], "512": [7, 8], "keycloak_infinispan_use_ssl": 7, "hotrod": 7, "commun": 7, "keycloak_infinispan_trust_store_path": 7, "truststor": 7, "etc": [7, 8], "pki": [7, 8], "cacert": [7, 8], "keycloak_infinispan_trust_store_password": 7, "changeit": [7, 8], "keycloak_jdbc_url": 7, "jdbc": [7, 8], "postgresql": [7, 8], "5432": [7, 8], "keycloak_jdbc_driver_vers": 7, "driver": [7, 8], "1212": [7, 8], "keycloak_db_us": 7, "keycloak_db_pass": 7, "remembertochangem": 7, "include_rol": [7, 9], "16": 7, "keycloak_quarkus_vers": 8, "keycloak_quarkus_ha_en": 8, "keycloak_quarkus_db_en": 8, "keycloak_quarkus_admin_us": 8, "keycloak_quarkus_bind_address": 8, "keycloak_quarkus_host": 8, "keycloak_quarkus_http_port": 8, "keycloak_quarkus_https_port": 8, "keycloak_quarkus_ajp_port": 8, "keycloak_quarkus_jgroups_port": 8, "keycloak_quarkus_service_us": 8, "keycloak_quarkus_service_group": 8, "keycloak_quarkus_service_pidfil": 8, "keycloak_quarkus_jvm_packag": 8, "11": 8, "keycloak_quarkus_java_hom": 8, "keycloak_quarkus_java_opt": 8, "keycloak_quarkus_frontend_url": 8, "public": [8, 9], "auth": [8, 9], "keycloak_quarkus_http_relative_path": 8, "context": [8, 9], "keycloak_quarkus_http_en": 8, "listen": 8, "keycloak_quarkus_https_en": 8, "keycloak_quarkus_key_fil": 8, "kei": 8, "pem": 8, "conf": 8, "keycloak_quarkus_cert_fil": 8, "chain": 8, "crt": 8, "keycloak_quarkus_jdbc_engin": 8, "postr": 8, "keycloak_quarkus_db_us": 8, "keycloak_quarkus_db_pass": 8, "keycloak_quarkus_jdbc_url": 8, "keycloak_quarkus_jdbc_driver_vers": 8, "keycloak_quarkus_ispn_us": 8, "keycloak_quarkus_ispn_pass": 8, "keycloak_quarkus_ispn_url": 8, "keycloak_quarkus_ispn_sasl_mechan": 8, "mechan": 8, "keycloak_quarkus_ispn_use_ssl": 8, "whether": 8, "keycloak_quarkus_ispn_trust_store_path": 8, "trust": 8, "keycloak_quarkus_ispn_trust_store_password": 8, "keystor": 8, "keycloak_quarkus_offline_instal": 8, "keycloak_quarkus_download_url": 8, "keycloak_quarkus_dest": 8, "keycloak_quarkus_arch": 8, "keycloak_quarkus_configure_firewalld": 8, "keycloak_quarkus_metrics_en": 8, "metric": 8, "keycloak_quarkus_health_en": 8, "expos": 8, "health": 8, "check": 8, "keycloak_quarkus_installdir": 8, "keycloak_quarkus_hom": 8, "keycloak_quarkus_config_dir": 8, "keycloak_quarkus_master_realm": 8, "keycloak_quarkus_log": 8, "one": 8, "log": 8, "handler": 8, "comma": 8, "keycloak_quarkus_log_level": 8, "level": 8, "categori": 8, "individu": 8, "info": 8, "keycloak_quarkus_log_fil": 8, "rel": 8, "data": 8, "keycloak_quarkus_log_format": 8, "d": 8, "yyyi": 8, "mm": 8, "dd": 8, "hh": 8, "ss": 8, "sss": 8, "5p": 8, "c": 8, "n": 8, "keycloak_quarkus_proxy_mod": 8, "forward": 8, "mode": 8, "behind": 8, "edg": 8, "keycloak_quarkus_admin_pass": 8, "ye": 8, "keycloak_context": 9, "main": 9, "keycloak_client_publ": 9, "keycloak_client_web_origin": 9, "web": 9, "origin": 9, "keycloak_cli": 9, "declar": 9, "keycloak_client_default_rol": 9, "keycloak_client_us": 9, "map": 9, "keycloak_user_feder": 9, "which": [9, 10], "provider_id": 9, "provider_typ": 9, "storag": 9, "userstorageprovid": 9, "dictionari": 9, "valu": 9, "mapper": 9, "public_cli": 9, "confidenti": 9, "web_origin": 9, "firstnam": 9, "lastnam": 9, "email": 9, "client_rol": 9, "comprehens": 9, "testrealm": 9, "molecul": 10, "setup": 10, "cover": 10, "verifi": 10, "idempot": 10, "In": 10, "order": 10, "local": 10, "clone": 10, "yamllint": 10, "docker": 10, "flake8": 10, "lint": 10, "voluptu": 10, "demo": 10, "aggreg": 10, "rebuilt": 10, "everi": 10, "non": 10, "consist": 10, "behaviour": 10, "flang": 10, "deploy": 10, "wildfli": 10, "crossdc": 10, "multi": 10, "region": 10, "sampl": 10, "system": 10, "step": 10, "environ": 10, "cd": 10, "dep": 10, "cat": 10, "eof": 10}, "objects": {}, "objtypes": {}, "objnames": {}, "titleterms": {"middleware_autom": [0, 1, 4], "keycloak": [0, 1, 3, 4, 7], "releas": [0, 5], "note": 0, "topic": 0, "v1": 0, "1": 0, "0": 0, "devel": 0, "break": [0, 5], "chang": [0, 5], "port": 0, "guid": 0, "7": 0, "bugfix": 0, "6": 0, "5": 0, "minor": 0, "4": 0, "3": 0, "major": 0, "2": 0, "summari": 0, "ansibl": 1, "collect": [1, 3, 5], "version": [1, 5, 7], "compat": [1, 5], "instal": 1, "from": [1, 5], "galaxi": 1, "includ": 1, "role": [1, 5, 6, 7, 8, 9], "usag": 1, "playbook": [1, 7, 9, 10], "control": 1, "node": 1, "local": 1, "sourc": 1, "altern": 1, "like": 1, "corpor": 1, "nexu": 1, "artifactori": 1, "proxi": 1, "etc": 1, "exampl": [1, 7, 9], "command": 1, "configur": 1, "config": 1, "support": 1, "licens": [1, 7, 8, 9], "contributor": 2, "": 2, "guidelin": 2, "welcom": 3, "document": [3, 5], "user": 3, "develop": 3, "gener": 3, "indic": 3, "tabl": 3, "descript": 4, "plugin": [4, 5], "index": [4, 6], "strategi": 5, "new": 5, "content": 5, "i": 5, "ad": 5, "an": 5, "exist": 5, "featur": 5, "within": 5, "backward": 5, "bug": 5, "fix": 5, "secur": 5, "ani": 5, "remov": 5, "A": 5, "typograph": 5, "error": 5, "wa": 5, "modifi": 5, "autom": 5, "requir": 7, "depend": 7, "patch": 7, "default": [7, 8, 9], "variabl": [7, 8, 9], "author": [7, 8, 9], "inform": [7, 8, 9], "keycloak_quarku": 8, "keycloak_realm": 9, "format": 9, "test": 10, "continu": 10, "integr": 10}, "envversion": {"sphinx.domains.c": 2, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 6, "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": 56}}) \ No newline at end of file +Search.setIndex({"docnames": ["CHANGELOG", "README", "developing", "index", "plugins/index", "releasing", "roles/index", "roles/keycloak", "roles/keycloak_quarkus", "roles/keycloak_realm", "testing"], "filenames": ["CHANGELOG.rst", "README.md", "developing.md", "index.rst", "plugins/index.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", "Middleware_Automation.Keycloak", "Collection Versioning Strategy", "Role Index", "keycloak", "keycloak_quarkus", "keycloak_realm", "Testing"], "terms": {"thi": [0, 1, 5, 7], "changelog": [0, 3], "describ": [0, 1], "after": [0, 5, 10], "version": [0, 3, 4, 6, 8], "renam": 0, "variabl": [0, 1, 2, 6], "from": [0, 2, 3, 7], "infinispan_": 0, "prefix": 0, "keycloak_infinispan_": 0, "42": 0, "keycloak_quarku": [0, 1, 3, 6], "us": [0, 1, 2, 7, 8, 9], "absolut": 0, "path": [0, 1, 2, 7, 8, 9], "certif": [0, 7, 8], "file": [0, 1, 2, 7, 8], "39": 0, "becom": 0, "task": [0, 1, 2, 7, 9], "otherwis": 0, "fail": 0, "38": 0, "add": 0, "select": [0, 7], "java": [0, 7, 8], "systemd": [0, 10], "unit": 0, "34": 0, "set": [0, 1, 7, 8, 9], "logfil": 0, "correctli": 0, "under": [0, 2], "home": [0, 8], "35": 0, "updat": [0, 1, 5], "config": [0, 9], "option": [0, 7, 8, 9], "quarku": [0, 1, 8], "32": 0, "new": [0, 3], "role": [0, 2, 3, 10], "instal": [0, 3, 4, 7, 8, 10], "17": [0, 1, 8], "29": 0, "keycloak_config_override_templ": [0, 7], "paramet": [0, 5], "pass": [0, 7, 8], "custom": [0, 7], "xml": [0, 7], "templat": [0, 7], "30": 0, "make": [0, 1, 5, 7, 9], "sure": 0, "start": [0, 2], "jvm": [0, 7, 8], "31": 0, "keycloak_admin_password": [0, 1, 7, 9], "default": [0, 2, 5, 6], "assert": 0, "wa": [0, 3], "26": 0, "simplifi": 0, "depend": [0, 1, 6, 10], "logic": 0, "reduc": 0, "plai": [0, 2], "execut": [0, 1], "time": [0, 5], "19": 0, "keycloak_frontend_url": [0, 7], "accord": 0, "other": [0, 2, 10], "25": 0, "enhanc": 0, "bug": [0, 3], "document": [0, 4], "fix": [0, 3], "appli": [0, 7], "latest": [0, 7], "cumul": [0, 7], "patch": [0, 5, 6], "rh": [0, 1, 7], "sso": [0, 1, 7], "automat": [0, 4, 7, 10], "when": [0, 1, 2, 5, 7], "keycloak_rhsso_apply_patch": [0, 7], "i": [0, 1, 3, 7, 8, 9, 10], "true": [0, 1, 7, 8, 9], "18": 0, "cluster": [0, 1, 7, 8, 10], "now": 0, "perform": [0, 7, 8], "databas": [0, 7, 8], "initi": 0, "first": [0, 5], "node": [0, 7], "avoid": [0, 2], "lock": 0, "issu": [0, 1, 4], "stabl": 0, "collect": [0, 4, 7, 9, 10], "red": [1, 4, 7, 9], "hat": [1, 4, 7, 9], "singl": [1, 4, 7, 9], "sign": [1, 4, 7, 9], "On": [1, 7, 9], "ha": 1, "been": 1, "test": [1, 3, 5], "against": 1, "follow": [1, 2, 5, 7, 9, 10], "2": [1, 2, 3, 5, 7, 8, 9, 10], "9": [1, 7, 8, 10], "10": 1, "plugin": [1, 3], "modul": [1, 5], "within": [1, 3], "mai": [1, 5], "onli": [1, 5, 7], "specif": [1, 2, 8], "A": [1, 3, 10], "contain": [1, 2, 5, 9], "metadata": [1, 5], "identifi": 1, "befor": 1, "you": 1, "need": [1, 2, 5], "cli": [1, 7, 8, 9], "can": 1, "also": 1, "requir": [1, 2, 5, 6, 8, 9, 10], "yml": [1, 2, 10], "via": [1, 7], "r": [1, 7, 10], "format": [1, 5, 6, 8], "name": [1, 2, 5, 7, 8, 9], "The": [1, 5, 7, 8, 9, 10], "python": [1, 10], "packag": [1, 7, 8], "present": 1, "host": [1, 4, 7, 9], "netaddr": [1, 7], "provid": [1, 9, 10], "pip": [1, 7, 10], "txt": [1, 7, 10], "servic": [1, 4, 7, 8, 9], "keycloak_realm": [1, 3, 6], "realm": [1, 7, 8, 9], "user": [1, 2, 5, 7, 8, 9], "feder": [1, 9], "": [1, 3, 8], "client": [1, 7, 8, 9], "an": [1, 3, 7, 8, 9], "variant": 1, "0": [1, 3, 4, 5, 7, 8, 9], "upstream": 1, "base": [1, 7], "defin": [1, 2], "rhsso": 1, "both": 1, "differ": 1, "section": [1, 5], "For": [1, 9], "full": 1, "detail": 1, "refer": [1, 9], "readm": [1, 5], "zip": [1, 7, 8], "archiv": [1, 7, 8], "avail": [1, 5, 9, 10], "repositori": [1, 4, 10], "root": [1, 7, 8], "directori": [1, 2, 7, 8, 10], "keycloak_offline_instal": [1, 7], "allow": [1, 5, 9], "skip": 1, "download": [1, 7, 8], "match": 1, "so": 1, "cach": [1, 7, 8, 10], "multipl": 1, "ar": [1, 2, 4, 5, 7, 9, 10], "provis": 1, "And": 1, "keycloak_rhsso_en": [1, 7], "x": 1, "y": 1, "z": 1, "server": [1, 7, 8], "dist": 1, "fals": [1, 7, 8, 9], "sso_download_url": 1, "http": [1, 5, 7, 8, 9, 10], "intern": [1, 2], "privat": [1, 8], "net": 1, "keycloak_download_url": [1, 7], "ansible_host": 1, "e": [1, 2, 8], "rhn": [1, 7], "cred": 1, "changem": [1, 9], "password": [1, 7, 8, 9], "administr": [1, 7, 8, 9], "consol": [1, 7, 8, 9], "account": [1, 7, 8, 9], "inventori": [1, 5, 10], "below": [1, 5], "deploi": 1, "localhost": [1, 7, 8, 9, 10], "ansible_connect": [1, 10], "creat": [1, 5, 9, 10], "v1": [1, 3], "beta": 1, "releas": [1, 3, 7, 8, 10], "technic": 1, "preview": 1, "If": [1, 8], "have": [1, 2, 7], "ani": [1, 3], "question": 1, "relat": 1, "pleas": [1, 5], "don": [1, 2], "t": [1, 2, 8], "hesit": 1, "contact": 1, "u": 1, "middlewar": [1, 10], "core": [1, 10], "redhat": [1, 4], "com": [1, 4, 7, 8, 10], "open": [1, 7], "github": [1, 5, 7, 8, 10], "apach": [1, 7, 8, 9], "v2": 1, "later": 1, "see": [1, 5], "view": 1, "text": 1, "all": [2, 5, 10], "yaml": 2, "extens": [2, 5], "space": 2, "around": 2, "jinja": 2, "var": [2, 7, 9], "over": 2, "should": [2, 5, 7, 8, 9], "lowercas": 2, "keep": 2, "self": 2, "includ": [2, 5, 7, 9, 10], "possibl": 2, "do": 2, "noth": 2, "more": [2, 8], "than": 2, "list": [2, 4, 8, 9], "except": 2, "where": 2, "pre_task": 2, "post_task": 2, "separ": [2, 8], "valid": 2, "ie": 2, "underscor": 2, "g": 2, "my_rol": 2, "my_playbook": 2, "dash": 2, "my": 2, "trail": 2, "slash": 2, "my_path": 2, "foo": 2, "concaten": 2, "same": 2, "convent": 2, "bar": 2, "indent": 2, "each": [2, 5], "v": 2, "interpol": 2, "chang": [2, 3, 10], "overridden": 2, "go": 2, "those": 2, "would": [2, 5], "like": 2, "overrid": 2, "argument": 2, "meta": 2, "argument_spec": 2, "playbook": [2, 3, 5, 6], "focus": 2, "compat": [2, 3], "ansibl": [2, 3, 5, 7, 10], "autom": [2, 3], "platform": 2, "middleware_autom": [3, 7, 9, 10], "usag": 3, "configur": [3, 4, 7, 8, 9], "support": [3, 5, 9], "licens": [3, 6], "descript": [3, 7, 8, 9], "index": 3, "continu": 3, "integr": 3, "contributor": 3, "guidelin": 3, "strategi": 3, "content": 3, "ad": 3, "exist": [3, 7, 8], "featur": 3, "backward": 3, "secur": 3, "break": [3, 10], "remov": [3, 7, 8], "typograph": 3, "error": 3, "modifi": 3, "1": [3, 4, 5, 7, 8], "devel": 3, "7": [3, 7], "6": 3, "5": [3, 7, 10], "4": [3, 7, 8], "3": [3, 10], "search": 3, "page": [3, 5], "author": [4, 6], "romain": [4, 7, 9], "peliss": [4, 7, 9], "rpeliss": 4, "guido": [4, 7, 8, 9], "grazioli": [4, 7, 8, 9], "ggraziol": 4, "pavan": [4, 7], "kumar": [4, 7], "motaparthi": [4, 7], "pmotapar": 4, "tracker": 4, "sourc": 4, "There": 4, "gener": [4, 5], "doc": [4, 9], "here": 4, "maintain": 5, "semant": 5, "semver": 5, "org": [5, 7, 8, 9], "exampl": [5, 6], "given": 5, "number": 5, "major": 5, "minor": 5, "increment": 5, "incompat": 5, "api": 5, "scenario": 5, "function": [5, 10], "manner": 5, "matrix": 5, "deprec": [5, 7], "strict": 5, "addit": [5, 7, 8], "label": 5, "pre": [5, 7, 8], "build": 5, "hub": 5, "shall": 5, "note": [5, 7], "By": 5, "newli": 5, "begin": 5, "smaller": 5, "therefor": 5, "explicitli": 5, "state": 5, "assum": 5, "current": 5, "readi": 5, "indic": 5, "made": 5, "while": 5, "we": [5, 9], "prior": 5, "next": 5, "doe": 5, "nor": 5, "elimin": 5, "dedic": 5, "introduc": 5, "develop": 5, "limit": 5, "argspec": 5, "either": 5, "structur": 5, "shape": 5, "inbound": 5, "return": 5, "payload": 5, "filter": 5, "connect": [5, 7, 8], "cfg": 5, "entri": [5, 8], "outcom": 5, "previou": 5, "delet": 5, "how": 5, "correct": [5, 10], "consid": 5, "abov": 5, "increas": 5, "revis": 5, "trigger": 5, "annot": 5, "git": [5, 10], "tag": 5, "publish": 5, "built": 5, "artifact": 5, "galaxi": [5, 10], "keycloak": [6, 8, 9, 10], "inform": 6, "python3": 7, "librari": 7, "control": 7, "yum": 7, "dnf": 7, "8": 7, "redhat_csp_download": 7, "date": 7, "eap": 7, "ga": 7, "septemb": 7, "20": 7, "2021": 7, "15": 7, "cp": 7, "januari": 7, "2022": 7, "keycloak_ha_en": 7, "enabl": [7, 8], "auto": [7, 8], "backend": [7, 8], "remot": [7, 8, 10], "infinispan": [7, 8, 10], "keycloak_db_en": 7, "els": [7, 8], "keycloak_admin_us": [7, 9], "admin": [7, 8, 9], "keycloak_bind_address": 7, "address": [7, 8], "bind": [7, 8], "port": [7, 8, 9], "keycloak_host": [7, 9], "hostnam": [7, 8, 9], "keycloak_http_port": [7, 8, 9], "8080": [7, 8, 9], "keycloak_https_port": [7, 9], "tl": [7, 8, 9], "8443": [7, 8, 9], "keycloak_ajp_port": 7, "ajp": [7, 8], "8009": [7, 8], "keycloak_jgroups_port": 7, "jgroup": [7, 8], "tcp": [7, 8], "7600": [7, 8], "keycloak_management_http_port": [7, 8, 9], "manag": [7, 8, 9], "9990": [7, 9], "keycloak_management_https_port": 7, "9993": 7, "keycloak_prefer_ipv4": 7, "prefer": 7, "ipv4": 7, "stack": 7, "keycloak_config_standalone_xml": 7, "filenam": [7, 8], "keycloak_service_us": 7, "posix": [7, 8], "usernam": [7, 8, 9], "keycloak_service_group": 7, "group": [7, 8], "keycloak_service_pidfil": 7, "pid": [7, 8], "run": [7, 8, 10], "keycloak_jvm_packag": 7, "rhel": [7, 8, 10], "runtim": [7, 8], "openjdk": [7, 8], "headless": [7, 8], "keycloak_java_hom": 7, "java_hom": [7, 8], "jre": [7, 8], "leav": [7, 8], "empti": [7, 8], "specifi": [7, 8], "rpm": [7, 8], "none": [7, 8], "keycloak_java_opt": 7, "xms1024m": [7, 8], "xmx2048m": [7, 8], "offlin": [7, 8], "url": [7, 8, 9], "keycloak_vers": 7, "keycloak_dest": 7, "opt": [7, 8], "keycloak_arch": 7, "keycloak_configure_firewalld": 7, "ensur": [7, 8, 10], "firewalld": [7, 8], "miscellan": [7, 8], "keycloak_download_url_9x": 7, "jboss": 7, "keycloak_installdir": 7, "keycloak_jboss_hom": 7, "work": [7, 8], "keycloak_rhsso_installdir": 7, "keycloak_config_dir": 7, "standalon": 7, "keycloak_config_path_to_standalone_xml": 7, "keycloak_auth_realm": [7, 9], "rest": [7, 8, 9], "authent": [7, 8, 9], "master": [7, 8, 9], "keycloak_auth_cli": [7, 8, 9], "call": [7, 8, 9], "keycloak_force_instal": [7, 8], "keycloak_url": [7, 8, 9], "keycloak_management_url": [7, 8, 9], "minimum": 7, "12": 7, "charact": 7, "frontend": 7, "endpoint": [7, 8], "keycloak_modcluster_url": 7, "modclust": 7, "revers": [7, 8], "proxi": [7, 8], "keycloak_jdbc_engin": 7, "engin": [7, 8], "db": 7, "postgr": [7, 8], "mariadb": [7, 8], "keycloak_infinispan_url": 7, "11122": 7, "keycloak_infinispan_us": 7, "supervisor": [7, 8], "keycloak_infinispan_pass": 7, "keycloak_infinispan_sasl_mechan": 7, "type": [7, 9], "scram": [7, 8], "sha": [7, 8], "512": [7, 8], "keycloak_infinispan_use_ssl": 7, "hotrod": 7, "commun": 7, "keycloak_infinispan_trust_store_path": 7, "truststor": 7, "etc": [7, 8], "pki": [7, 8], "cacert": [7, 8], "keycloak_infinispan_trust_store_password": 7, "changeit": [7, 8], "keycloak_jdbc_url": 7, "jdbc": [7, 8], "postgresql": [7, 8], "5432": [7, 8], "keycloak_jdbc_driver_vers": 7, "driver": [7, 8], "1212": [7, 8], "keycloak_db_us": 7, "keycloak_db_pass": 7, "remembertochangem": 7, "include_rol": [7, 9], "16": 7, "keycloak_quarkus_vers": 8, "keycloak_quarkus_ha_en": 8, "keycloak_quarkus_db_en": 8, "keycloak_quarkus_admin_us": 8, "keycloak_quarkus_bind_address": 8, "keycloak_quarkus_host": 8, "keycloak_quarkus_http_port": 8, "keycloak_quarkus_https_port": 8, "keycloak_quarkus_ajp_port": 8, "keycloak_quarkus_jgroups_port": 8, "keycloak_quarkus_service_us": 8, "keycloak_quarkus_service_group": 8, "keycloak_quarkus_service_pidfil": 8, "keycloak_quarkus_jvm_packag": 8, "11": 8, "keycloak_quarkus_java_hom": 8, "keycloak_quarkus_java_opt": 8, "keycloak_quarkus_frontend_url": 8, "public": [8, 9], "auth": [8, 9], "keycloak_quarkus_http_relative_path": 8, "context": [8, 9], "keycloak_quarkus_http_en": 8, "listen": 8, "keycloak_quarkus_https_en": 8, "keycloak_quarkus_key_fil": 8, "kei": 8, "pem": 8, "conf": 8, "keycloak_quarkus_cert_fil": 8, "chain": 8, "crt": 8, "keycloak_quarkus_jdbc_engin": 8, "postr": 8, "keycloak_quarkus_db_us": 8, "keycloak_quarkus_db_pass": 8, "keycloak_quarkus_jdbc_url": 8, "keycloak_quarkus_jdbc_driver_vers": 8, "keycloak_quarkus_ispn_us": 8, "keycloak_quarkus_ispn_pass": 8, "keycloak_quarkus_ispn_url": 8, "keycloak_quarkus_ispn_sasl_mechan": 8, "mechan": 8, "keycloak_quarkus_ispn_use_ssl": 8, "whether": 8, "keycloak_quarkus_ispn_trust_store_path": 8, "trust": 8, "keycloak_quarkus_ispn_trust_store_password": 8, "keystor": 8, "keycloak_quarkus_offline_instal": 8, "keycloak_quarkus_download_url": 8, "keycloak_quarkus_dest": 8, "keycloak_quarkus_arch": 8, "keycloak_quarkus_configure_firewalld": 8, "keycloak_quarkus_metrics_en": 8, "metric": 8, "keycloak_quarkus_health_en": 8, "expos": 8, "health": 8, "check": 8, "keycloak_quarkus_installdir": 8, "keycloak_quarkus_hom": 8, "keycloak_quarkus_config_dir": 8, "keycloak_quarkus_master_realm": 8, "keycloak_quarkus_log": 8, "one": 8, "log": 8, "handler": 8, "comma": 8, "keycloak_quarkus_log_level": 8, "level": 8, "categori": 8, "individu": 8, "info": 8, "keycloak_quarkus_log_fil": 8, "rel": 8, "data": 8, "keycloak_quarkus_log_format": 8, "d": 8, "yyyi": 8, "mm": 8, "dd": 8, "hh": 8, "ss": 8, "sss": 8, "5p": 8, "c": 8, "n": 8, "keycloak_quarkus_proxy_mod": 8, "forward": 8, "mode": 8, "behind": 8, "edg": 8, "keycloak_quarkus_admin_pass": 8, "ye": 8, "keycloak_context": 9, "main": 9, "keycloak_client_publ": 9, "keycloak_client_web_origin": 9, "web": 9, "origin": 9, "keycloak_cli": 9, "declar": 9, "keycloak_client_default_rol": 9, "keycloak_client_us": 9, "map": 9, "keycloak_user_feder": 9, "which": [9, 10], "provider_id": 9, "provider_typ": 9, "storag": 9, "userstorageprovid": 9, "dictionari": 9, "valu": 9, "mapper": 9, "public_cli": 9, "confidenti": 9, "web_origin": 9, "firstnam": 9, "lastnam": 9, "email": 9, "client_rol": 9, "comprehens": 9, "testrealm": 9, "molecul": 10, "setup": 10, "cover": 10, "verifi": 10, "idempot": 10, "In": 10, "order": 10, "local": 10, "clone": 10, "yamllint": 10, "docker": 10, "flake8": 10, "lint": 10, "voluptu": 10, "demo": 10, "aggreg": 10, "rebuilt": 10, "everi": 10, "non": 10, "consist": 10, "behaviour": 10, "flang": 10, "deploy": 10, "wildfli": 10, "crossdc": 10, "multi": 10, "region": 10, "sampl": 10, "system": 10, "step": 10, "environ": 10, "cd": 10, "dep": 10, "cat": 10, "eof": 10}, "objects": {}, "objtypes": {}, "objnames": {}, "titleterms": {"middleware_autom": [0, 1, 4], "keycloak": [0, 1, 3, 4, 7], "releas": [0, 5], "note": 0, "topic": 0, "v1": 0, "1": 0, "0": 0, "devel": 0, "break": [0, 5], "chang": [0, 5], "port": 0, "guid": 0, "7": 0, "bugfix": 0, "6": 0, "5": 0, "minor": 0, "4": 0, "3": 0, "major": 0, "2": 0, "summari": 0, "ansibl": 1, "collect": [1, 3, 5], "version": [1, 5, 7], "compat": [1, 5], "instal": 1, "from": [1, 5], "galaxi": 1, "includ": 1, "role": [1, 5, 6, 7, 8, 9], "usag": 1, "playbook": [1, 7, 9, 10], "control": 1, "node": 1, "local": 1, "sourc": 1, "altern": 1, "like": 1, "corpor": 1, "nexu": 1, "artifactori": 1, "proxi": 1, "etc": 1, "exampl": [1, 7, 9], "command": 1, "configur": 1, "config": 1, "support": 1, "licens": [1, 7, 8, 9], "contributor": 2, "": 2, "guidelin": 2, "welcom": 3, "document": [3, 5], "user": 3, "develop": 3, "gener": 3, "indic": 3, "tabl": 3, "descript": 4, "plugin": [4, 5], "index": [4, 6], "strategi": 5, "new": 5, "content": 5, "i": 5, "ad": 5, "an": 5, "exist": 5, "featur": 5, "within": 5, "backward": 5, "bug": 5, "fix": 5, "secur": 5, "ani": 5, "remov": 5, "A": 5, "typograph": 5, "error": 5, "wa": 5, "modifi": 5, "autom": 5, "requir": 7, "depend": 7, "patch": 7, "default": [7, 8, 9], "variabl": [7, 8, 9], "author": [7, 8, 9], "inform": [7, 8, 9], "keycloak_quarku": 8, "keycloak_realm": 9, "format": 9, "test": 10, "continu": 10, "integr": 10}, "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.1.0-devel": [[0, "v1-1-0-devel"]], "Breaking Changes / Porting Guide": [[0, "breaking-changes-porting-guide"], [0, "id2"]], "v1.0.7": [[0, "v1-0-7"]], "Bugfixes": [[0, "bugfixes"], [0, "id5"], [0, "id12"], [0, "id17"]], "v1.0.6": [[0, "v1-0-6"]], "v1.0.5": [[0, "v1-0-5"]], "Minor Changes": [[0, "minor-changes"], [0, "id10"], [0, "id14"], [0, "id21"]], "v1.0.4": [[0, "v1-0-4"]], "v1.0.3": [[0, "v1-0-3"]], "Major Changes": [[0, "major-changes"], [0, "id19"]], "v1.0.2": [[0, "v1-0-2"]], "v1.0.1": [[0, "v1-0-1"]], "Release Summary": [[0, "release-summary"], [0, "id23"]], "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 (local source)": [[1, "install-from-controller-node-local-source"]], "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"]], "Support": [[1, "support"]], "License": [[1, "license"], [7, "license"], [8, "license"], [9, "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]], "Indices and tables": [[3, "indices-and-tables"]], "Middleware_Automation.Keycloak": [[4, "middleware-automation-keycloak"]], "Description": [[4, "description"]], "Plugin Index": [[4, "plugin-index"]], "Collection Versioning Strategy": [[5, "collection-versioning-strategy"]], "New content is added to an existing collection": [[5, "new-content-is-added-to-an-existing-collection"]], "New feature to existing plugin or role within a collection (backwards compatible)": [[5, "new-feature-to-existing-plugin-or-role-within-a-collection-backwards-compatible"]], "Bug fix or security fix to existing content within a collection": [[5, "bug-fix-or-security-fix-to-existing-content-within-a-collection"]], "Breaking change to any content within a collection": [[5, "breaking-change-to-any-content-within-a-collection"]], "Content removed from a collection": [[5, "content-removed-from-a-collection"]], "A typographical error was fixed in the documentation for a collection": [[5, "a-typographical-error-was-fixed-in-the-documentation-for-a-collection"]], "Documentation added/removed/modified within a collection": [[5, "documentation-added-removed-modified-within-a-collection"]], "Release automation": [[5, "release-automation"]], "Role Index": [[6, "role-index"]], "keycloak": [[7, "keycloak"]], "Requirements": [[7, "requirements"]], "Dependencies": [[7, "dependencies"]], "Versions": [[7, "versions"]], "Patching": [[7, "patching"]], "Role Defaults": [[7, "role-defaults"], [8, "role-defaults"], [9, "role-defaults"]], "Role Variables": [[7, "role-variables"], [8, "role-variables"], [9, "role-variables"]], "Example Playbook": [[7, "example-playbook"], [9, "example-playbook"]], "Author Information": [[7, "author-information"], [8, "author-information"], [9, "author-information"]], "keycloak_quarkus": [[8, "keycloak-quarkus"]], "keycloak_realm": [[9, "keycloak-realm"]], "Variable formats": [[9, "variable-formats"]], "Testing": [[10, "testing"]], "Continuous integration": [[10, "continuous-integration"]], "Integration testing": [[10, "integration-testing"]], "Test playbooks": [[10, "test-playbooks"]]}, "indexentries": {}}) \ No newline at end of file diff --git a/main/testing.html b/main/testing.html index 539027a..dc436ca 100644 --- a/main/testing.html +++ b/main/testing.html @@ -17,6 +17,7 @@ +