From 6a56f56679de6b56d397118bc10167206a3e5e87 Mon Sep 17 00:00:00 2001 From: Blai Peidro Date: Sun, 1 Nov 2026 03:06:18 +0100 Subject: [PATCH] docs: databases under connections --- .../_build_forms/expressions/placeholders.md | 6 +- i18n/ca/_build_forms/formfields/list.md | 5 +- i18n/ca/_build_forms/formfields/yaml.md | 6 +- i18n/ca/_configure/credentials.md | 8 +- .../_configure/credentials/credential-page.md | 4 +- i18n/ca/_configure/credentials/types.md | 7 +- i18n/ca/_configure/customization/index.md | 4 +- i18n/ca/_configure/databases.md | 150 ++++++++++++++++++ i18n/ca/_configure/databases/database-page.md | 61 +++++++ i18n/ca/_configure/databases/in-forms.md | 77 +++++++++ i18n/ca/_configure/databases/list.md | 64 ++++++++ i18n/ca/_configure/disclaimer.md | 4 +- i18n/ca/_configure/notification-channels.md | 4 +- i18n/ca/_configure/production/index.md | 4 +- i18n/ca/_configure/rte/index.md | 4 +- i18n/ca/_configure/runners.md | 4 +- i18n/ca/_configure/secret-stores/index.md | 7 +- i18n/ca/_configure/security/index.md | 4 +- i18n/ca/_configure/seed/example.md | 11 +- i18n/ca/_configure/seed/index.md | 3 +- i18n/ca/_configure/users-and-groups.md | 4 +- i18n/ca/_reference/faq.md | 20 +-- .../_build_forms/expressions/placeholders.md | 6 +- i18n/de/_build_forms/formfields/list.md | 5 +- i18n/de/_build_forms/formfields/yaml.md | 6 +- i18n/de/_configure/credentials.md | 8 +- .../_configure/credentials/credential-page.md | 4 +- i18n/de/_configure/credentials/types.md | 7 +- i18n/de/_configure/customization/index.md | 4 +- i18n/de/_configure/databases.md | 150 ++++++++++++++++++ i18n/de/_configure/databases/database-page.md | 61 +++++++ i18n/de/_configure/databases/in-forms.md | 77 +++++++++ i18n/de/_configure/databases/list.md | 64 ++++++++ i18n/de/_configure/disclaimer.md | 4 +- i18n/de/_configure/notification-channels.md | 4 +- i18n/de/_configure/production/index.md | 4 +- i18n/de/_configure/rte/index.md | 4 +- i18n/de/_configure/runners.md | 4 +- i18n/de/_configure/secret-stores/index.md | 7 +- i18n/de/_configure/security/index.md | 4 +- i18n/de/_configure/seed/example.md | 11 +- i18n/de/_configure/seed/index.md | 3 +- i18n/de/_configure/users-and-groups.md | 4 +- i18n/de/_reference/faq.md | 20 +-- .../_build_forms/expressions/placeholders.md | 6 +- i18n/es/_build_forms/formfields/list.md | 5 +- i18n/es/_build_forms/formfields/yaml.md | 6 +- i18n/es/_configure/credentials.md | 8 +- .../_configure/credentials/credential-page.md | 4 +- i18n/es/_configure/credentials/types.md | 7 +- i18n/es/_configure/customization/index.md | 4 +- i18n/es/_configure/databases.md | 150 ++++++++++++++++++ i18n/es/_configure/databases/database-page.md | 61 +++++++ i18n/es/_configure/databases/in-forms.md | 77 +++++++++ i18n/es/_configure/databases/list.md | 64 ++++++++ i18n/es/_configure/disclaimer.md | 4 +- i18n/es/_configure/notification-channels.md | 4 +- i18n/es/_configure/production/index.md | 4 +- i18n/es/_configure/rte/index.md | 4 +- i18n/es/_configure/runners.md | 4 +- i18n/es/_configure/secret-stores/index.md | 7 +- i18n/es/_configure/security/index.md | 4 +- i18n/es/_configure/seed/example.md | 11 +- i18n/es/_configure/seed/index.md | 3 +- i18n/es/_configure/users-and-groups.md | 4 +- i18n/es/_reference/faq.md | 20 +-- .../_build_forms/expressions/placeholders.md | 6 +- i18n/fr/_build_forms/formfields/list.md | 5 +- i18n/fr/_build_forms/formfields/yaml.md | 6 +- i18n/fr/_configure/credentials.md | 8 +- .../_configure/credentials/credential-page.md | 4 +- i18n/fr/_configure/credentials/types.md | 7 +- i18n/fr/_configure/customization/index.md | 4 +- i18n/fr/_configure/databases.md | 150 ++++++++++++++++++ i18n/fr/_configure/databases/database-page.md | 61 +++++++ i18n/fr/_configure/databases/in-forms.md | 77 +++++++++ i18n/fr/_configure/databases/list.md | 64 ++++++++ i18n/fr/_configure/disclaimer.md | 4 +- i18n/fr/_configure/notification-channels.md | 4 +- i18n/fr/_configure/production/index.md | 4 +- i18n/fr/_configure/rte/index.md | 4 +- i18n/fr/_configure/runners.md | 4 +- i18n/fr/_configure/secret-stores/index.md | 7 +- i18n/fr/_configure/security/index.md | 4 +- i18n/fr/_configure/seed/example.md | 11 +- i18n/fr/_configure/seed/index.md | 3 +- i18n/fr/_configure/users-and-groups.md | 4 +- i18n/fr/_reference/faq.md | 20 +-- .../_build_forms/expressions/placeholders.md | 6 +- i18n/it/_build_forms/formfields/list.md | 5 +- i18n/it/_build_forms/formfields/yaml.md | 6 +- i18n/it/_configure/credentials.md | 8 +- .../_configure/credentials/credential-page.md | 4 +- i18n/it/_configure/credentials/types.md | 7 +- i18n/it/_configure/customization/index.md | 4 +- i18n/it/_configure/databases.md | 150 ++++++++++++++++++ i18n/it/_configure/databases/database-page.md | 61 +++++++ i18n/it/_configure/databases/in-forms.md | 77 +++++++++ i18n/it/_configure/databases/list.md | 64 ++++++++ i18n/it/_configure/disclaimer.md | 4 +- i18n/it/_configure/notification-channels.md | 4 +- i18n/it/_configure/production/index.md | 4 +- i18n/it/_configure/rte/index.md | 4 +- i18n/it/_configure/runners.md | 4 +- i18n/it/_configure/secret-stores/index.md | 7 +- i18n/it/_configure/security/index.md | 4 +- i18n/it/_configure/seed/example.md | 11 +- i18n/it/_configure/seed/index.md | 3 +- i18n/it/_configure/users-and-groups.md | 4 +- i18n/it/_reference/faq.md | 20 +-- .../_build_forms/expressions/placeholders.md | 6 +- i18n/ja/_build_forms/formfields/list.md | 5 +- i18n/ja/_build_forms/formfields/yaml.md | 6 +- i18n/ja/_configure/credentials.md | 7 +- .../_configure/credentials/credential-page.md | 4 +- i18n/ja/_configure/credentials/types.md | 7 +- i18n/ja/_configure/customization/index.md | 4 +- i18n/ja/_configure/databases.md | 149 +++++++++++++++++ i18n/ja/_configure/databases/database-page.md | 61 +++++++ i18n/ja/_configure/databases/in-forms.md | 77 +++++++++ i18n/ja/_configure/databases/list.md | 64 ++++++++ i18n/ja/_configure/disclaimer.md | 4 +- i18n/ja/_configure/notification-channels.md | 4 +- i18n/ja/_configure/production/index.md | 4 +- i18n/ja/_configure/rte/index.md | 4 +- i18n/ja/_configure/runners.md | 4 +- i18n/ja/_configure/secret-stores/index.md | 7 +- i18n/ja/_configure/security/index.md | 4 +- i18n/ja/_configure/seed/example.md | 11 +- i18n/ja/_configure/seed/index.md | 3 +- i18n/ja/_configure/users-and-groups.md | 4 +- i18n/ja/_reference/faq.md | 20 +-- .../_build_forms/expressions/placeholders.md | 6 +- i18n/nl/_build_forms/formfields/list.md | 5 +- i18n/nl/_build_forms/formfields/yaml.md | 6 +- i18n/nl/_configure/credentials.md | 8 +- .../_configure/credentials/credential-page.md | 4 +- i18n/nl/_configure/credentials/types.md | 7 +- i18n/nl/_configure/customization/index.md | 4 +- i18n/nl/_configure/databases.md | 150 ++++++++++++++++++ i18n/nl/_configure/databases/database-page.md | 61 +++++++ i18n/nl/_configure/databases/in-forms.md | 77 +++++++++ i18n/nl/_configure/databases/list.md | 64 ++++++++ i18n/nl/_configure/disclaimer.md | 4 +- i18n/nl/_configure/notification-channels.md | 4 +- i18n/nl/_configure/production/index.md | 4 +- i18n/nl/_configure/rte/index.md | 4 +- i18n/nl/_configure/runners.md | 4 +- i18n/nl/_configure/secret-stores/index.md | 7 +- i18n/nl/_configure/security/index.md | 4 +- i18n/nl/_configure/seed/example.md | 11 +- i18n/nl/_configure/seed/index.md | 3 +- i18n/nl/_configure/users-and-groups.md | 4 +- i18n/nl/_reference/faq.md | 20 +-- .../_build_forms/expressions/placeholders.md | 6 +- i18n/pl/_build_forms/formfields/list.md | 5 +- i18n/pl/_build_forms/formfields/yaml.md | 6 +- i18n/pl/_configure/credentials.md | 8 +- .../_configure/credentials/credential-page.md | 4 +- i18n/pl/_configure/credentials/types.md | 7 +- i18n/pl/_configure/customization/index.md | 4 +- i18n/pl/_configure/databases.md | 150 ++++++++++++++++++ i18n/pl/_configure/databases/database-page.md | 61 +++++++ i18n/pl/_configure/databases/in-forms.md | 77 +++++++++ i18n/pl/_configure/databases/list.md | 64 ++++++++ i18n/pl/_configure/disclaimer.md | 4 +- i18n/pl/_configure/notification-channels.md | 4 +- i18n/pl/_configure/production/index.md | 4 +- i18n/pl/_configure/rte/index.md | 4 +- i18n/pl/_configure/runners.md | 4 +- i18n/pl/_configure/secret-stores/index.md | 7 +- i18n/pl/_configure/security/index.md | 4 +- i18n/pl/_configure/seed/example.md | 11 +- i18n/pl/_configure/seed/index.md | 3 +- i18n/pl/_configure/users-and-groups.md | 4 +- i18n/pl/_reference/faq.md | 20 +-- .../_build_forms/expressions/placeholders.md | 6 +- i18n/pt/_build_forms/formfields/list.md | 5 +- i18n/pt/_build_forms/formfields/yaml.md | 6 +- i18n/pt/_configure/credentials.md | 8 +- .../_configure/credentials/credential-page.md | 4 +- i18n/pt/_configure/credentials/types.md | 7 +- i18n/pt/_configure/customization/index.md | 4 +- i18n/pt/_configure/databases.md | 150 ++++++++++++++++++ i18n/pt/_configure/databases/database-page.md | 61 +++++++ i18n/pt/_configure/databases/in-forms.md | 77 +++++++++ i18n/pt/_configure/databases/list.md | 64 ++++++++ i18n/pt/_configure/disclaimer.md | 4 +- i18n/pt/_configure/notification-channels.md | 4 +- i18n/pt/_configure/production/index.md | 4 +- i18n/pt/_configure/rte/index.md | 4 +- i18n/pt/_configure/runners.md | 4 +- i18n/pt/_configure/secret-stores/index.md | 7 +- i18n/pt/_configure/security/index.md | 4 +- i18n/pt/_configure/seed/example.md | 11 +- i18n/pt/_configure/seed/index.md | 3 +- i18n/pt/_configure/users-and-groups.md | 4 +- i18n/pt/_reference/faq.md | 20 +-- .../_build_forms/expressions/placeholders.md | 6 +- i18n/zh/_build_forms/formfields/list.md | 5 +- i18n/zh/_build_forms/formfields/yaml.md | 6 +- i18n/zh/_configure/credentials.md | 7 +- .../_configure/credentials/credential-page.md | 4 +- i18n/zh/_configure/credentials/types.md | 7 +- i18n/zh/_configure/customization/index.md | 4 +- i18n/zh/_configure/databases.md | 148 +++++++++++++++++ i18n/zh/_configure/databases/database-page.md | 61 +++++++ i18n/zh/_configure/databases/in-forms.md | 76 +++++++++ i18n/zh/_configure/databases/list.md | 64 ++++++++ i18n/zh/_configure/disclaimer.md | 4 +- i18n/zh/_configure/notification-channels.md | 4 +- i18n/zh/_configure/production/index.md | 4 +- i18n/zh/_configure/rte/index.md | 4 +- i18n/zh/_configure/runners.md | 4 +- i18n/zh/_configure/secret-stores/index.md | 7 +- i18n/zh/_configure/security/index.md | 4 +- i18n/zh/_configure/seed/example.md | 11 +- i18n/zh/_configure/seed/index.md | 3 +- i18n/zh/_configure/users-and-groups.md | 4 +- i18n/zh/_reference/faq.md | 20 +-- .../_build_forms/expressions/placeholders.md | 4 +- source/_build_forms/formfields/list.md | 3 + source/_build_forms/formfields/yaml.md | 4 +- source/_configure/credentials.md | 6 +- .../_configure/credentials/credential-page.md | 2 +- source/_configure/credentials/types.md | 5 +- source/_configure/customization/index.md | 2 +- source/_configure/databases.md | 149 +++++++++++++++++ source/_configure/databases/database-page.md | 60 +++++++ source/_configure/databases/in-forms.md | 76 +++++++++ source/_configure/databases/list.md | 63 ++++++++ source/_configure/disclaimer.md | 2 +- source/_configure/notification-channels.md | 2 +- source/_configure/production/index.md | 2 +- source/_configure/rte/index.md | 2 +- source/_configure/runners.md | 2 +- source/_configure/secret-stores/index.md | 5 +- source/_configure/security/index.md | 2 +- source/_configure/seed/example.md | 9 ++ source/_configure/seed/index.md | 1 + source/_configure/users-and-groups.md | 2 +- source/_reference/faq.md | 18 +-- 242 files changed, 4515 insertions(+), 510 deletions(-) create mode 100644 i18n/ca/_configure/databases.md create mode 100644 i18n/ca/_configure/databases/database-page.md create mode 100644 i18n/ca/_configure/databases/in-forms.md create mode 100644 i18n/ca/_configure/databases/list.md create mode 100644 i18n/de/_configure/databases.md create mode 100644 i18n/de/_configure/databases/database-page.md create mode 100644 i18n/de/_configure/databases/in-forms.md create mode 100644 i18n/de/_configure/databases/list.md create mode 100644 i18n/es/_configure/databases.md create mode 100644 i18n/es/_configure/databases/database-page.md create mode 100644 i18n/es/_configure/databases/in-forms.md create mode 100644 i18n/es/_configure/databases/list.md create mode 100644 i18n/fr/_configure/databases.md create mode 100644 i18n/fr/_configure/databases/database-page.md create mode 100644 i18n/fr/_configure/databases/in-forms.md create mode 100644 i18n/fr/_configure/databases/list.md create mode 100644 i18n/it/_configure/databases.md create mode 100644 i18n/it/_configure/databases/database-page.md create mode 100644 i18n/it/_configure/databases/in-forms.md create mode 100644 i18n/it/_configure/databases/list.md create mode 100644 i18n/ja/_configure/databases.md create mode 100644 i18n/ja/_configure/databases/database-page.md create mode 100644 i18n/ja/_configure/databases/in-forms.md create mode 100644 i18n/ja/_configure/databases/list.md create mode 100644 i18n/nl/_configure/databases.md create mode 100644 i18n/nl/_configure/databases/database-page.md create mode 100644 i18n/nl/_configure/databases/in-forms.md create mode 100644 i18n/nl/_configure/databases/list.md create mode 100644 i18n/pl/_configure/databases.md create mode 100644 i18n/pl/_configure/databases/database-page.md create mode 100644 i18n/pl/_configure/databases/in-forms.md create mode 100644 i18n/pl/_configure/databases/list.md create mode 100644 i18n/pt/_configure/databases.md create mode 100644 i18n/pt/_configure/databases/database-page.md create mode 100644 i18n/pt/_configure/databases/in-forms.md create mode 100644 i18n/pt/_configure/databases/list.md create mode 100644 i18n/zh/_configure/databases.md create mode 100644 i18n/zh/_configure/databases/database-page.md create mode 100644 i18n/zh/_configure/databases/in-forms.md create mode 100644 i18n/zh/_configure/databases/list.md create mode 100644 source/_configure/databases.md create mode 100644 source/_configure/databases/database-page.md create mode 100644 source/_configure/databases/in-forms.md create mode 100644 source/_configure/databases/list.md diff --git a/i18n/ca/_build_forms/expressions/placeholders.md b/i18n/ca/_build_forms/expressions/placeholders.md index 4505038..6cdcc49 100644 --- a/i18n/ca/_build_forms/expressions/placeholders.md +++ b/i18n/ca/_build_forms/expressions/placeholders.md @@ -3,7 +3,7 @@ layout: default title: Marcadors parent: Expressions nav_order: 0.5 -translated_from: bd63e437a4f77c707a1bf8d8ee99b1516063b62a +translated_from: 7b1ef975e0d5d92c446f050ffda02ee4acfa97aa --- # Marcadors @@ -31,7 +31,7 @@ valor, i es torna a avaluar cada vegada que aquest valor canvia. Així es constr values: [Amsterdam, Brussels] - name: datacenter type: enum - dbConfig: { name: CMDB, type: mysql } + dbConfig: CMDB # a database of Connections > Databases query: select name from cmdb.datacenter where city='$(city)' ``` @@ -73,7 +73,7 @@ Posar `placeholderColumn: "*"` en un enum fa que `$(field)` doni tot el registre ```yaml - name: city type: enum - dbConfig: { name: CMDB, type: mysql } + dbConfig: CMDB query: select id, name from cmdb.city valueColumn: name placeholderColumn: id # $(city) gives the id; $(city.name) still gives the name diff --git a/i18n/ca/_build_forms/formfields/list.md b/i18n/ca/_build_forms/formfields/list.md index 80a1f68..8a58fcd 100644 --- a/i18n/ca/_build_forms/formfields/list.md +++ b/i18n/ca/_build_forms/formfields/list.md @@ -3,7 +3,7 @@ layout: default title: List parent: Camps de formulari nav_order: 13 -translated_from: b6209effaf1cc9783a27c36669004a239751fb3e +translated_from: c454e7962323f4d82488bbdd30f92a7619162c32 --- # Camp List @@ -285,6 +285,9 @@ Files carregades des d'una consulta a base de dades: query: SELECT hostname, role FROM servers WHERE active = 1 ``` +`dbConfig` nomena una [base de dades](../databases.html) de **Connexions > Bases de dades** (des de la 7.5.0), o si no una credencial de tipus base de +dades, com abans (vegeu [Bases de dades als formularis](../databases/in-forms.html)). + #### Des d'una expressió local (`runLocal`) Files calculades al navegador per una expressió local: diff --git a/i18n/ca/_build_forms/formfields/yaml.md b/i18n/ca/_build_forms/formfields/yaml.md index 17ba3c7..591830a 100644 --- a/i18n/ca/_build_forms/formfields/yaml.md +++ b/i18n/ca/_build_forms/formfields/yaml.md @@ -3,7 +3,7 @@ layout: default title: YAML parent: Camps de formulari nav_order: 14 -translated_from: c7439c165a54cf525a91d0458a268a66ee8a136f +translated_from: 8dde3e82c2a53e38adc729f5a8f3764b182718c7 --- # Camp YAML @@ -152,9 +152,7 @@ Fes-hi referència amb la sintaxi d'expressió estàndard `$(...)` a les definic label: VLAN # filter available VLANs based on the parent's selected region query: "select id,name from vlans where region='$(__parent__.region)'" - dbConfig: - name: MYDB - type: mysql + dbConfig: MYDB # a database of Connections > Databases valueColumn: id placeholderColumn: name diff --git a/i18n/ca/_configure/credentials.md b/i18n/ca/_configure/credentials.md index 3d0c6ea..58d351c 100644 --- a/i18n/ca/_configure/credentials.md +++ b/i18n/ca/_configure/credentials.md @@ -5,7 +5,7 @@ nav_order: 6 has_children: true has_toc: false permalink: /credentials.html -translated_from: 08110077a1cf59a4a52e078fc2ebc252f7cae48d +translated_from: 0c8fddace3f97bb7d5a3a2642e3fccc296680454 --- # Credencials @@ -40,6 +40,9 @@ s'hi refereixen pel seu nom, de manera que la contrasenya mai no apareix en un f base de dades d'AnsibleForms, xifrats amb `ENCRYPTION_SECRET`, o bé es llegeixen d'un [magatzem de secrets](secret-stores/) cada vegada que s'utilitza la credencial. +Des de la 7.5.0 els formularis consulten una [base de dades](databases.html) de **Connexions > Bases de dades**, que nomena la credencial de tipus +**Base de dades** amb què es connecta; un formulari que nomena la mateixa credencial al `dbConfig` encara funciona, com abans. + --- ## Qui pot canviar una credencial @@ -69,6 +72,7 @@ mantenen aquests usuaris lluny de secrets que d'una altra manera no podrien lleg ## Credencials en ús -Una credencial que encara nomenen altres registres no es pot suprimir ni reanomenar, perquè quedarien apuntant a res. +Una credencial que encara nomenen altres registres, entre ells una [base de dades](databases.html) des de la 7.5.0, no es pot suprimir ni +reanomenar, perquè quedarien apuntant a res. El rebuig indica quants registres la utilitzen; la pestanya **Usat per** de [la seva pàgina](credentials/credential-page.html) els llista. Apunta'ls primer a una altra credencial, i després suprimeix-la o reanomena-la. diff --git a/i18n/ca/_configure/credentials/credential-page.md b/i18n/ca/_configure/credentials/credential-page.md index 5f4ba79..9996b10 100644 --- a/i18n/ca/_configure/credentials/credential-page.md +++ b/i18n/ca/_configure/credentials/credential-page.md @@ -3,7 +3,7 @@ layout: default title: "La pàgina d'una credencial" parent: Credencials nav_order: 3 -translated_from: 0269b5c0d313622bea6c910b96231f41ffd852d7 +translated_from: 204eca949763c8c23625369f1d8d8d0d06545c87 --- # La pàgina d'una credencial @@ -20,7 +20,7 @@ La pàgina d'una credencial mostra els passos del seu diàleg com a pestanyes, m | Tipus | Per a què serveix la credencial. | | Accés | Tots els camps del seu tipus, com al pas **Accés** del diàleg: l'usuari, la contrasenya i on inicia sessió (host i port, la base de dades, el servidor de correu, els servidors del directori, el tenant o l'emissor, l'adreça del servidor i el seu TLS). L'AppID, el certificat de client i la clau d'una credencial CyberArk. | | Magatzem | Base de dades o Magatzem de secrets, i el magatzem i la referència. No per a CyberArk ni HashiCorp Vault. | -| Usat per | Tot el que nomena aquesta credencial: magatzems de secrets, canals de notificació, repositoris, directoris LDAP, proveïdors SSO, runners, l'assistent de xat, formularis i els workflows del dissenyador. Una fila l'obre. | +| Usat per | Tot el que nomena aquesta credencial: magatzems de secrets, canals de notificació, repositoris, directoris LDAP, proveïdors SSO, runners, [bases de dades](../databases.html) (des de la 7.5.0), l'assistent de xat, formularis i els workflows del dissenyador. Una fila l'obre. | La contrasenya s'escriu a la pestanya **Accés** i no es torna a mostrar mai un cop desada: si es deixa buida, es conserva la desada. En una credencial CyberArk, deixa buida la clau de client per conservar la desada. A dalt a la dreta hi ha **Prova la connexió** (només credencials de base de dades), diff --git a/i18n/ca/_configure/credentials/types.md b/i18n/ca/_configure/credentials/types.md index 1d55ca2..dce30d6 100644 --- a/i18n/ca/_configure/credentials/types.md +++ b/i18n/ca/_configure/credentials/types.md @@ -3,7 +3,7 @@ layout: default title: Tipus de credencial parent: Credencials nav_order: 1 -translated_from: 1f21f8fc1ae73953922d8c9f21de6db05b3b1a87 +translated_from: 2782b0144b1442eceb8684fb1407827cef5fde8f --- # Tipus de credencial @@ -27,7 +27,7 @@ El tipus indica per a què serveix una credencial. Decideix quins camps demana e | SSH | Un usuari i una contrasenya per a SSH a un servidor, amb el seu host i el seu port | Playbooks, mitjançant les `credentials` o `ansibleCredentials` d'un formulari o un camp de credencial, i l'accés d'un node de workflow | | Git | Un usuari i una contrasenya o un token per a repositoris git | [Repositoris](../repositories/authentication.html) | | API | Un usuari i una contrasenya o un token per a una API REST | [Expressions REST](../expressions/credentials.html), el token d'un bot de Telegram, el bearer token d'un webhook, la clau d'API de l'assistent de xat | -| Base de dades | Un accés a base de dades, amb el seu tipus, host, port i nom de base de dades | Consultes de formularis (`dbConfig`) i `fnCredentials`; es pot provar | +| Base de dades | Un accés a base de dades, amb el seu tipus, host, port i nom de base de dades | Una [base de dades](../databases.html) que consulten els formularis (`dbConfig`), des de la 7.5.0, o directament el `dbConfig` d'un formulari; `fnCredentials`; es pot provar | | CyberArk | L'adreça del CyberArk Central Credential Provider (CCP) i el seu TLS, i l'AppID, el certificat de client i la clau amb què accedeix un magatzem CyberArk | Un magatzem de secrets [CyberArk](../secret-stores/cyberark.html) | | SMTP | Un servidor de correu, el seu port i TLS, i el seu accés (cap per a un relay) | Un [canal de notificació](../notification-channels.html) de correu | | LDAP | Els servidors, el port, el TLS i els certificats d'un directori, i el seu DN i contrasenya de bind | Un [directori LDAP](../authentication/ldap.html) | @@ -39,7 +39,8 @@ El tipus indica per a què serveix una credencial. Decideix quins camps demana e | Jenkins | Un usuari, el seu token d'API i l'adreça d'un Jenkins | Un runner Jenkins | | HashiCorp Vault | El token i l'adreça amb què accedeix un magatzem Vault | Un magatzem de secrets [HashiCorp Vault](../secret-stores/hashicorp-vault.html) | -Una credencial de base de dades pot ser de tipus MySQL, MSSQL, PostgreSQL, Oracle o MongoDB. +Una credencial de base de dades pot ser de tipus MySQL, MSSQL, PostgreSQL, Oracle o MongoDB. Des de la 7.5.0 la tria una base de dades de +[Connexions > Bases de dades](../databases.html), i l'actualització a la 7.5.0 en crea una per a cadascuna, amb el mateix nom. A l'API i a la [llavor de configuració](../seed/), els tipus són `userpass`, `ssh`, `git`, `api`, `database`, `cyberark`, `smtp`, `ldap`, `entraid`, `oidc`, `rte`, `awx`, `aap`, `ascender`, `semaphore`, `rundeck`, `jenkins` i `vault`. L'actualització des de la 6 diff --git a/i18n/ca/_configure/customization/index.md b/i18n/ca/_configure/customization/index.md index 14205d5..dc7318f 100644 --- a/i18n/ca/_configure/customization/index.md +++ b/i18n/ca/_configure/customization/index.md @@ -1,11 +1,11 @@ --- layout: default title: Variables d'entorn -nav_order: 8 +nav_order: 9 has_children: true has_toc: false permalink: /customization/ -translated_from: fd6e83f3550f59aa576c8addaf28bfa6115b96a0 +translated_from: e0bc1d7c5bd2df4a3f9036a2d9413a276b228156 --- # Variables d'entorn diff --git a/i18n/ca/_configure/databases.md b/i18n/ca/_configure/databases.md new file mode 100644 index 0000000..ec163ea --- /dev/null +++ b/i18n/ca/_configure/databases.md @@ -0,0 +1,150 @@ +--- +layout: default +title: Bases de dades +nav_order: 7 +has_children: true +has_toc: false +permalink: /databases.html +translated_from: 7c14f8dd95d2314974c54a3f2c5aba279410d822 +--- + +# Bases de dades +{: .no_toc } + +Les bases de dades que consulten els formularis, amb la seva credencial +{: .fs-6 .fw-300 } + +1. TOC +{:toc} + +--- + +Per a administradors: anomena les bases de dades que consulten els formularis, tria la credencial amb què es connecta cadascuna i prova-les. + +--- + +## En aquesta secció + +| Pàgina | Què hi trobaràs | +|---|---| +| [La pàgina de bases de dades](databases/list.html) | La llista de bases de dades, les seves columnes i el diàleg que n'afegeix una | +| [La pàgina d'una base de dades](databases/database-page.html) | Les pestanyes d'una base de dades, els formularis que la consulten, Prova la connexió i Suprimeix | +| [Bases de dades als formularis](databases/in-forms.html) | Com el `dbConfig` d'un camp nomena una base de dades, i els formularis escrits abans de la 7.5.0 | + +--- + +## Com funciona + +Des de la 7.5.0 una **base de dades** és una connexió pròpia, que s'afegeix a **Connexions > Bases de dades**, entre **Magatzems de secrets** i **Runners**. +Té tres coses: + +| Camp | Què és | +|---|---| +| Nom | El nom que dona el `dbConfig` d'un camp per consultar-la, com ara `cmdb` | +| Descripció | Per a què serveix | +| Credencial | La credencial de [Connexions > Credencials](credentials.html), de tipus **Base de dades**, amb què es connecta | + +La credencial conserva tot el que fa referència a la connexió, com abans: el tipus de base de dades (MySQL, MSSQL, PostgreSQL, Oracle o MongoDB), +el host i el port, el nom de la base de dades, el TLS, i l'usuari i la contrasenya, desats xifrats o llegits d'un [magatzem de secrets](secret-stores/). +Una base de dades no té cap adreça ni cap secret propis, així que una base de dades i un runner trien la seva credencial de la mateixa manera. + +Un camp consulta una base de dades nomenant-la al `dbConfig`: + +```yaml +- name: city + type: enum + dbConfig: cmdb # a database of Connections > Databases + query: select name from cmdb.city +``` + +Un nom que no és cap base de dades es busca com una credencial de tipus base de dades, com abans de la 7.5.0, de manera que els formularis més antics +continuen funcionant sense canvis (vegeu [Bases de dades als formularis](databases/in-forms.html)). + +--- + +## Actualitzar a la 7.5.0 + +L'actualització omple **Connexions > Bases de dades** una sola vegada, perquè els formularis que tens continuïn funcionant sense cap canvi. + +Crea una base de dades per a cada credencial de tipus base de dades, amb el nom i la descripció de la credencial, que es connecta amb aquesta +credencial. Un formulari el `dbConfig` del qual nomena la credencial ara troba la base de dades del mateix nom, que es connecta amb la mateixa +credencial: el resultat és el mateix. Les credencials conserven tots els seus camps. + +L'actualització només s'executa una vegada: una base de dades suprimida després no es torna a crear, i una credencial de base de dades afegida més tard +no té cap base de dades fins que n'afegeixes una. + +--- + +## Credencials en ús + +Una credencial amb què es connecta una base de dades està en ús, com la credencial amb què inicia sessió un runner. + +No es pot suprimir ni reanomenar mentre una base de dades la nomena, i la pestanya **Usat per** de la seva pàgina llista les bases de dades (vegeu +[Credencials en ús](credentials.html#credentials-in-use)). Suprimir una base de dades deixa la seva credencial tal com està. + +--- + +## Qui gestiona les bases de dades + +Les bases de dades segueixen les opcions de rol de les credencials que nomenen. + +La llista, la pàgina d'una base de dades i la seva API necessiten l'opció de rol `showSettings` o `showConnectionsSettings`, com les credencials. +Només un admin pot fer que una base de dades es connecti amb una credencial que només un admin pot nomenar, com ara una que llegeix la seva +contrasenya d'un magatzem de secrets (vegeu [Qui pot canviar una credencial](credentials.html#who-may-change-a-credential)): els formularis que la +consulten es connectarien amb aquesta credencial, i **Prova la connexió** enviaria el seu secret al seu servidor. Un altre usuari pot tornar a desar una +base de dades amb la credencial que ja nomena. + +Una base de dades declarada a la [llavor de configuració](seed/) és només de lectura a la seva pàgina: canvia-la al fitxer de la llavor. + +--- + +## La llavor de configuració + +Una llavor declara les seves bases de dades en una secció `databases:`, després de les credencials que nomenen. + +Cada element té un `name`, una `credential` de tipus base de dades i, opcionalment, una `description`. La credencial pot venir de la secció +`credentials` de la mateixa llavor o ser una creada a l'aplicació: + +```yaml +credentials: + items: + - name: cmdb-login + credential_type: database + db_type: mysql + host: cmdb.example.com + port: 3306 + user: svc_forms + password: ${SEED_CMDB_PW} + +databases: + items: + - name: cmdb # the name a field's dbConfig gives + description: The CMDB + credential: cmdb-login # a credential of type database +``` + +Vegeu l'[exemple](seed/example.html) complet i [Objectes gestionats](seed/managed-objects.html) per saber com la llavor es fa seu el que declara. + +--- + +## L'API REST + +Els scripts gestionen les bases de dades a través de l'[API REST](api/), sota `/api/v2/database`, amb les mateixes opcions de rol que la pàgina. + +| Crida | Què fa | +|---|---| +| `GET /api/v2/database` | Llista les bases de dades, cadascuna amb el tipus de base de dades, la base de dades, el host i el port de la seva credencial, i quants formularis la consulten (`used_by_count`) | +| `GET /api/v2/database?name=` | Obté la base de dades d'aquest nom | +| `GET /api/v2/database/` | Obté una base de dades | +| `POST /api/v2/database` | Afegeix una base de dades: el seu `name`, la seva `credential` i, opcionalment, la seva `description` | +| `PUT /api/v2/database/` | Canvia una base de dades | +| `DELETE /api/v2/database/` | Suprimeix una base de dades; la seva credencial es queda | +| `POST /api/v2/database//check` | Prova la seva connexió, amb la seva credencial | + +```bash +curl -X POST https://forms.example.com/api/v2/database \ + -H "Authorization: Bearer " -H "Content-Type: application/json" \ + -d '{ "name": "cmdb", "description": "The CMDB", "credential": "cmdb-login" }' +``` + +Una `credential` que no existeix, o que no és de tipus base de dades, es rebutja amb `400`. Cada canvi s'escriu al registre d'auditoria. diff --git a/i18n/ca/_configure/databases/database-page.md b/i18n/ca/_configure/databases/database-page.md new file mode 100644 index 0000000..c52952c --- /dev/null +++ b/i18n/ca/_configure/databases/database-page.md @@ -0,0 +1,61 @@ +--- +layout: default +title: "La pàgina d'una base de dades" +parent: Bases de dades +nav_order: 2 +translated_from: b027ce5ca33397772148bb221bd9eaab4984f276 +--- + +# La pàgina d'una base de dades +{: .no_toc } + +Les pestanyes, els formularis que la consulten, provar-la i suprimir-la +{: .fs-6 .fw-300 } + +1. TOC +{:toc} + +--- + +## Pestanyes + +La pàgina d'una base de dades mostra els passos del seu diàleg com a pestanyes, més els formularis que la consulten: + +| Pestanya | Què conté | +|---|---| +| Detalls | El **Nom**, el que dona el `dbConfig` d'un camp, i la **Descripció** | +| Credencials | La **Credencial** amb què es connecta, una credencial de Connexions > Credencials de tipus **Base de dades**, que conté el seu tipus de base de dades, host, port, base de dades, TLS i accés | +| Usat per | Els formularis que la consulten, amb el recompte a la pestanya, vegeu [Usat per](#used-by) | + +Cada pestanya té la seva pròpia adreça, com ara `/settings/databases//used-by`, de manera que un enllaç o una adreça d'interès l'obre. La cerca de la +línia del títol filtra totes les pestanyes alhora. + +A la pestanya **Credencials**, **Afegeix una credencial** crea una credencial nova de tipus **Base de dades** i la tria. Una contrasenya no es torna a +mostrar mai un cop desada: canvia-la a la credencial. + +--- + +## Usat per + +La pestanya **Usat per** llista els formularis amb camps que consulten la base de dades, tal com l'aplicació els llegeix dels formularis. + +| Columna | Què mostra | +|---|---| +| Formulari | El formulari; una fila l'obre | +| Descripció | La descripció del formulari | +| Camp | Els camps d'aquest formulari el `dbConfig` dels quals nomena la base de dades | + +Un camp compta quan el seu `dbConfig` nomena la base de dades, o nomena la seva credencial, com fa un formulari escrit abans de la 7.5.0. Tots dos +es connecten amb la mateixa credencial, així que tots dos es llisten. Quan no n'hi ha cap, la pestanya diu **Cap formulari no consulta aquesta base de dades.** + +--- + +## Prova la connexió i Suprimeix + +Els botons de dalt a la dreta actuen sobre la base de dades tal com està desada. + +**Prova la connexió** es connecta amb la seva credencial i executa la consulta mínima del seu tipus de base de dades, i després ho indica en un missatge, +**<name> connection ok**, o per què ha fallat. És la mateixa prova que la **Prova la connexió** de la credencial mateixa. + +**Suprimeix** demana confirmació, després suprimeix la base de dades i torna a la llista. La seva credencial es queda a **Connexions > Credencials**. +Al seu costat, **Desa** desa les pestanyes Detalls i Credencials. diff --git a/i18n/ca/_configure/databases/in-forms.md b/i18n/ca/_configure/databases/in-forms.md new file mode 100644 index 0000000..dd9101d --- /dev/null +++ b/i18n/ca/_configure/databases/in-forms.md @@ -0,0 +1,77 @@ +--- +layout: default +title: Bases de dades als formularis +parent: Bases de dades +nav_order: 3 +translated_from: 44e424afaa9938d1bcdb9277d2b7d8e5fefee64e +--- + +# Bases de dades als formularis +{: .no_toc } + +Com el dbConfig d'un camp nomena una base de dades +{: .fs-6 .fw-300 } + +1. TOC +{:toc} + +--- + +## Nomenar una base de dades + +Un camp amb una `query` l'executa a la base de dades que nomena el seu `dbConfig`. + +```yaml +- name: datacenter + type: enum + dbConfig: cmdb # a database of Connections > Databases + query: select name from cmdb.datacenter +``` + +Des de la 7.5.0 el nom es busca en aquest ordre: + +| Ordre | El nom és | La consulta es connecta amb | +|---|---|---| +| 1 | Una base de dades de **Connexions > Bases de dades** | La credencial que nomena aquesta base de dades | +| 2 | Si no, una credencial de tipus **Base de dades** de **Connexions > Credencials** | Aquesta credencial, com abans de la 7.5.0 | + +El tipus de base de dades (MySQL, MSSQL, PostgreSQL, Oracle o MongoDB) ve de la credencial, així que el formulari no el dona mai. Una credencial +sense tipus es llegeix com a MySQL. + +--- + +## Formularis escrits abans de la 7.5.0 + +Tots els formularis que nomenaven una credencial al `dbConfig` continuen funcionant, sense cap canvi. + +L'[actualització a la 7.5.0](../databases.html#upgrading-to-750) crea una base de dades per a cada credencial de base de dades, amb el mateix nom i +connectada amb aquesta credencial, de manera que el nom que dona un formulari ara troba primer la base de dades, que porta al mateix accés. Una credencial +de tipus base de dades sense cap base de dades amb el seu nom encara es troba al pas 2. + +Una base de dades i una credencial poden compartir un nom, com fa l'actualització. Guanya la base de dades: apunta-la a una altra credencial i tots els +formularis que donen aquest nom la segueixen, que és com un formulari passa a un altre servidor sense editar-lo. + +--- + +## Les formes del dbConfig + +Les tres formes que `dbConfig` sempre ha acceptat continuen funcionant, i cada nom es busca com s'ha descrit més amunt. + +| `dbConfig` | Exemple | Què fa | +|---|---|---| +| Un nom | `dbConfig: cmdb` | Consulta aquesta base de dades | +| Una llista de noms | `dbConfig: [cmdb-eu, cmdb-us]` | Executa la consulta a cadascuna i n'uneix els resultats; els duplicats no s'eliminen | +| Un objecte (antic) | `dbConfig: { name: cmdb, type: mysql }` | Consulta la base de dades o la credencial `name`; obsolet, fes servir només el nom | + +Una referència a un [magatzem de secrets](../secret-stores/#inline-without-a-credential-row), com ara `dbConfig: secret:vault:secret/cmdb/db`, no és +cap nom de base de dades ni de credencial, i encara es llegeix del magatzem com abans. + +--- + +## Quins formularis consulten una base de dades + +L'aplicació llegeix els formularis per saber quins consulten cada base de dades. + +La columna **Usat per** de [la pàgina de bases de dades](list.html) els compta, i la pestanya **Usat per** de +[la pàgina d'una base de dades](database-page.html#used-by) els llista amb els seus camps. Un camp que nomena la credencial de la base de dades +també compta. Reanomena una base de dades només després de canviar els formularis que en donen el nom antic. diff --git a/i18n/ca/_configure/databases/list.md b/i18n/ca/_configure/databases/list.md new file mode 100644 index 0000000..c044cc4 --- /dev/null +++ b/i18n/ca/_configure/databases/list.md @@ -0,0 +1,64 @@ +--- +layout: default +title: La pàgina de bases de dades +parent: Bases de dades +nav_order: 1 +translated_from: 66ffec0a34395642b0208e81078dbc725bdc7123 +--- + +# La pàgina de bases de dades +{: .no_toc } + +La llista de bases de dades, les columnes i el diàleg per afegir-ne +{: .fs-6 .fw-300 } + +1. TOC +{:toc} + +--- + +## La llista + +La pàgina de **Connexions > Bases de dades** llista totes les bases de dades amb aquestes columnes: + +| Columna | Significat | +|---|---| +| Nom | Com la nomenen els formularis, amb `dbConfig: ` | +| Descripció | Per a què serveix | +| Tipus de base de dades | El de la seva credencial: MySQL, MSSQL, PostgreSQL, Oracle o MongoDB | +| Base de dades | La base de dades que obre la seva credencial | + +**Columnes** n'afegeix dues més, desactivades per defecte: **Amfitrió**, on es connecta la seva credencial, amb el port quan en té, i **Usat per**, +quants formularis la consulten, pel seu nom o pel de la seva credencial (vegeu [Usat per](database-page.html#used-by)). + +El tipus de base de dades, la base de dades i l'amfitrió es llegeixen de la credencial: canvia'ls a la credencial, a +**Connexions > Credencials**. Cap columna no mostra un usuari ni una contrasenya. + +--- + +## Afegir una base de dades + +**Afegeix base de dades** obre un diàleg en dos passos, com el d'un runner. + +| Pas | Camps | +|---|---| +| Base de dades | **Nom** i **Descripció**. El nom és obligatori i únic | +| Credencials | **Credencial**, obligatòria: una credencial de tipus **Base de dades**. Només s'ofereixen aquestes | + +Al pas **Credencials**, **Afegeix una credencial** obre el diàleg d'una credencial nova de tipus **Base de dades** (vegeu +[La pàgina de credencials](../credentials/list.html)) i la tria un cop desada, de manera que una base de dades i el seu accés es poden afegir d'una vegada. + +--- + +## El menú de la fila + +Una fila obre la pàgina pròpia de la base de dades, i el seu menú ofereix: + +| Acció | Què fa | +|---|---| +| Edita | Obre la seva pàgina | +| Prova la connexió | Es connecta amb la seva credencial i executa la consulta mínima del seu tipus de base de dades, i diu si ha funcionat | +| Suprimeix | Suprimeix la base de dades, després d'una confirmació. La seva credencial es queda | + +Suprimir una base de dades que els formularis encara nomenen fa fallar les seves consultes, tret que quedi una credencial del mateix nom a la qual +puguin recórrer (vegeu [Bases de dades als formularis](in-forms.html)). Comprova primer la seva pestanya **Usat per**. diff --git a/i18n/ca/_configure/disclaimer.md b/i18n/ca/_configure/disclaimer.md index 77ba0ac..d1efc17 100644 --- a/i18n/ca/_configure/disclaimer.md +++ b/i18n/ca/_configure/disclaimer.md @@ -1,11 +1,11 @@ --- layout: default title: Avís legal -nav_order: 7 +nav_order: 8 has_children: true has_toc: false permalink: /disclaimer.html -translated_from: a22b56db001904583c51e6bd28f1281737f32a32 +translated_from: ad00bcbac9d3c64c103b15d26914eec84174f6b6 --- # Avís legal diff --git a/i18n/ca/_configure/notification-channels.md b/i18n/ca/_configure/notification-channels.md index 798aafd..c672d4c 100644 --- a/i18n/ca/_configure/notification-channels.md +++ b/i18n/ca/_configure/notification-channels.md @@ -1,11 +1,11 @@ --- layout: default title: Canals de notificació -nav_order: 9 +nav_order: 10 has_children: true has_toc: false permalink: /notification-channels.html -translated_from: 1488a67f6f281b0236e4bad3a8b3d0c3bb32326c +translated_from: 1756db6ff7b9197f88b34a0c089953a68493e008 --- # Canals de notificació diff --git a/i18n/ca/_configure/production/index.md b/i18n/ca/_configure/production/index.md index c867188..c2fbbd5 100644 --- a/i18n/ca/_configure/production/index.md +++ b/i18n/ca/_configure/production/index.md @@ -1,11 +1,11 @@ --- layout: default title: En producció -nav_order: 12 +nav_order: 13 has_children: true has_toc: false permalink: /production/ -translated_from: 2d7f4be84a76837fae34c1b414a229448bfae4ea +translated_from: 9f501893a2c4476707ac2f11f25e67998200e9e7 --- # En producció diff --git a/i18n/ca/_configure/rte/index.md b/i18n/ca/_configure/rte/index.md index ae0b2f8..dfa48e9 100644 --- a/i18n/ca/_configure/rte/index.md +++ b/i18n/ca/_configure/rte/index.md @@ -1,11 +1,11 @@ --- layout: default title: RTE -nav_order: 10 +nav_order: 11 has_children: true has_toc: false permalink: /rte/ -translated_from: 2c3f3f81ad8faaf18eac56f18782ef5f78111b04 +translated_from: 75a4facc8ad51d9d74b8fccfd2bbfd7ba48b17f9 --- # Entorns d'execució (RTE) diff --git a/i18n/ca/_configure/runners.md b/i18n/ca/_configure/runners.md index cf0899b..dd15703 100644 --- a/i18n/ca/_configure/runners.md +++ b/i18n/ca/_configure/runners.md @@ -1,11 +1,11 @@ --- layout: default title: Runners -nav_order: 11 +nav_order: 12 has_children: true has_toc: false permalink: /runners.html -translated_from: 339eda183d7748fa923090d9f8e26e2f112b1352 +translated_from: e6663cf2e7dc14a1559383c7f49fd968a4cbf635 --- # Runners diff --git a/i18n/ca/_configure/secret-stores/index.md b/i18n/ca/_configure/secret-stores/index.md index 56dd24c..8b47965 100644 --- a/i18n/ca/_configure/secret-stores/index.md +++ b/i18n/ca/_configure/secret-stores/index.md @@ -1,11 +1,11 @@ --- layout: default title: Magatzems de secrets -nav_order: 13 +nav_order: 14 has_children: true has_toc: false permalink: /secret-stores/ -translated_from: 595f94a84c4e8182b1b79289eb309a814dec1287 +translated_from: c7e5d9fb5e640896bd51e3fa20d76be092857ce2 --- # Magatzems de secrets @@ -95,6 +95,9 @@ fn.fnCredentials('vault:secret/myapp/prod') // the store named `vault` dbConfig: secret:vault:secret/cmdb/db ``` +Des de la 7.5.0 un `dbConfig` nomena primer una [base de dades](../databases.html); una referència com aquesta no és cap base de dades, així que +encara es llegeix del magatzem. Una base de dades també pot llegir el seu accés d'un magatzem, amb una credencial de tipus base de dades que en faci servir un. + Sense fila de credencial, un secret de base de dades necessita com a mínim un `db_type` i un host, per exemple: ```json diff --git a/i18n/ca/_configure/security/index.md b/i18n/ca/_configure/security/index.md index 8f0e667..7b256a5 100644 --- a/i18n/ca/_configure/security/index.md +++ b/i18n/ca/_configure/security/index.md @@ -1,11 +1,11 @@ --- layout: default title: Seguretat -nav_order: 14 +nav_order: 15 has_children: true has_toc: false permalink: /security/ -translated_from: f2b18fd1638cb4ccb2401652eafb82e6ce0e82eb +translated_from: e299ab0a4ffb1c12441a3b3fec6eaaef4a19de79 --- # Seguretat diff --git a/i18n/ca/_configure/seed/example.md b/i18n/ca/_configure/seed/example.md index 67ce6bf..ca5f292 100644 --- a/i18n/ca/_configure/seed/example.md +++ b/i18n/ca/_configure/seed/example.md @@ -3,7 +3,7 @@ layout: default title: Exemple parent: Llavor de configuració nav_order: 1 -translated_from: f085641a12234a5485ea59e73e76c29e7452d5e9 +translated_from: cf1f2b0122ca5cd2dfcc411e4ed20fb683b079bf --- # Exemple @@ -72,6 +72,12 @@ credentials: user: svc_forms # leave user and password out for a relay password: ${SEED_SMTP_PW} +databases: # from 7.5.0 + items: + - name: production-db # the name a field's dbConfig gives + description: The CMDB + credential: production-db # a credential of the credentials section, of type database + repositories: prune: true items: @@ -209,3 +215,6 @@ validació de la llavor. Un RTE en mode base de dades es pot registrar ell mateix abans que s'apliqui la llavor. Un runner RTE de la llavor l'`uri` del qual és l'adreça on s'ha registrat un RTE d'aquests **adopta** aquella fila: en pren el nom i els camps declarats, i el worker ja no l'elimina quan l'RTE deixa de respondre, en lloc de crear un segon runner per al mateix RTE. + +Des de la 7.5.0 la secció `databases` declara les [bases de dades](../databases.html) que consulten els formularis. Un element té un `name`, una +`credential` de tipus base de dades i una `description` opcional; la llavor l'aplica després de les credencials, i rebutja una credencial d'un altre tipus. diff --git a/i18n/ca/_configure/seed/index.md b/i18n/ca/_configure/seed/index.md index 46084e5..4ce8262 100644 --- a/i18n/ca/_configure/seed/index.md +++ b/i18n/ca/_configure/seed/index.md @@ -5,7 +5,7 @@ nav_order: 4 has_children: true has_toc: false permalink: /seed/ -translated_from: 030ff83b1d7c3920600b7e0668b05ab24b949b67 +translated_from: 8f8eb798f4ada177abf5210049a523f7f2f4265b --- # Llavor de configuració @@ -33,6 +33,7 @@ declara objectes que abans només existien a la base de dades: | `runners` | On s'executen les tasques: RTE, AWX / AAP / Ascender, Semaphore, Rundeck, Jenkins | | `secret_stores` | Magatzems de secrets (HashiCorp Vault, ...) | | `credentials` | Credencials | +| `databases` | Les bases de dades que consulten els formularis, cadascuna amb la seva credencial, des de la 7.5.0 | | `oauth2` | Proveïdors SSO: Entra ID i OIDC | | `repositories` | Repositoris git | | `syslog_servers` | Els servidors syslog que reben el registre del servidor i les entrades d'auditoria | diff --git a/i18n/ca/_configure/users-and-groups.md b/i18n/ca/_configure/users-and-groups.md index 15e7021..cd34cbf 100644 --- a/i18n/ca/_configure/users-and-groups.md +++ b/i18n/ca/_configure/users-and-groups.md @@ -1,11 +1,11 @@ --- layout: default title: Usuaris i grups -nav_order: 15 +nav_order: 16 has_children: true has_toc: false permalink: /users-and-groups.html -translated_from: 8ed4dc089c64e091636c29884af1cd1002eb40aa +translated_from: 07178b6b66a60d91e5a8ff3c417da3771730bc5e --- # Usuaris i grups diff --git a/i18n/ca/_reference/faq.md b/i18n/ca/_reference/faq.md index f9b7a26..d55aff2 100644 --- a/i18n/ca/_reference/faq.md +++ b/i18n/ca/_reference/faq.md @@ -2,7 +2,7 @@ layout: default title: PMF nav_order: 2 -translated_from: 6616eaf626411a615cb68d8cc4f2a43401fe21d9 +translated_from: 487a25c7f3b24b3a0c0d4df08c858a52d48f8556 --- # Preguntes més freqüents @@ -171,11 +171,11 @@ L'aplicació web client torna a avaluar els camps cada 100 ms; amb els processad > Una referència a un altre camp enum retorna els valors seleccionats, **no** la llista completa del desplegable. Fes servir la propietat `placeholderColumn` o la notació amb punts com ara `$(city.name)`. > **Novetat a la v4.0.20**: posar placeholderColumn a "*" retorna el registre complet en lloc d'una sola columna. +Els exemples consulten `CONN1`, una [base de dades](databases.html) de Connexions > Bases de dades (des de la 7.5.0) o una credencial de tipus base de dades. + ```yaml - type: enum - dbConfig: - name: CONN1 - type: mysql + dbConfig: CONN1 query: select name from cmdb.city name: city_name label: Select a city @@ -184,9 +184,7 @@ L'aplicació web client torna a avaluar els camps cada 100 ms; amb els processad model: cmdb.city group: CMDB - type: enum - dbConfig: - name: CONN1 - type: mysql + dbConfig: CONN1 query: select datacenter.name from cmdb.datacenter,cmdb.city where datacenter.city_id=city.id and city.name='$(city_name)' name: datacenter_name @@ -201,9 +199,7 @@ L'aplicació web client torna a avaluar els camps cada 100 ms; amb els processad # or use the placeholderColumn property - type: enum - dbConfig: - name: CONN1 - type: mysql + dbConfig: CONN1 query: select id,name,description from cmdb.city name: city label: Select a city @@ -218,9 +214,7 @@ L'aplicació web client torna a avaluar els camps cada 100 ms; amb els processad - name - description - type: enum - dbConfig: - name: CONN1 - type: mysql + dbConfig: CONN1 query: select name, capacity_pct from cmdb.datacenter where datacenter.city_id=$(city) # this cascaded dropdown will react using "id" as placeholder # or "query":"select name from cmdb.datacenter where datacenter.city_id=$(city.id)", diff --git a/i18n/de/_build_forms/expressions/placeholders.md b/i18n/de/_build_forms/expressions/placeholders.md index a81db40..88dfb6d 100644 --- a/i18n/de/_build_forms/expressions/placeholders.md +++ b/i18n/de/_build_forms/expressions/placeholders.md @@ -3,7 +3,7 @@ layout: default title: Platzhalter parent: Ausdrücke nav_order: 0.5 -translated_from: bd63e437a4f77c707a1bf8d8ee99b1516063b62a +translated_from: 7b1ef975e0d5d92c446f050ffda02ee4acfa97aa --- # Platzhalter @@ -31,7 +31,7 @@ Wert hat, und wird jedes Mal neu ausgewertet, wenn sich dieser Wert ändert. So values: [Amsterdam, Brussels] - name: datacenter type: enum - dbConfig: { name: CMDB, type: mysql } + dbConfig: CMDB # a database of Connections > Databases query: select name from cmdb.datacenter where city='$(city)' ``` @@ -73,7 +73,7 @@ Mit `placeholderColumn: "*"` auf einem Enum liefert `$(field)` den ganzen ausgew ```yaml - name: city type: enum - dbConfig: { name: CMDB, type: mysql } + dbConfig: CMDB query: select id, name from cmdb.city valueColumn: name placeholderColumn: id # $(city) gives the id; $(city.name) still gives the name diff --git a/i18n/de/_build_forms/formfields/list.md b/i18n/de/_build_forms/formfields/list.md index 170e70b..29f9460 100644 --- a/i18n/de/_build_forms/formfields/list.md +++ b/i18n/de/_build_forms/formfields/list.md @@ -3,7 +3,7 @@ layout: default title: List parent: Formularfelder nav_order: 13 -translated_from: b6209effaf1cc9783a27c36669004a239751fb3e +translated_from: c454e7962323f4d82488bbdd30f92a7619162c32 --- # List-Feld @@ -285,6 +285,9 @@ Zeilen, die aus einer Datenbankabfrage geladen werden: query: SELECT hostname, role FROM servers WHERE active = 1 ``` +`dbConfig` nennt eine [Datenbank](../databases.html) unter **Verbindungen > Datenbanken** (ab 7.5.0) oder sonst Anmeldedaten vom Typ Datenbank, +wie bisher (siehe [Datenbanken in Formularen](../databases/in-forms.html)). + #### Aus einem lokalen Ausdruck (`runLocal`) Zeilen, die ein lokaler Ausdruck im Browser berechnet: diff --git a/i18n/de/_build_forms/formfields/yaml.md b/i18n/de/_build_forms/formfields/yaml.md index fe995ac..60493f9 100644 --- a/i18n/de/_build_forms/formfields/yaml.md +++ b/i18n/de/_build_forms/formfields/yaml.md @@ -3,7 +3,7 @@ layout: default title: YAML parent: Formularfelder nav_order: 14 -translated_from: c7439c165a54cf525a91d0458a268a66ee8a136f +translated_from: 8dde3e82c2a53e38adc729f5a8f3764b182718c7 --- # YAML-Feld @@ -152,9 +152,7 @@ Verweisen Sie darauf mit der üblichen Ausdruckssyntax `$(...)` in den Felddefin label: VLAN # filter available VLANs based on the parent's selected region query: "select id,name from vlans where region='$(__parent__.region)'" - dbConfig: - name: MYDB - type: mysql + dbConfig: MYDB # a database of Connections > Databases valueColumn: id placeholderColumn: name diff --git a/i18n/de/_configure/credentials.md b/i18n/de/_configure/credentials.md index 833cfc6..3e7d52c 100644 --- a/i18n/de/_configure/credentials.md +++ b/i18n/de/_configure/credentials.md @@ -5,7 +5,7 @@ nav_order: 6 has_children: true has_toc: false permalink: /credentials.html -translated_from: 08110077a1cf59a4a52e078fc2ebc252f7cae48d +translated_from: 0c8fddace3f97bb7d5a3a2642e3fccc296680454 --- # Anmeldedaten @@ -40,6 +40,9 @@ Ein **Anmeldedaten-Eintrag** ist eine benannte Anmeldung, angelegt unter **Verbi AnsibleForms-Datenbank gespeichert, verschlüsselt mit `ENCRYPTION_SECRET`, oder bei jeder Verwendung der Anmeldedaten aus einem [Secret Store](secret-stores/) gelesen. +Ab 7.5.0 fragen Formulare eine [Datenbank](databases.html) unter **Verbindungen > Datenbanken** ab, die die Anmeldedaten vom Typ **Datenbank** nennt, +mit denen sie sich verbindet; ein Formular, das die Anmeldedaten selbst in `dbConfig` nennt, funktioniert weiterhin wie bisher. + --- ## Wer Anmeldedaten ändern darf @@ -69,6 +72,7 @@ halten diese Benutzer von Geheimnissen fern, die sie sonst nicht lesen könnten: ## Verwendete Anmeldedaten -Anmeldedaten, die noch von Datensätzen genannt werden, können weder gelöscht noch umbenannt werden, da diese sonst ins Leere zeigen würden. +Anmeldedaten, die noch von Datensätzen genannt werden, ab 7.5.0 auch von einer [Datenbank](databases.html), können weder gelöscht noch +umbenannt werden, da diese sonst ins Leere zeigen würden. Die Ablehnung nennt, wie viele Datensätze sie verwenden; der Tab **Verwendet von** [ihrer Seite](credentials/credential-page.html) listet sie auf. Richten Sie diese zuerst auf andere Anmeldedaten und löschen oder benennen Sie sie dann um. diff --git a/i18n/de/_configure/credentials/credential-page.md b/i18n/de/_configure/credentials/credential-page.md index 610a946..d6d651f 100644 --- a/i18n/de/_configure/credentials/credential-page.md +++ b/i18n/de/_configure/credentials/credential-page.md @@ -3,7 +3,7 @@ layout: default title: "Die Seite eines Anmeldedaten-Eintrags" parent: Anmeldedaten nav_order: 3 -translated_from: 0269b5c0d313622bea6c910b96231f41ffd852d7 +translated_from: 204eca949763c8c23625369f1d8d8d0d06545c87 --- # Die Seite eines Anmeldedaten-Eintrags @@ -20,7 +20,7 @@ Die Seite eines Anmeldedaten-Eintrags zeigt die Schritte seines Dialogs als Tabs | Typ | Wofür die Anmeldedaten sind. | | Anmeldung | Jedes Feld seines Typs, wie im Schritt **Anmeldung** des Dialogs: der Benutzer, das Passwort und wo er sich anmeldet (Host und Port, die Datenbank, der Mail-Server, die Server des Verzeichnisses, der Tenant oder Issuer, die Adresse des Servers und sein TLS). Bei CyberArk-Anmeldedaten AppID, Client-Zertifikat und Schlüssel. | | Speicher | Datenbank oder Secret Store sowie der Store und die Referenz. Nicht für CyberArk und HashiCorp Vault. | -| Verwendet von | Alles, was diese Anmeldedaten nennt: Secret Stores, Benachrichtigungskanäle, Repositories, LDAP-Verzeichnisse, SSO-Anbieter, Runner, der Chat-Assistent, Formulare und die Workflows des Designers. Eine Zeile öffnet das Element. | +| Verwendet von | Alles, was diese Anmeldedaten nennt: Secret Stores, Benachrichtigungskanäle, Repositories, LDAP-Verzeichnisse, SSO-Anbieter, Runner, [Datenbanken](../databases.html) (ab 7.5.0), der Chat-Assistent, Formulare und die Workflows des Designers. Eine Zeile öffnet das Element. | Das Passwort wird im Tab **Anmeldung** eingegeben und nach dem Speichern nie wieder angezeigt: Leer gelassen bleibt das gespeicherte erhalten. Bei CyberArk-Anmeldedaten lassen Sie den Client-Schlüssel leer, um den gespeicherten zu behalten. Oben rechts befinden sich **Verbindung testen** (nur bei Datenbank-Anmeldedaten), diff --git a/i18n/de/_configure/credentials/types.md b/i18n/de/_configure/credentials/types.md index 409f20f..4d88372 100644 --- a/i18n/de/_configure/credentials/types.md +++ b/i18n/de/_configure/credentials/types.md @@ -3,7 +3,7 @@ layout: default title: Typen von Anmeldedaten parent: Anmeldedaten nav_order: 1 -translated_from: 1f21f8fc1ae73953922d8c9f21de6db05b3b1a87 +translated_from: 2782b0144b1442eceb8684fb1407827cef5fde8f --- # Typen von Anmeldedaten @@ -27,7 +27,7 @@ Der Typ sagt, wofür Anmeldedaten sind. Er bestimmt, welche Felder der Dialog ab | SSH | Benutzer und Passwort für SSH zu einem Server, mit seinem Host und Port | Playbooks, über die `credentials` oder `ansibleCredentials` eines Formulars oder ein Anmeldedaten-Feld, und die Anmeldung eines Workflow-Knotens | | Git | Benutzer und Passwort oder Token für Git-Repositories | [Repositories](../repositories/authentication.html) | | API | Benutzer und Passwort oder Token für eine REST-API | [REST-Ausdrücke](../expressions/credentials.html), ein Telegram-Bot-Token, das Bearer-Token eines Webhooks, der API-Schlüssel des Chat-Assistenten | -| Datenbank | Eine Datenbankanmeldung, mit Typ, Host, Port und Datenbankname | Formularabfragen (`dbConfig`) und `fnCredentials`; lässt sich testen | +| Datenbank | Eine Datenbankanmeldung, mit Typ, Host, Port und Datenbankname | Eine [Datenbank](../databases.html), die Formulare abfragen (`dbConfig`), ab 7.5.0, oder direkt die `dbConfig` eines Formulars; `fnCredentials`; lässt sich testen | | CyberArk | Die Adresse des CyberArk Central Credential Provider (CCP) und sein TLS sowie AppID, Client-Zertifikat und Schlüssel, mit denen sich ein CyberArk-Store anmeldet | Ein [CyberArk](../secret-stores/cyberark.html)-Secret-Store | | SMTP | Ein Mailserver, sein Port und TLS und seine Anmeldung (keine für ein Relay) | Ein Mail-[Benachrichtigungskanal](../notification-channels.html) | | LDAP | Server, Port, TLS und Zertifikate eines Verzeichnisses sowie sein Bind-DN und Passwort | Ein [LDAP-Verzeichnis](../authentication/ldap.html) | @@ -39,7 +39,8 @@ Der Typ sagt, wofür Anmeldedaten sind. Er bestimmt, welche Felder der Dialog ab | Jenkins | Ein Benutzer, sein API-Token und die Adresse eines Jenkins | Ein Jenkins-Runner | | HashiCorp Vault | Das Token und die Adresse, mit denen sich ein Vault-Store anmeldet | Ein [HashiCorp Vault](../secret-stores/hashicorp-vault.html)-Secret-Store | -Datenbank-Anmeldedaten können vom Typ MySQL, MSSQL, PostgreSQL, Oracle oder MongoDB sein. +Datenbank-Anmeldedaten können vom Typ MySQL, MSSQL, PostgreSQL, Oracle oder MongoDB sein. Ab 7.5.0 wählt sie eine Datenbank unter +[Verbindungen > Datenbanken](../databases.html), und das Upgrade auf 7.5.0 legt für jeden Eintrag eine Datenbank mit demselben Namen an. In der API und im [Config-Seed](../seed/) heißen die Typen `userpass`, `ssh`, `git`, `api`, `database`, `cyberark`, `smtp`, `ldap`, `entraid`, `oidc`, `rte`, `awx`, `aap`, `ascender`, `semaphore`, `rundeck`, `jenkins` und `vault`. Das Upgrade von 6 diff --git a/i18n/de/_configure/customization/index.md b/i18n/de/_configure/customization/index.md index 6d19b4a..69cf4bb 100644 --- a/i18n/de/_configure/customization/index.md +++ b/i18n/de/_configure/customization/index.md @@ -1,11 +1,11 @@ --- layout: default title: Umgebungsvariablen -nav_order: 8 +nav_order: 9 has_children: true has_toc: false permalink: /customization/ -translated_from: fd6e83f3550f59aa576c8addaf28bfa6115b96a0 +translated_from: e0bc1d7c5bd2df4a3f9036a2d9413a276b228156 --- # Umgebungsvariablen diff --git a/i18n/de/_configure/databases.md b/i18n/de/_configure/databases.md new file mode 100644 index 0000000..fc9c93e --- /dev/null +++ b/i18n/de/_configure/databases.md @@ -0,0 +1,150 @@ +--- +layout: default +title: Datenbanken +nav_order: 7 +has_children: true +has_toc: false +permalink: /databases.html +translated_from: 7c14f8dd95d2314974c54a3f2c5aba279410d822 +--- + +# Datenbanken +{: .no_toc } + +Die Datenbanken, die Formulare abfragen, jede mit Datenbank-Anmeldedaten +{: .fs-6 .fw-300 } + +1. TOC +{:toc} + +--- + +Für Administratoren: Benennen Sie die Datenbanken, die Ihre Formulare abfragen, wählen Sie die Anmeldedaten jeder Datenbank und testen Sie sie. + +--- + +## In diesem Abschnitt + +| Seite | Inhalt | +|---|---| +| [Die Seite Datenbanken](databases/list.html) | Die Liste der Datenbanken, ihre Spalten und der Dialog, der eine hinzufügt | +| [Die Seite einer Datenbank](databases/database-page.html) | Die Tabs einer Datenbank, die Formulare, die sie abfragen, Verbindung testen und Löschen | +| [Datenbanken in Formularen](databases/in-forms.html) | Wie die `dbConfig` eines Feldes eine Datenbank nennt, und die Formulare von vor 7.5.0 | + +--- + +## Funktionsweise + +Ab 7.5.0 ist eine **Datenbank** eine eigene Verbindung, angelegt unter **Verbindungen > Datenbanken**, zwischen **Secret Stores** und **Runner**. +Sie hat drei Dinge: + +| Feld | Was es ist | +|---|---| +| Name | Der Name, den die `dbConfig` eines Feldes angibt, um sie abzufragen, etwa `cmdb` | +| Beschreibung | Wofür sie ist | +| Anmeldedaten | Die Anmeldedaten aus [Verbindungen > Anmeldedaten](credentials.html) vom Typ **Datenbank**, mit denen sie sich verbindet | + +Die Anmeldedaten behalten wie bisher alles zur Verbindung: den Datenbanktyp (MySQL, MSSQL, PostgreSQL, Oracle oder MongoDB), Host und Port, +den Datenbanknamen, TLS sowie Benutzer und Passwort, verschlüsselt gespeichert oder aus einem [Secret Store](secret-stores/) gelesen. +Eine Datenbank hat weder eine eigene Adresse noch ein eigenes Geheimnis, daher wählen eine Datenbank und ein Runner ihre Anmeldedaten auf dieselbe Weise. + +Ein Feld fragt eine Datenbank ab, indem es sie in `dbConfig` nennt: + +```yaml +- name: city + type: enum + dbConfig: cmdb # a database of Connections > Databases + query: select name from cmdb.city +``` + +Ein Name, der keine Datenbank ist, wird wie vor 7.5.0 als Anmeldedaten vom Typ Datenbank gesucht, sodass ältere Formulare unverändert +weiter funktionieren (siehe [Datenbanken in Formularen](databases/in-forms.html)). + +--- + +## Upgrade auf 7.5.0 + +Das Upgrade füllt **Verbindungen > Datenbanken** einmalig, damit Ihre vorhandenen Formulare ohne Änderung weiter funktionieren. + +Es legt für alle Anmeldedaten vom Typ Datenbank je eine Datenbank an, mit dem Namen und der Beschreibung der Anmeldedaten, die sich mit diesen +Anmeldedaten verbindet. Ein Formular, dessen `dbConfig` die Anmeldedaten nennt, findet jetzt die Datenbank mit demselben Namen, die sich mit denselben +Anmeldedaten verbindet: Das Ergebnis ist dasselbe. Die Anmeldedaten behalten alle ihre Felder. + +Das Upgrade läuft nur einmal: Eine danach gelöschte Datenbank wird nicht erneut angelegt, und später hinzugefügte Datenbank-Anmeldedaten erhalten keine +Datenbank, bis Sie eine hinzufügen. + +--- + +## Verwendete Anmeldedaten + +Anmeldedaten, mit denen sich eine Datenbank verbindet, sind in Verwendung, wie die, mit denen sich ein Runner anmeldet. + +Sie können nicht gelöscht oder umbenannt werden, solange eine Datenbank sie nennt, und der Tab **Verwendet von** ihrer Seite listet die Datenbanken auf (siehe +[Verwendete Anmeldedaten](credentials.html#credentials-in-use)). Das Löschen einer Datenbank lässt ihre Anmeldedaten unverändert. + +--- + +## Wer Datenbanken verwaltet + +Die Datenbanken folgen den Rollenoptionen der Anmeldedaten, die sie nennen. + +Die Liste, die Seite einer Datenbank und ihre API brauchen die Rollenoption `showSettings` oder `showConnectionsSettings`, wie die Anmeldedaten. +Nur ein Admin kann eine Datenbank mit Anmeldedaten verbinden, die nur ein Admin nennen darf, etwa solche, die ihr Passwort aus einem Secret Store +lesen (siehe [Wer Anmeldedaten ändern darf](credentials.html#who-may-change-a-credential)): Die Formulare, die sie abfragen, würden sich mit diesen +Anmeldedaten verbinden, und **Verbindung testen** würde ihr Geheimnis an ihren Server senden. Ein anderer Benutzer darf eine Datenbank mit den Anmeldedaten, +die sie bereits nennt, erneut speichern. + +Eine im [Config-Seed](seed/) deklarierte Datenbank ist auf ihrer Seite schreibgeschützt: Ändern Sie sie stattdessen in der Seed-Datei. + +--- + +## Der Config-Seed + +Ein Seed deklariert seine Datenbanken in einem Abschnitt `databases:`, nach den Anmeldedaten, die sie nennen. + +Jeder Eintrag hat einen `name`, eine `credential` vom Typ Datenbank und optional eine `description`. Die Anmeldedaten können aus dem Abschnitt +`credentials` desselben Seeds stammen oder in der App angelegt sein: + +```yaml +credentials: + items: + - name: cmdb-login + credential_type: database + db_type: mysql + host: cmdb.example.com + port: 3306 + user: svc_forms + password: ${SEED_CMDB_PW} + +databases: + items: + - name: cmdb # the name a field's dbConfig gives + description: The CMDB + credential: cmdb-login # a credential of type database +``` + +Siehe das vollständige [Beispiel](seed/example.html) und [Verwaltete Objekte](seed/managed-objects.html) dazu, wie der Seed übernimmt, was er deklariert. + +--- + +## Die REST-API + +Skripte verwalten die Datenbanken über die [REST-API](api/), unter `/api/v2/database`, mit denselben Rollenoptionen wie die Seite. + +| Aufruf | Was er tut | +|---|---| +| `GET /api/v2/database` | Listet die Datenbanken auf, jede mit Datenbanktyp, Datenbank, Host und Port ihrer Anmeldedaten und der Anzahl der Formulare, die sie abfragen (`used_by_count`) | +| `GET /api/v2/database?name=` | Liefert die Datenbank dieses Namens | +| `GET /api/v2/database/` | Liefert eine Datenbank | +| `POST /api/v2/database` | Fügt eine Datenbank hinzu: ihren `name`, ihre `credential` und optional ihre `description` | +| `PUT /api/v2/database/` | Ändert eine Datenbank | +| `DELETE /api/v2/database/` | Löscht eine Datenbank; ihre Anmeldedaten bleiben | +| `POST /api/v2/database//check` | Testet ihre Verbindung, mit ihren Anmeldedaten | + +```bash +curl -X POST https://forms.example.com/api/v2/database \ + -H "Authorization: Bearer " -H "Content-Type: application/json" \ + -d '{ "name": "cmdb", "description": "The CMDB", "credential": "cmdb-login" }' +``` + +Eine `credential`, die nicht existiert oder nicht vom Typ Datenbank ist, wird mit `400` abgewiesen. Jede Änderung wird im Audit-Protokoll festgehalten. diff --git a/i18n/de/_configure/databases/database-page.md b/i18n/de/_configure/databases/database-page.md new file mode 100644 index 0000000..2f358b2 --- /dev/null +++ b/i18n/de/_configure/databases/database-page.md @@ -0,0 +1,61 @@ +--- +layout: default +title: Die Seite einer Datenbank +parent: Datenbanken +nav_order: 2 +translated_from: b027ce5ca33397772148bb221bd9eaab4984f276 +--- + +# Die Seite einer Datenbank +{: .no_toc } + +Die Tabs, die Formulare, die sie abfragen, Verbindung testen und Löschen +{: .fs-6 .fw-300 } + +1. TOC +{:toc} + +--- + +## Tabs + +Die Seite einer Datenbank zeigt die Schritte ihres Dialogs als Tabs, dazu die Formulare, die sie abfragen: + +| Tab | Was er enthält | +|---|---| +| Details | Den **Namen**, den die `dbConfig` eines Feldes angibt, und die **Beschreibung** | +| Anmeldedaten | Die **Anmeldedaten**, mit denen sie sich verbindet, Anmeldedaten aus Verbindungen > Anmeldedaten vom Typ **Datenbank**, die ihren Datenbanktyp, Host, Port, Datenbank, TLS und Anmeldung enthalten | +| Verwendet von | Die Formulare, die sie abfragen, mit der Anzahl auf dem Tab, siehe [Verwendet von](#used-by) | + +Jeder Tab hat eine eigene Adresse, etwa `/settings/databases//used-by`, sodass ein Link oder ein Lesezeichen ihn öffnet. Die Suche in der +Titelzeile filtert alle Tabs gleichzeitig. + +Im Tab **Anmeldedaten** legt **Anmeldedaten hinzufügen** neue Anmeldedaten vom Typ **Datenbank** an und wählt sie aus. Ein Passwort wird nach dem +Speichern nie wieder angezeigt: Ändern Sie es in den Anmeldedaten. + +--- + +## Verwendet von + +Der Tab **Verwendet von** listet die Formulare auf, deren Felder die Datenbank abfragen, wie die App sie aus den Formularen liest. + +| Spalte | Was sie zeigt | +|---|---| +| Formular | Das Formular; eine Zeile öffnet es | +| Beschreibung | Die Beschreibung des Formulars | +| Feld | Die Felder dieses Formulars, deren `dbConfig` die Datenbank nennt | + +Ein Feld zählt, wenn seine `dbConfig` die Datenbank nennt oder ihre Anmeldedaten, wie es ein Formular von vor 7.5.0 tut. Beide verbinden sich +mit denselben Anmeldedaten, daher werden beide aufgelistet. Gibt es keines, zeigt der Tab **Kein Formular fragt diese Datenbank ab.** + +--- + +## Verbindung testen und Löschen + +Die Schaltflächen oben rechts wirken auf die Datenbank, wie sie gespeichert ist. + +**Verbindung testen** verbindet sich mit ihren Anmeldedaten, führt die kleinste Abfrage ihres Datenbanktyps aus und sagt das dann in einer Meldung, +**<name> connection ok**, oder warum es fehlschlug. Es ist derselbe Test wie **Verbindung testen** der Anmeldedaten selbst. + +**Löschen** fragt zuerst nach, löscht dann die Datenbank und kehrt zur Liste zurück. Ihre Anmeldedaten bleiben unter **Verbindungen > Anmeldedaten**. +Daneben speichert **Speichern** die Tabs Details und Anmeldedaten. diff --git a/i18n/de/_configure/databases/in-forms.md b/i18n/de/_configure/databases/in-forms.md new file mode 100644 index 0000000..7aeb72b --- /dev/null +++ b/i18n/de/_configure/databases/in-forms.md @@ -0,0 +1,77 @@ +--- +layout: default +title: Datenbanken in Formularen +parent: Datenbanken +nav_order: 3 +translated_from: 44e424afaa9938d1bcdb9277d2b7d8e5fefee64e +--- + +# Datenbanken in Formularen +{: .no_toc } + +Wie dbConfig eine Datenbank nennt, und ältere Formulare +{: .fs-6 .fw-300 } + +1. TOC +{:toc} + +--- + +## Eine Datenbank nennen + +Ein Feld mit einer `query` führt sie auf der Datenbank aus, die seine `dbConfig` nennt. + +```yaml +- name: datacenter + type: enum + dbConfig: cmdb # a database of Connections > Databases + query: select name from cmdb.datacenter +``` + +Ab 7.5.0 wird der Name in dieser Reihenfolge gesucht: + +| Reihenfolge | Der Name ist | Die Abfrage verbindet sich mit | +|---|---|---| +| 1 | Eine Datenbank unter **Verbindungen > Datenbanken** | Den Anmeldedaten, die diese Datenbank nennt | +| 2 | Sonst Anmeldedaten vom Typ **Datenbank** unter **Verbindungen > Anmeldedaten** | Diesen Anmeldedaten, wie vor 7.5.0 | + +Der Datenbanktyp (MySQL, MSSQL, PostgreSQL, Oracle oder MongoDB) kommt aus den Anmeldedaten, daher gibt das Formular ihn nie an. Anmeldedaten +ohne Typ werden als MySQL gelesen. + +--- + +## Formulare von vor 7.5.0 + +Jedes Formular, das Anmeldedaten in `dbConfig` nannte, funktioniert ohne Änderung weiter. + +Das [Upgrade auf 7.5.0](../databases.html#upgrading-to-750) legt für alle Datenbank-Anmeldedaten je eine Datenbank mit demselben Namen an, die sich +mit diesen Anmeldedaten verbindet, sodass der Name, den ein Formular angibt, jetzt zuerst die Datenbank findet, die zur selben Anmeldung führt. +Anmeldedaten vom Typ Datenbank ohne Datenbank ihres Namens werden weiterhin in Schritt 2 gefunden. + +Eine Datenbank und Anmeldedaten können sich einen Namen teilen, wie es das Upgrade macht. Die Datenbank gewinnt: Richten Sie sie auf andere Anmeldedaten, +und jedes Formular, das diesen Namen angibt, folgt, so zieht ein Formular auf einen anderen Server um, ohne bearbeitet zu werden. + +--- + +## Die Formen von dbConfig + +Die drei Formen, die `dbConfig` schon immer angenommen hat, funktionieren weiterhin, jeder Name wie oben gesucht. + +| `dbConfig` | Beispiel | Was es tut | +|---|---|---| +| Ein Name | `dbConfig: cmdb` | Fragt diese Datenbank ab | +| Eine Liste von Namen | `dbConfig: [cmdb-eu, cmdb-us]` | Führt die Abfrage auf jeder aus und fügt die Ergebnisse zusammen; Doppelte werden nicht entfernt | +| Ein Objekt (veraltet) | `dbConfig: { name: cmdb, type: mysql }` | Fragt die Datenbank oder die Anmeldedaten `name` ab; veraltet, verwenden Sie nur den Namen | + +Ein Verweis auf einen [Secret Store](../secret-stores/#inline-without-a-credential-row), etwa `dbConfig: secret:vault:secret/cmdb/db`, ist weder der +Name einer Datenbank noch von Anmeldedaten und wird wie bisher aus dem Store gelesen. + +--- + +## Welche Formulare eine Datenbank abfragen + +Die App liest die Formulare, um festzustellen, welche davon jede Datenbank abfragen. + +Die Spalte **Verwendet von** der [Seite Datenbanken](list.html) zählt sie, und der Tab **Verwendet von** der +[Seite einer Datenbank](database-page.html#used-by) listet sie mit ihren Feldern auf. Ein Feld, das stattdessen die Anmeldedaten der Datenbank nennt, +zählt ebenfalls. Benennen Sie eine Datenbank erst um, nachdem Sie die Formulare geändert haben, die ihren alten Namen angeben. diff --git a/i18n/de/_configure/databases/list.md b/i18n/de/_configure/databases/list.md new file mode 100644 index 0000000..f71123b --- /dev/null +++ b/i18n/de/_configure/databases/list.md @@ -0,0 +1,64 @@ +--- +layout: default +title: Die Seite Datenbanken +parent: Datenbanken +nav_order: 1 +translated_from: 66ffec0a34395642b0208e81078dbc725bdc7123 +--- + +# Die Seite Datenbanken +{: .no_toc } + +Die Liste der Datenbanken, ihre Spalten und der Dialog, der eine hinzufügt +{: .fs-6 .fw-300 } + +1. TOC +{:toc} + +--- + +## Die Liste + +Die Seite unter **Verbindungen > Datenbanken** listet jede Datenbank mit diesen Spalten auf: + +| Spalte | Bedeutung | +|---|---| +| Name | Wie Formulare auf sie verweisen, mit `dbConfig: ` | +| Beschreibung | Wofür sie ist | +| Datenbanktyp | Der ihrer Anmeldedaten: MySQL, MSSQL, PostgreSQL, Oracle oder MongoDB | +| Datenbank | Die Datenbank, die ihre Anmeldedaten öffnen | + +**Spalten** fügt zwei weitere hinzu, standardmäßig aus: **Host**, wohin sich ihre Anmeldedaten verbinden, mit dem Port, wenn es einen gibt, und **Verwendet von**, +wie viele Formulare sie abfragen, über ihren Namen oder den ihrer Anmeldedaten (siehe [Verwendet von](database-page.html#used-by)). + +Datenbanktyp, Datenbank und Host werden aus den Anmeldedaten gelesen: Ändern Sie sie in den Anmeldedaten, unter +**Verbindungen > Anmeldedaten**. Keine Spalte zeigt einen Benutzer oder ein Passwort. + +--- + +## Eine Datenbank hinzufügen + +**Datenbank hinzufügen** öffnet einen Dialog in zwei Schritten, wie der eines Runners. + +| Schritt | Felder | +|---|---| +| Datenbank | **Name** und **Beschreibung**. Der Name ist erforderlich und eindeutig | +| Anmeldedaten | **Anmeldedaten**, erforderlich: Anmeldedaten vom Typ **Datenbank**. Nur diese werden angeboten | + +Im Schritt **Anmeldedaten** öffnet **Anmeldedaten hinzufügen** den Dialog für neue Anmeldedaten vom Typ **Datenbank** (siehe +[Die Seite Anmeldedaten](../credentials/list.html)) und wählt sie nach dem Speichern aus, sodass eine Datenbank und ihre Anmeldung in einem Zug angelegt werden. + +--- + +## Das Zeilenmenü + +Eine Zeile öffnet die eigene Seite der Datenbank, und ihr Menü bietet: + +| Aktion | Was sie tut | +|---|---| +| Bearbeiten | Öffnet ihre Seite | +| Verbindung testen | Verbindet sich mit ihren Anmeldedaten, führt die kleinste Abfrage ihres Datenbanktyps aus und meldet, ob es funktioniert hat | +| Löschen | Löscht die Datenbank nach einer Bestätigung. Ihre Anmeldedaten bleiben | + +Das Löschen einer Datenbank, die Formulare noch nennen, lässt deren Abfragen fehlschlagen, es sei denn, es bleiben Anmeldedaten mit demselben Namen, +auf die sie zurückgreifen können (siehe [Datenbanken in Formularen](in-forms.html)). Prüfen Sie zuerst ihren Tab **Verwendet von**. diff --git a/i18n/de/_configure/disclaimer.md b/i18n/de/_configure/disclaimer.md index 9c312f8..1414d77 100644 --- a/i18n/de/_configure/disclaimer.md +++ b/i18n/de/_configure/disclaimer.md @@ -1,11 +1,11 @@ --- layout: default title: Haftungsausschluss -nav_order: 7 +nav_order: 8 has_children: true has_toc: false permalink: /disclaimer.html -translated_from: a22b56db001904583c51e6bd28f1281737f32a32 +translated_from: ad00bcbac9d3c64c103b15d26914eec84174f6b6 --- # Haftungsausschluss diff --git a/i18n/de/_configure/notification-channels.md b/i18n/de/_configure/notification-channels.md index c54f8eb..6ea89f0 100644 --- a/i18n/de/_configure/notification-channels.md +++ b/i18n/de/_configure/notification-channels.md @@ -1,11 +1,11 @@ --- layout: default title: Benachrichtigungskanäle -nav_order: 9 +nav_order: 10 has_children: true has_toc: false permalink: /notification-channels.html -translated_from: 1488a67f6f281b0236e4bad3a8b3d0c3bb32326c +translated_from: 1756db6ff7b9197f88b34a0c089953a68493e008 --- # Benachrichtigungskanäle diff --git a/i18n/de/_configure/production/index.md b/i18n/de/_configure/production/index.md index 216501e..c6a8138 100644 --- a/i18n/de/_configure/production/index.md +++ b/i18n/de/_configure/production/index.md @@ -1,11 +1,11 @@ --- layout: default title: Betrieb in Produktion -nav_order: 12 +nav_order: 13 has_children: true has_toc: false permalink: /production/ -translated_from: 2d7f4be84a76837fae34c1b414a229448bfae4ea +translated_from: 9f501893a2c4476707ac2f11f25e67998200e9e7 --- # Betrieb in Produktion diff --git a/i18n/de/_configure/rte/index.md b/i18n/de/_configure/rte/index.md index 1c8ff73..10c78dc 100644 --- a/i18n/de/_configure/rte/index.md +++ b/i18n/de/_configure/rte/index.md @@ -1,11 +1,11 @@ --- layout: default title: RTE -nav_order: 10 +nav_order: 11 has_children: true has_toc: false permalink: /rte/ -translated_from: 2c3f3f81ad8faaf18eac56f18782ef5f78111b04 +translated_from: 75a4facc8ad51d9d74b8fccfd2bbfd7ba48b17f9 --- # Laufzeitumgebungen (RTE) diff --git a/i18n/de/_configure/runners.md b/i18n/de/_configure/runners.md index 7391871..6a64948 100644 --- a/i18n/de/_configure/runners.md +++ b/i18n/de/_configure/runners.md @@ -1,11 +1,11 @@ --- layout: default title: Runner -nav_order: 11 +nav_order: 12 has_children: true has_toc: false permalink: /runners.html -translated_from: 339eda183d7748fa923090d9f8e26e2f112b1352 +translated_from: e6663cf2e7dc14a1559383c7f49fd968a4cbf635 --- # Runner diff --git a/i18n/de/_configure/secret-stores/index.md b/i18n/de/_configure/secret-stores/index.md index a7bb4c7..b540d2d 100644 --- a/i18n/de/_configure/secret-stores/index.md +++ b/i18n/de/_configure/secret-stores/index.md @@ -1,11 +1,11 @@ --- layout: default title: Secret Stores -nav_order: 13 +nav_order: 14 has_children: true has_toc: false permalink: /secret-stores/ -translated_from: 595f94a84c4e8182b1b79289eb309a814dec1287 +translated_from: c7e5d9fb5e640896bd51e3fa20d76be092857ce2 --- # Secret Stores @@ -95,6 +95,9 @@ fn.fnCredentials('vault:secret/myapp/prod') // the store named `vault` dbConfig: secret:vault:secret/cmdb/db ``` +Ab 7.5.0 nennt eine `dbConfig` zuerst eine [Datenbank](../databases.html); ein Verweis wie dieser ist keine Datenbank und wird daher weiterhin +aus dem Store gelesen. Auch eine Datenbank kann ihre Anmeldung aus einem Store lesen, über Anmeldedaten vom Typ Datenbank, die einen verwenden. + Ohne Anmeldedaten-Zeile braucht ein Datenbank-Secret mindestens einen `db_type` und einen Host, zum Beispiel: ```json diff --git a/i18n/de/_configure/security/index.md b/i18n/de/_configure/security/index.md index 6efadaa..5dce582 100644 --- a/i18n/de/_configure/security/index.md +++ b/i18n/de/_configure/security/index.md @@ -1,11 +1,11 @@ --- layout: default title: Sicherheit -nav_order: 14 +nav_order: 15 has_children: true has_toc: false permalink: /security/ -translated_from: f2b18fd1638cb4ccb2401652eafb82e6ce0e82eb +translated_from: e299ab0a4ffb1c12441a3b3fec6eaaef4a19de79 --- # Sicherheit diff --git a/i18n/de/_configure/seed/example.md b/i18n/de/_configure/seed/example.md index 184c852..921d0c0 100644 --- a/i18n/de/_configure/seed/example.md +++ b/i18n/de/_configure/seed/example.md @@ -3,7 +3,7 @@ layout: default title: Beispiel parent: Config-Seed nav_order: 1 -translated_from: f085641a12234a5485ea59e73e76c29e7452d5e9 +translated_from: cf1f2b0122ca5cd2dfcc411e4ed20fb683b079bf --- # Beispiel @@ -72,6 +72,12 @@ credentials: user: svc_forms # leave user and password out for a relay password: ${SEED_SMTP_PW} +databases: # from 7.5.0 + items: + - name: production-db # the name a field's dbConfig gives + description: The CMDB + credential: production-db # a credential of the credentials section, of type database + repositories: prune: true items: @@ -209,3 +215,6 @@ Validierung des Seeds fehlschlagen. Eine RTE im Datenbankmodus kann sich selbst registrieren, bevor der Seed angewendet wird. Ein RTE-Runner aus dem Seed, dessen `uri` die Adresse ist, unter der eine solche RTE sich registriert hat, **übernimmt** diese Zeile: Sie erhält den deklarierten Namen und die Felder, und der Worker entfernt sie nicht mehr, wenn die RTE nicht mehr antwortet, statt eines zweiten Runners für dieselbe RTE. + +Ab 7.5.0 deklariert der Abschnitt `databases` die [Datenbanken](../databases.html), die Formulare abfragen. Ein Eintrag hat einen `name`, eine +`credential` vom Typ Datenbank und eine optionale `description`; der Seed wendet ihn nach den Anmeldedaten an und weist Anmeldedaten eines anderen Typs ab. diff --git a/i18n/de/_configure/seed/index.md b/i18n/de/_configure/seed/index.md index d181ff9..3e2a9d7 100644 --- a/i18n/de/_configure/seed/index.md +++ b/i18n/de/_configure/seed/index.md @@ -5,7 +5,7 @@ nav_order: 4 has_children: true has_toc: false permalink: /seed/ -translated_from: 030ff83b1d7c3920600b7e0668b05ab24b949b67 +translated_from: 8f8eb798f4ada177abf5210049a523f7f2f4265b --- # Config-Seed @@ -33,6 +33,7 @@ deklariert Objekte, die früher nur in der Datenbank existierten: | `runners` | Wo Jobs laufen: RTEs, AWX / AAP / Ascender, Semaphore, Rundeck, Jenkins | | `secret_stores` | Secret Stores (HashiCorp Vault, ...) | | `credentials` | Anmeldedaten | +| `databases` | Die Datenbanken, die Formulare abfragen, jede mit ihren Anmeldedaten, ab 7.5.0 | | `oauth2` | SSO-Anbieter: Entra ID und OIDC | | `repositories` | Git-Repositories | | `syslog_servers` | Die Syslog-Server, die das Serverprotokoll und die Audit-Einträge erhalten | diff --git a/i18n/de/_configure/users-and-groups.md b/i18n/de/_configure/users-and-groups.md index 9bea9f9..8d069d5 100644 --- a/i18n/de/_configure/users-and-groups.md +++ b/i18n/de/_configure/users-and-groups.md @@ -1,11 +1,11 @@ --- layout: default title: Benutzer und Gruppen -nav_order: 15 +nav_order: 16 has_children: true has_toc: false permalink: /users-and-groups.html -translated_from: 8ed4dc089c64e091636c29884af1cd1002eb40aa +translated_from: 07178b6b66a60d91e5a8ff3c417da3771730bc5e --- # Benutzer und Gruppen diff --git a/i18n/de/_reference/faq.md b/i18n/de/_reference/faq.md index 36045f2..d3d739f 100644 --- a/i18n/de/_reference/faq.md +++ b/i18n/de/_reference/faq.md @@ -2,7 +2,7 @@ layout: default title: FAQ nav_order: 2 -translated_from: 6616eaf626411a615cb68d8cc4f2a43401fe21d9 +translated_from: 487a25c7f3b24b3a0c0d4df08c858a52d48f8556 --- # Häufig gestellte Fragen @@ -171,11 +171,11 @@ Die Client-Webanwendung wertet Felder alle 100 ms neu aus; mit aktuellen Prozess > Eine Referenz auf ein anderes Enum-Feld gibt die ausgewählten Werte zurück, **nicht** die ganze Auswahlliste. Verwenden Sie die Eigenschaft `placeholderColumn` oder die Punktnotation wie `$(city.name)`. > **Neu in v4.0.20**: wird placeholderColumn auf "*" gesetzt, wird der ganze Datensatz statt einer einzelnen Spalte ausgegeben. +Die Beispiele fragen `CONN1` ab, eine [Datenbank](databases.html) unter Verbindungen > Datenbanken (ab 7.5.0) oder Anmeldedaten vom Typ Datenbank. + ```yaml - type: enum - dbConfig: - name: CONN1 - type: mysql + dbConfig: CONN1 query: select name from cmdb.city name: city_name label: Select a city @@ -184,9 +184,7 @@ Die Client-Webanwendung wertet Felder alle 100 ms neu aus; mit aktuellen Prozess model: cmdb.city group: CMDB - type: enum - dbConfig: - name: CONN1 - type: mysql + dbConfig: CONN1 query: select datacenter.name from cmdb.datacenter,cmdb.city where datacenter.city_id=city.id and city.name='$(city_name)' name: datacenter_name @@ -201,9 +199,7 @@ Die Client-Webanwendung wertet Felder alle 100 ms neu aus; mit aktuellen Prozess # or use the placeholderColumn property - type: enum - dbConfig: - name: CONN1 - type: mysql + dbConfig: CONN1 query: select id,name,description from cmdb.city name: city label: Select a city @@ -218,9 +214,7 @@ Die Client-Webanwendung wertet Felder alle 100 ms neu aus; mit aktuellen Prozess - name - description - type: enum - dbConfig: - name: CONN1 - type: mysql + dbConfig: CONN1 query: select name, capacity_pct from cmdb.datacenter where datacenter.city_id=$(city) # this cascaded dropdown will react using "id" as placeholder # or "query":"select name from cmdb.datacenter where datacenter.city_id=$(city.id)", diff --git a/i18n/es/_build_forms/expressions/placeholders.md b/i18n/es/_build_forms/expressions/placeholders.md index 9eee869..237fd27 100644 --- a/i18n/es/_build_forms/expressions/placeholders.md +++ b/i18n/es/_build_forms/expressions/placeholders.md @@ -3,7 +3,7 @@ layout: default title: Marcadores parent: Expresiones nav_order: 0.5 -translated_from: bd63e437a4f77c707a1bf8d8ee99b1516063b62a +translated_from: 7b1ef975e0d5d92c446f050ffda02ee4acfa97aa --- # Marcadores @@ -31,7 +31,7 @@ valor, y se vuelve a evaluar cada vez que ese valor cambia. Así se construyen l values: [Amsterdam, Brussels] - name: datacenter type: enum - dbConfig: { name: CMDB, type: mysql } + dbConfig: CMDB # a database of Connections > Databases query: select name from cmdb.datacenter where city='$(city)' ``` @@ -73,7 +73,7 @@ Si pones `placeholderColumn: "*"` en un enum, `$(field)` devuelve el registro se ```yaml - name: city type: enum - dbConfig: { name: CMDB, type: mysql } + dbConfig: CMDB query: select id, name from cmdb.city valueColumn: name placeholderColumn: id # $(city) gives the id; $(city.name) still gives the name diff --git a/i18n/es/_build_forms/formfields/list.md b/i18n/es/_build_forms/formfields/list.md index db8fadc..fe20c1a 100644 --- a/i18n/es/_build_forms/formfields/list.md +++ b/i18n/es/_build_forms/formfields/list.md @@ -3,7 +3,7 @@ layout: default title: List parent: Campos de formulario nav_order: 13 -translated_from: b6209effaf1cc9783a27c36669004a239751fb3e +translated_from: c454e7962323f4d82488bbdd30f92a7619162c32 --- # Campo List @@ -285,6 +285,9 @@ Filas cargadas desde una consulta a base de datos: query: SELECT hostname, role FROM servers WHERE active = 1 ``` +`dbConfig` nombra una [base de datos](../databases.html) de **Conexiones > Bases de datos** (desde la 7.5.0), o si no una credencial de tipo base de datos, +como antes (consulta [Bases de datos en los formularios](../databases/in-forms.html)). + #### Desde una expresión local (`runLocal`) Filas calculadas en el navegador mediante una expresión local: diff --git a/i18n/es/_build_forms/formfields/yaml.md b/i18n/es/_build_forms/formfields/yaml.md index e95d880..89a0973 100644 --- a/i18n/es/_build_forms/formfields/yaml.md +++ b/i18n/es/_build_forms/formfields/yaml.md @@ -3,7 +3,7 @@ layout: default title: YAML parent: Campos de formulario nav_order: 14 -translated_from: c7439c165a54cf525a91d0458a268a66ee8a136f +translated_from: 8dde3e82c2a53e38adc729f5a8f3764b182718c7 --- # Campo YAML @@ -152,9 +152,7 @@ Haz referencia a ella con la sintaxis de expresión estándar `$(...)` en las de label: VLAN # filter available VLANs based on the parent's selected region query: "select id,name from vlans where region='$(__parent__.region)'" - dbConfig: - name: MYDB - type: mysql + dbConfig: MYDB # a database of Connections > Databases valueColumn: id placeholderColumn: name diff --git a/i18n/es/_configure/credentials.md b/i18n/es/_configure/credentials.md index 83c8e51..b442118 100644 --- a/i18n/es/_configure/credentials.md +++ b/i18n/es/_configure/credentials.md @@ -5,7 +5,7 @@ nav_order: 6 has_children: true has_toc: false permalink: /credentials.html -translated_from: 08110077a1cf59a4a52e078fc2ebc252f7cae48d +translated_from: 0c8fddace3f97bb7d5a3a2642e3fccc296680454 --- # Credenciales @@ -40,6 +40,9 @@ se refieren a ella por su nombre, así que la contraseña nunca aparece en un fo base de datos de AnsibleForms, cifrados con `ENCRYPTION_SECRET`, o se leen de un [almacén de secretos](secret-stores/) cada vez que se usa la credencial. +Desde la 7.5.0 los formularios consultan una [base de datos](databases.html) de **Conexiones > Bases de datos**, que nombra la credencial de tipo +**Base de datos** con la que se conecta; un formulario que nombra la propia credencial en `dbConfig` sigue funcionando, como antes. + --- ## Quién puede cambiar una credencial @@ -69,6 +72,7 @@ mantienen a esos usuarios lejos de secretos que de otro modo no podrían leer: ## Credenciales en uso -Una credencial que todavía nombran otros registros no se puede eliminar ni renombrar, ya que quedarían apuntando a nada. +Una credencial que todavía nombran otros registros, entre ellos una [base de datos](databases.html) desde la 7.5.0, no se puede eliminar ni +renombrar, ya que quedarían apuntando a nada. El rechazo indica cuántos registros la usan; la pestaña **Usado por** de [su página](credentials/credential-page.html) los lista. Apúntalos antes a otra credencial y después elimínala o renómbrala. diff --git a/i18n/es/_configure/credentials/credential-page.md b/i18n/es/_configure/credentials/credential-page.md index bef5532..bb26d42 100644 --- a/i18n/es/_configure/credentials/credential-page.md +++ b/i18n/es/_configure/credentials/credential-page.md @@ -3,7 +3,7 @@ layout: default title: "La página de una credencial" parent: Credenciales nav_order: 3 -translated_from: 0269b5c0d313622bea6c910b96231f41ffd852d7 +translated_from: 204eca949763c8c23625369f1d8d8d0d06545c87 --- # La página de una credencial @@ -20,7 +20,7 @@ La página de una credencial muestra los pasos de su diálogo como pestañas, m | Tipo | Para qué sirve la credencial. | | Acceso | Todos los campos de su tipo, como en el paso **Acceso** del diálogo: el usuario, la contraseña y dónde inicia sesión (host y puerto, la base de datos, el servidor de correo, los servidores del directorio, el inquilino o el emisor, la dirección del servidor y su TLS). El AppID, el certificado de cliente y la clave de una credencial CyberArk. | | Almacén | Base de datos o Almacén de secretos, y el almacén y la referencia. No para CyberArk ni HashiCorp Vault. | -| Usado por | Todo lo que nombra esta credencial: almacenes de secretos, canales de notificación, repositorios, directorios LDAP, proveedores SSO, runners, el asistente de chat, formularios y los workflows del diseñador. Una fila lo abre. | +| Usado por | Todo lo que nombra esta credencial: almacenes de secretos, canales de notificación, repositorios, directorios LDAP, proveedores SSO, runners, [bases de datos](../databases.html) (desde la 7.5.0), el asistente de chat, formularios y los workflows del diseñador. Una fila lo abre. | La contraseña se escribe en la pestaña **Acceso** y nunca se vuelve a mostrar una vez guardada: si se deja vacía, se mantiene la guardada. En una credencial CyberArk, deja vacía la clave de cliente para mantener la guardada. Arriba a la derecha están **Probar conexión** (solo credenciales de base de datos), diff --git a/i18n/es/_configure/credentials/types.md b/i18n/es/_configure/credentials/types.md index 269b1d2..c7cec5d 100644 --- a/i18n/es/_configure/credentials/types.md +++ b/i18n/es/_configure/credentials/types.md @@ -3,7 +3,7 @@ layout: default title: Tipos de credencial parent: Credenciales nav_order: 1 -translated_from: 1f21f8fc1ae73953922d8c9f21de6db05b3b1a87 +translated_from: 2782b0144b1442eceb8684fb1407827cef5fde8f --- # Tipos de credencial @@ -27,7 +27,7 @@ El tipo indica para qué sirve una credencial. Decide qué campos pide el diálo | SSH | Un usuario y una contraseña para SSH a un servidor, con su host y su puerto | Playbooks, mediante las `credentials` o `ansibleCredentials` de un formulario o un campo de credencial, y el acceso de un nodo de workflow | | Git | Un usuario y una contraseña o un token para repositorios git | [Repositorios](../repositories/authentication.html) | | API | Un usuario y una contraseña o un token para una API REST | [Expresiones REST](../expressions/credentials.html), el token de un bot de Telegram, el bearer token de un webhook, la clave de API del asistente de chat | -| Base de datos | Un acceso a base de datos, con su tipo, host, puerto y nombre de base de datos | Consultas de formularios (`dbConfig`) y `fnCredentials`; se puede probar | +| Base de datos | Un acceso a base de datos, con su tipo, host, puerto y nombre de base de datos | Una [base de datos](../databases.html) que consultan los formularios (`dbConfig`), desde la 7.5.0, o el `dbConfig` de un formulario directamente; `fnCredentials`; se puede probar | | CyberArk | La dirección del CyberArk Central Credential Provider (CCP) y su TLS, y el AppID, el certificado de cliente y la clave con los que accede un almacén CyberArk | Un almacén de secretos [CyberArk](../secret-stores/cyberark.html) | | SMTP | Un servidor de correo, su puerto y TLS, y su acceso (ninguno para un relay) | Un [canal de notificación](../notification-channels.html) de correo | | LDAP | Los servidores, el puerto, el TLS y los certificados de un directorio, y su DN y contraseña de vinculación | Un [directorio LDAP](../authentication/ldap.html) | @@ -39,7 +39,8 @@ El tipo indica para qué sirve una credencial. Decide qué campos pide el diálo | Jenkins | Un usuario, su token de API y la dirección de un Jenkins | Un runner Jenkins | | HashiCorp Vault | El token y la dirección con los que accede un almacén Vault | Un almacén de secretos [HashiCorp Vault](../secret-stores/hashicorp-vault.html) | -Una credencial de base de datos puede ser de tipo MySQL, MSSQL, PostgreSQL, Oracle o MongoDB. +Una credencial de base de datos puede ser de tipo MySQL, MSSQL, PostgreSQL, Oracle o MongoDB. Desde la 7.5.0 la elige una base de datos de +[Conexiones > Bases de datos](../databases.html), y la actualización a la 7.5.0 crea una base de datos para cada una, con el mismo nombre. En la API y en la [semilla de configuración](../seed/), los tipos son `userpass`, `ssh`, `git`, `api`, `database`, `cyberark`, `smtp`, `ldap`, `entraid`, `oidc`, `rte`, `awx`, `aap`, `ascender`, `semaphore`, `rundeck`, `jenkins` y `vault`. La actualización desde la 6 diff --git a/i18n/es/_configure/customization/index.md b/i18n/es/_configure/customization/index.md index 8d90e7c..74acaf7 100644 --- a/i18n/es/_configure/customization/index.md +++ b/i18n/es/_configure/customization/index.md @@ -1,11 +1,11 @@ --- layout: default title: Variables de entorno -nav_order: 8 +nav_order: 9 has_children: true has_toc: false permalink: /customization/ -translated_from: fd6e83f3550f59aa576c8addaf28bfa6115b96a0 +translated_from: e0bc1d7c5bd2df4a3f9036a2d9413a276b228156 --- # Variables de entorno diff --git a/i18n/es/_configure/databases.md b/i18n/es/_configure/databases.md new file mode 100644 index 0000000..75f9cd8 --- /dev/null +++ b/i18n/es/_configure/databases.md @@ -0,0 +1,150 @@ +--- +layout: default +title: Bases de datos +nav_order: 7 +has_children: true +has_toc: false +permalink: /databases.html +translated_from: 7c14f8dd95d2314974c54a3f2c5aba279410d822 +--- + +# Bases de datos +{: .no_toc } + +Las bases de datos que consultan los formularios, con su credencial +{: .fs-6 .fw-300 } + +1. TOC +{:toc} + +--- + +Para administradores: nombra las bases de datos que consultan tus formularios, elige la credencial con la que se conecta cada una, y pruébalas. + +--- + +## En esta sección + +| Página | Qué trata | +|---|---| +| [La página de bases de datos](databases/list.html) | La lista de bases de datos, sus columnas y el diálogo que añade una | +| [La página de una base de datos](databases/database-page.html) | Las pestañas de una base de datos, los formularios que la consultan, Probar conexión y Eliminar | +| [Bases de datos en los formularios](databases/in-forms.html) | Cómo el `dbConfig` de un campo nombra una base de datos, y los formularios escritos antes de la 7.5.0 | + +--- + +## Cómo funciona + +Desde la 7.5.0 una **base de datos** es una conexión propia, que se añade en **Conexiones > Bases de datos**, entre **Almacenes de secretos** y **Runners**. +Tiene tres cosas: + +| Campo | Qué es | +|---|---| +| Nombre | El nombre que da el `dbConfig` de un campo para consultarla, como `cmdb` | +| Descripción | Para qué sirve | +| Credencial | La credencial de [Conexiones > Credenciales](credentials.html), de tipo **Base de datos**, con la que se conecta | + +La credencial guarda todo lo relativo a la conexión, como antes: el tipo de base de datos (MySQL, MSSQL, PostgreSQL, Oracle o MongoDB), +el host y el puerto, el nombre de la base de datos, TLS, y el usuario y la contraseña, guardados cifrados o leídos de un [almacén de secretos](secret-stores/). +Una base de datos no tiene dirección ni secreto propios, así que una base de datos y un runner eligen su credencial de la misma manera. + +Un campo consulta una base de datos nombrándola en `dbConfig`: + +```yaml +- name: city + type: enum + dbConfig: cmdb # a database of Connections > Databases + query: select name from cmdb.city +``` + +Un nombre que no es una base de datos se busca como una credencial de tipo base de datos, como antes de la 7.5.0, así que los formularios +antiguos siguen funcionando sin cambios (consulta [Bases de datos en los formularios](databases/in-forms.html)). + +--- + +## Actualizar a la 7.5.0 + +La actualización rellena **Conexiones > Bases de datos** una sola vez, así que tus formularios siguen funcionando sin ningún cambio. + +Crea una base de datos para cada credencial de tipo base de datos, con el nombre y la descripción de la credencial, que se conecta con esa +credencial. Un formulario cuyo `dbConfig` nombra la credencial encuentra ahora la base de datos del mismo nombre, que se conecta con la misma +credencial: el resultado es el mismo. Las credenciales conservan todos sus campos. + +La actualización se ejecuta una sola vez: una base de datos eliminada después no se vuelve a crear, y una credencial de base de datos añadida +más tarde no recibe ninguna base de datos hasta que añadas una. + +--- + +## Credenciales en uso + +Una credencial con la que se conecta una base de datos está en uso, como una con la que inicia sesión un runner. + +No se puede eliminar ni renombrar mientras una base de datos la nombre, y la pestaña **Usado por** de su página lista las bases de datos (consulta +[Credenciales en uso](credentials.html#credentials-in-use)). Eliminar una base de datos deja su credencial tal como está. + +--- + +## Quién gestiona las bases de datos + +Las bases de datos siguen las opciones de rol de las credenciales que nombran. + +La lista, la página de una base de datos y su API necesitan la opción de rol `showSettings` o `showConnectionsSettings`, como las credenciales. +Solo un admin puede hacer que una base de datos se conecte con una credencial que solo un admin puede nombrar, como una que lee su contraseña +de un almacén de secretos (consulta [Quién puede cambiar una credencial](credentials.html#who-may-change-a-credential)): los formularios que la +consultan se conectarían con esa credencial, y **Probar conexión** enviaría su secreto a su servidor. Otro usuario puede guardar de nuevo una +base de datos con la credencial que ya nombra. + +Una base de datos declarada en la [semilla de configuración](seed/) es de solo lectura en su página: cámbiala en el archivo de la semilla. + +--- + +## La semilla de configuración + +Una semilla declara sus bases de datos en una sección `databases:`, después de las credenciales que nombran. + +Cada entrada tiene un `name`, una `credential` de tipo base de datos y, opcionalmente, una `description`. La credencial puede venir de la +sección `credentials` de la misma semilla o ser una creada en la aplicación: + +```yaml +credentials: + items: + - name: cmdb-login + credential_type: database + db_type: mysql + host: cmdb.example.com + port: 3306 + user: svc_forms + password: ${SEED_CMDB_PW} + +databases: + items: + - name: cmdb # the name a field's dbConfig gives + description: The CMDB + credential: cmdb-login # a credential of type database +``` + +Consulta el [ejemplo](seed/example.html) completo y [Objetos gestionados](seed/managed-objects.html) para ver cómo la semilla se adueña de lo que declara. + +--- + +## La API REST + +Los scripts gestionan las bases de datos mediante la [API REST](api/), en `/api/v2/database`, con las mismas opciones de rol que la página. + +| Llamada | Qué hace | +|---|---| +| `GET /api/v2/database` | Lista las bases de datos, cada una con el tipo de base de datos, la base de datos, el host y el puerto de su credencial, y cuántos formularios la consultan (`used_by_count`) | +| `GET /api/v2/database?name=` | Obtiene la base de datos con ese nombre | +| `GET /api/v2/database/` | Obtiene una base de datos | +| `POST /api/v2/database` | Añade una base de datos: su `name`, su `credential` y, opcionalmente, su `description` | +| `PUT /api/v2/database/` | Cambia una base de datos | +| `DELETE /api/v2/database/` | Elimina una base de datos; su credencial se queda | +| `POST /api/v2/database//check` | Prueba su conexión, con su credencial | + +```bash +curl -X POST https://forms.example.com/api/v2/database \ + -H "Authorization: Bearer " -H "Content-Type: application/json" \ + -d '{ "name": "cmdb", "description": "The CMDB", "credential": "cmdb-login" }' +``` + +Una `credential` que no existe, o que no es de tipo base de datos, se rechaza con `400`. Cada cambio se escribe en el log de auditoría. diff --git a/i18n/es/_configure/databases/database-page.md b/i18n/es/_configure/databases/database-page.md new file mode 100644 index 0000000..daf5400 --- /dev/null +++ b/i18n/es/_configure/databases/database-page.md @@ -0,0 +1,61 @@ +--- +layout: default +title: "La página de una base de datos" +parent: Bases de datos +nav_order: 2 +translated_from: b027ce5ca33397772148bb221bd9eaab4984f276 +--- + +# La página de una base de datos +{: .no_toc } + +Sus pestañas, los formularios que la consultan, probarla y eliminarla +{: .fs-6 .fw-300 } + +1. TOC +{:toc} + +--- + +## Pestañas + +La página de una base de datos muestra los pasos de su diálogo como pestañas, más los formularios que la consultan: + +| Pestaña | Qué contiene | +|---|---| +| Detalles | El **Nombre**, el que da el `dbConfig` de un campo, y la **Descripción** | +| Credenciales | La **Credencial** con la que se conecta, una credencial de Conexiones > Credenciales de tipo **Base de datos**, que contiene su tipo de base de datos, host, puerto, base de datos, TLS y acceso | +| Usado por | Los formularios que la consultan, con el recuento en la pestaña, consulta [Usado por](#used-by) | + +Cada pestaña tiene su propia dirección, como `/settings/databases//used-by`, así que un enlace o un marcador la abre. La búsqueda de +la línea del título filtra todas las pestañas a la vez. + +En la pestaña **Credenciales**, **Añadir credencial** crea una credencial nueva de tipo **Base de datos** y la elige. Una contraseña no se vuelve +a mostrar una vez guardada: cámbiala en la credencial. + +--- + +## Usado por + +La pestaña **Usado por** lista los formularios cuyos campos consultan la base de datos, tal como la aplicación los lee de los formularios. + +| Columna | Qué muestra | +|---|---| +| Formulario | El formulario; una fila lo abre | +| Descripción | La descripción del formulario | +| Campo | Los campos de ese formulario cuyo `dbConfig` nombra la base de datos | + +Un campo cuenta cuando su `dbConfig` nombra la base de datos, o nombra su credencial, como hace un formulario escrito antes de la 7.5.0. +Ambos se conectan con la misma credencial, así que ambos se listan. Cuando no hay ninguno, la pestaña dice **Ningún formulario consulta esta base de datos.** + +--- + +## Probar conexión y Eliminar + +Los botones de arriba a la derecha actúan sobre la base de datos tal como está guardada. + +**Probar conexión** se conecta con su credencial y ejecuta la consulta mínima de su tipo de base de datos, y lo dice en un mensaje, +**Conexión <name> correcta**, o por qué ha fallado. Es la misma prueba que el **Probar conexión** de la propia credencial. + +**Eliminar** pregunta primero, y después elimina la base de datos y vuelve a la lista. Su credencial se queda en **Conexiones > Credenciales**. +Junto a ellos, **Guardar** guarda las pestañas Detalles y Credenciales. diff --git a/i18n/es/_configure/databases/in-forms.md b/i18n/es/_configure/databases/in-forms.md new file mode 100644 index 0000000..156cc34 --- /dev/null +++ b/i18n/es/_configure/databases/in-forms.md @@ -0,0 +1,77 @@ +--- +layout: default +title: Bases de datos en los formularios +parent: Bases de datos +nav_order: 3 +translated_from: 44e424afaa9938d1bcdb9277d2b7d8e5fefee64e +--- + +# Bases de datos en los formularios +{: .no_toc } + +Cómo el dbConfig de un campo nombra una base de datos +{: .fs-6 .fw-300 } + +1. TOC +{:toc} + +--- + +## Nombrar una base de datos + +Un campo con una `query` la ejecuta en la base de datos que nombra su `dbConfig`. + +```yaml +- name: datacenter + type: enum + dbConfig: cmdb # a database of Connections > Databases + query: select name from cmdb.datacenter +``` + +Desde la 7.5.0 el nombre se busca en este orden: + +| Orden | El nombre es | La consulta se conecta con | +|---|---|---| +| 1 | Una base de datos de **Conexiones > Bases de datos** | La credencial que nombra esa base de datos | +| 2 | Si no, una credencial de tipo **Base de datos** de **Conexiones > Credenciales** | Esa credencial, como antes de la 7.5.0 | + +El tipo de base de datos (MySQL, MSSQL, PostgreSQL, Oracle o MongoDB) viene de la credencial, así que el formulario nunca lo indica. Una +credencial sin tipo se lee como MySQL. + +--- + +## Formularios escritos antes de la 7.5.0 + +Todo formulario que nombraba una credencial en `dbConfig` sigue funcionando, sin ningún cambio. + +La [actualización a la 7.5.0](../databases.html#upgrading-to-750) crea una base de datos para cada credencial de base de datos, con el mismo nombre +y que se conecta con esa credencial, así que el nombre que da un formulario encuentra ahora primero la base de datos, que lleva al mismo acceso. +Una credencial de tipo base de datos sin una base de datos con su nombre se sigue encontrando en el paso 2. + +Una base de datos y una credencial pueden compartir nombre, como hace la actualización. Gana la base de datos: apúntala a otra credencial y +todos los formularios que dan ese nombre la siguen, que es como un formulario pasa a otro servidor sin editarlo. + +--- + +## Las formas de dbConfig + +Las tres formas que `dbConfig` ha aceptado siempre siguen funcionando, y cada nombre se busca como arriba. + +| `dbConfig` | Ejemplo | Qué hace | +|---|---|---| +| Un nombre | `dbConfig: cmdb` | Consulta esa base de datos | +| Una lista de nombres | `dbConfig: [cmdb-eu, cmdb-us]` | Ejecuta la consulta en cada una y une los resultados; los duplicados no se eliminan | +| Un objeto (heredado) | `dbConfig: { name: cmdb, type: mysql }` | Consulta la base de datos o la credencial `name`; obsoleto, usa solo el nombre | + +Una referencia a un [almacén de secretos](../secret-stores/#inline-without-a-credential-row), como `dbConfig: secret:vault:secret/cmdb/db`, no es +el nombre de una base de datos ni de una credencial, y se sigue leyendo del almacén como antes. + +--- + +## Qué formularios consultan una base de datos + +La aplicación lee los formularios para saber cuáles consultan cada base de datos. + +La columna **Usado por** de [la página de bases de datos](list.html) los cuenta, y la pestaña **Usado por** de +[la página de una base de datos](database-page.html#used-by) los lista con sus campos. Un campo que nombra en su lugar la credencial de la base de datos +también cuenta. Renombra una base de datos solo después de cambiar los formularios que dan su nombre antiguo. diff --git a/i18n/es/_configure/databases/list.md b/i18n/es/_configure/databases/list.md new file mode 100644 index 0000000..12cbcc8 --- /dev/null +++ b/i18n/es/_configure/databases/list.md @@ -0,0 +1,64 @@ +--- +layout: default +title: La página de bases de datos +parent: Bases de datos +nav_order: 1 +translated_from: 66ffec0a34395642b0208e81078dbc725bdc7123 +--- + +# La página de bases de datos +{: .no_toc } + +La lista de bases de datos, sus columnas y el diálogo que añade una +{: .fs-6 .fw-300 } + +1. TOC +{:toc} + +--- + +## La lista + +La página de **Conexiones > Bases de datos** lista todas las bases de datos con estas columnas: + +| Columna | Significado | +|---|---| +| Nombre | Cómo la nombran los formularios, con `dbConfig: ` | +| Descripción | Para qué sirve | +| Tipo de base de datos | El de su credencial: MySQL, MSSQL, PostgreSQL, Oracle o MongoDB | +| Base de datos | La base de datos que abre su credencial | + +**Columnas** añade dos más, ocultas por defecto: **Host**, dónde se conecta su credencial, con su puerto cuando lo tiene, y **Usado por**, +cuántos formularios la consultan, por su nombre o por el de su credencial (consulta [Usado por](database-page.html#used-by)). + +El tipo de base de datos, la base de datos y el host se leen de la credencial: cámbialos en la credencial, en +**Conexiones > Credenciales**. Ninguna columna muestra un usuario ni una contraseña. + +--- + +## Añadir una base de datos + +**Añadir base de datos** abre un diálogo en dos pasos, como el de un runner. + +| Paso | Campos | +|---|---| +| Base de datos | **Nombre** y **Descripción**. El nombre es obligatorio y único | +| Credenciales | **Credencial**, obligatoria: una credencial de tipo **Base de datos**. Solo se ofrecen esas | + +En el paso **Credenciales**, **Añadir credencial** abre el diálogo de una credencial nueva de tipo **Base de datos** (consulta +[La página de credenciales](../credentials/list.html)) y la elige una vez guardada, así que una base de datos y su acceso se pueden añadir de una vez. + +--- + +## El menú de la fila + +Una fila abre la página propia de la base de datos, y su menú ofrece: + +| Acción | Qué hace | +|---|---| +| Editar | Abre su página | +| Probar conexión | Se conecta con su credencial, ejecuta la consulta mínima de su tipo de base de datos, y dice si ha funcionado | +| Eliminar | Elimina la base de datos, tras una confirmación. Su credencial se queda | + +Eliminar una base de datos que los formularios todavía nombran hace que sus consultas fallen, salvo que quede una credencial del mismo nombre +a la que recurrir (consulta [Bases de datos en los formularios](in-forms.html)). Revisa antes su pestaña **Usado por**. diff --git a/i18n/es/_configure/disclaimer.md b/i18n/es/_configure/disclaimer.md index 2621447..5324f2e 100644 --- a/i18n/es/_configure/disclaimer.md +++ b/i18n/es/_configure/disclaimer.md @@ -1,11 +1,11 @@ --- layout: default title: Aviso legal -nav_order: 7 +nav_order: 8 has_children: true has_toc: false permalink: /disclaimer.html -translated_from: a22b56db001904583c51e6bd28f1281737f32a32 +translated_from: ad00bcbac9d3c64c103b15d26914eec84174f6b6 --- # Aviso legal diff --git a/i18n/es/_configure/notification-channels.md b/i18n/es/_configure/notification-channels.md index 9f4a90d..f52a499 100644 --- a/i18n/es/_configure/notification-channels.md +++ b/i18n/es/_configure/notification-channels.md @@ -1,11 +1,11 @@ --- layout: default title: Canales de notificación -nav_order: 9 +nav_order: 10 has_children: true has_toc: false permalink: /notification-channels.html -translated_from: 1488a67f6f281b0236e4bad3a8b3d0c3bb32326c +translated_from: 1756db6ff7b9197f88b34a0c089953a68493e008 --- # Canales de notificación diff --git a/i18n/es/_configure/production/index.md b/i18n/es/_configure/production/index.md index 67e4fa4..59f43f5 100644 --- a/i18n/es/_configure/production/index.md +++ b/i18n/es/_configure/production/index.md @@ -1,11 +1,11 @@ --- layout: default title: En producción -nav_order: 12 +nav_order: 13 has_children: true has_toc: false permalink: /production/ -translated_from: 2d7f4be84a76837fae34c1b414a229448bfae4ea +translated_from: 9f501893a2c4476707ac2f11f25e67998200e9e7 --- # En producción diff --git a/i18n/es/_configure/rte/index.md b/i18n/es/_configure/rte/index.md index 013c3f7..9401e6e 100644 --- a/i18n/es/_configure/rte/index.md +++ b/i18n/es/_configure/rte/index.md @@ -1,11 +1,11 @@ --- layout: default title: RTE -nav_order: 10 +nav_order: 11 has_children: true has_toc: false permalink: /rte/ -translated_from: 2c3f3f81ad8faaf18eac56f18782ef5f78111b04 +translated_from: 75a4facc8ad51d9d74b8fccfd2bbfd7ba48b17f9 --- # Entornos de ejecución (RTE) diff --git a/i18n/es/_configure/runners.md b/i18n/es/_configure/runners.md index a83b4e9..6680981 100644 --- a/i18n/es/_configure/runners.md +++ b/i18n/es/_configure/runners.md @@ -1,11 +1,11 @@ --- layout: default title: Runners -nav_order: 11 +nav_order: 12 has_children: true has_toc: false permalink: /runners.html -translated_from: 339eda183d7748fa923090d9f8e26e2f112b1352 +translated_from: e6663cf2e7dc14a1559383c7f49fd968a4cbf635 --- # Runners diff --git a/i18n/es/_configure/secret-stores/index.md b/i18n/es/_configure/secret-stores/index.md index 1b262a3..29e76fc 100644 --- a/i18n/es/_configure/secret-stores/index.md +++ b/i18n/es/_configure/secret-stores/index.md @@ -1,11 +1,11 @@ --- layout: default title: Almacenes de secretos -nav_order: 13 +nav_order: 14 has_children: true has_toc: false permalink: /secret-stores/ -translated_from: 595f94a84c4e8182b1b79289eb309a814dec1287 +translated_from: c7e5d9fb5e640896bd51e3fa20d76be092857ce2 --- # Almacenes de secretos @@ -95,6 +95,9 @@ fn.fnCredentials('vault:secret/myapp/prod') // the store named `vault` dbConfig: secret:vault:secret/cmdb/db ``` +Desde la 7.5.0 un `dbConfig` nombra primero una [base de datos](../databases.html); una referencia como esta no es una base de datos, así que +se sigue leyendo del almacén. Una base de datos también puede leer su acceso de un almacén, mediante una credencial de tipo base de datos que use uno. + Sin fila de credencial, un secreto de base de datos necesita al menos un `db_type` y un host, por ejemplo: ```json diff --git a/i18n/es/_configure/security/index.md b/i18n/es/_configure/security/index.md index f942cce..5fdcfa5 100644 --- a/i18n/es/_configure/security/index.md +++ b/i18n/es/_configure/security/index.md @@ -1,11 +1,11 @@ --- layout: default title: Seguridad -nav_order: 14 +nav_order: 15 has_children: true has_toc: false permalink: /security/ -translated_from: f2b18fd1638cb4ccb2401652eafb82e6ce0e82eb +translated_from: e299ab0a4ffb1c12441a3b3fec6eaaef4a19de79 --- # Seguridad diff --git a/i18n/es/_configure/seed/example.md b/i18n/es/_configure/seed/example.md index fd17b54..2370ec5 100644 --- a/i18n/es/_configure/seed/example.md +++ b/i18n/es/_configure/seed/example.md @@ -3,7 +3,7 @@ layout: default title: Ejemplo parent: Semilla de configuración nav_order: 1 -translated_from: f085641a12234a5485ea59e73e76c29e7452d5e9 +translated_from: cf1f2b0122ca5cd2dfcc411e4ed20fb683b079bf --- # Ejemplo @@ -72,6 +72,12 @@ credentials: user: svc_forms # leave user and password out for a relay password: ${SEED_SMTP_PW} +databases: # from 7.5.0 + items: + - name: production-db # the name a field's dbConfig gives + description: The CMDB + credential: production-db # a credential of the credentials section, of type database + repositories: prune: true items: @@ -209,3 +215,6 @@ validación de la semilla. Un RTE en modo base de datos puede registrarse por sí mismo antes de que se aplique la semilla. Un runner RTE de la semilla cuya `uri` sea la dirección con la que se registró ese RTE **adopta** esa fila: toma el nombre y los campos declarados, y el worker ya no la elimina cuando el RTE deja de responder, en lugar de tener un segundo runner para el mismo RTE. + +Desde la 7.5.0 la sección `databases` declara las [bases de datos](../databases.html) que consultan los formularios. Una entrada tiene un `name`, una +`credential` de tipo base de datos y una `description` opcional; la semilla la aplica después de las credenciales, y rechaza una credencial de otro tipo. diff --git a/i18n/es/_configure/seed/index.md b/i18n/es/_configure/seed/index.md index 3efc438..b2ac11e 100644 --- a/i18n/es/_configure/seed/index.md +++ b/i18n/es/_configure/seed/index.md @@ -5,7 +5,7 @@ nav_order: 4 has_children: true has_toc: false permalink: /seed/ -translated_from: 030ff83b1d7c3920600b7e0668b05ab24b949b67 +translated_from: 8f8eb798f4ada177abf5210049a523f7f2f4265b --- # Semilla de configuración @@ -33,6 +33,7 @@ declara objetos que antes solo existían en la base de datos: | `runners` | Dónde se ejecutan los trabajos: RTE, AWX / AAP / Ascender, Semaphore, Rundeck, Jenkins | | `secret_stores` | Almacenes de secretos (HashiCorp Vault, ...) | | `credentials` | Credenciales | +| `databases` | Las bases de datos que consultan los formularios, cada una con su credencial, desde la 7.5.0 | | `oauth2` | Proveedores SSO: Entra ID y OIDC | | `repositories` | Repositorios git | | `syslog_servers` | Los servidores syslog que reciben el log del servidor y las entradas de auditoría | diff --git a/i18n/es/_configure/users-and-groups.md b/i18n/es/_configure/users-and-groups.md index 9dcbaff..a465289 100644 --- a/i18n/es/_configure/users-and-groups.md +++ b/i18n/es/_configure/users-and-groups.md @@ -1,11 +1,11 @@ --- layout: default title: Usuarios y grupos -nav_order: 15 +nav_order: 16 has_children: true has_toc: false permalink: /users-and-groups.html -translated_from: 8ed4dc089c64e091636c29884af1cd1002eb40aa +translated_from: 07178b6b66a60d91e5a8ff3c417da3771730bc5e --- # Usuarios y grupos diff --git a/i18n/es/_reference/faq.md b/i18n/es/_reference/faq.md index 5a0ab37..5bd1f6f 100644 --- a/i18n/es/_reference/faq.md +++ b/i18n/es/_reference/faq.md @@ -2,7 +2,7 @@ layout: default title: Preguntas frecuentes nav_order: 2 -translated_from: 6616eaf626411a615cb68d8cc4f2a43401fe21d9 +translated_from: 487a25c7f3b24b3a0c0d4df08c858a52d48f8556 --- # Preguntas frecuentes @@ -171,11 +171,11 @@ La aplicación web cliente vuelve a evaluar los campos cada 100 ms; con los proc > Una referencia a otro campo enum devuelve los valores seleccionados, **no** la lista completa del desplegable. Usa la propiedad `placeholderColumn` o la notación con punto, como `$(city.name)`. > **Novedad en v4.0.20**: poner placeholderColumn a "*" devuelve el registro completo en lugar de una sola columna. +Los ejemplos consultan `CONN1`, una [base de datos](databases.html) de Conexiones > Bases de datos (desde la 7.5.0) o una credencial de tipo base de datos. + ```yaml - type: enum - dbConfig: - name: CONN1 - type: mysql + dbConfig: CONN1 query: select name from cmdb.city name: city_name label: Select a city @@ -184,9 +184,7 @@ La aplicación web cliente vuelve a evaluar los campos cada 100 ms; con los proc model: cmdb.city group: CMDB - type: enum - dbConfig: - name: CONN1 - type: mysql + dbConfig: CONN1 query: select datacenter.name from cmdb.datacenter,cmdb.city where datacenter.city_id=city.id and city.name='$(city_name)' name: datacenter_name @@ -201,9 +199,7 @@ La aplicación web cliente vuelve a evaluar los campos cada 100 ms; con los proc # or use the placeholderColumn property - type: enum - dbConfig: - name: CONN1 - type: mysql + dbConfig: CONN1 query: select id,name,description from cmdb.city name: city label: Select a city @@ -218,9 +214,7 @@ La aplicación web cliente vuelve a evaluar los campos cada 100 ms; con los proc - name - description - type: enum - dbConfig: - name: CONN1 - type: mysql + dbConfig: CONN1 query: select name, capacity_pct from cmdb.datacenter where datacenter.city_id=$(city) # this cascaded dropdown will react using "id" as placeholder # or "query":"select name from cmdb.datacenter where datacenter.city_id=$(city.id)", diff --git a/i18n/fr/_build_forms/expressions/placeholders.md b/i18n/fr/_build_forms/expressions/placeholders.md index 4f3b7c4..fa39bd9 100644 --- a/i18n/fr/_build_forms/expressions/placeholders.md +++ b/i18n/fr/_build_forms/expressions/placeholders.md @@ -3,7 +3,7 @@ layout: default title: Espaces réservés parent: Expressions nav_order: 0.5 -translated_from: bd63e437a4f77c707a1bf8d8ee99b1516063b62a +translated_from: 7b1ef975e0d5d92c446f050ffda02ee4acfa97aa --- # Espaces réservés @@ -31,7 +31,7 @@ valeur, et il est réévalué chaque fois que cette valeur change. C'est ainsi q values: [Amsterdam, Brussels] - name: datacenter type: enum - dbConfig: { name: CMDB, type: mysql } + dbConfig: CMDB # a database of Connections > Databases query: select name from cmdb.datacenter where city='$(city)' ``` @@ -73,7 +73,7 @@ Définir `placeholderColumn: "*"` sur un enum fait que `$(field)` donne tout l'e ```yaml - name: city type: enum - dbConfig: { name: CMDB, type: mysql } + dbConfig: CMDB query: select id, name from cmdb.city valueColumn: name placeholderColumn: id # $(city) gives the id; $(city.name) still gives the name diff --git a/i18n/fr/_build_forms/formfields/list.md b/i18n/fr/_build_forms/formfields/list.md index 903d774..340867b 100644 --- a/i18n/fr/_build_forms/formfields/list.md +++ b/i18n/fr/_build_forms/formfields/list.md @@ -3,7 +3,7 @@ layout: default title: List parent: Champs de formulaire nav_order: 13 -translated_from: b6209effaf1cc9783a27c36669004a239751fb3e +translated_from: c454e7962323f4d82488bbdd30f92a7619162c32 --- # Champ List @@ -285,6 +285,9 @@ Des lignes chargées depuis une requête de base de données : query: SELECT hostname, role FROM servers WHERE active = 1 ``` +`dbConfig` nomme une [base de données](../databases.html) de **Connexions > Bases de données** (depuis la 7.5.0), ou sinon un identifiant de type base de données, +comme avant (voir [Les bases de données dans les formulaires](../databases/in-forms.html)). + #### Depuis une expression locale (`runLocal`) Des lignes calculées dans le navigateur par une expression locale : diff --git a/i18n/fr/_build_forms/formfields/yaml.md b/i18n/fr/_build_forms/formfields/yaml.md index 8644a1c..9d76e25 100644 --- a/i18n/fr/_build_forms/formfields/yaml.md +++ b/i18n/fr/_build_forms/formfields/yaml.md @@ -3,7 +3,7 @@ layout: default title: YAML parent: Champs de formulaire nav_order: 14 -translated_from: c7439c165a54cf525a91d0458a268a66ee8a136f +translated_from: 8dde3e82c2a53e38adc729f5a8f3764b182718c7 --- # Champ YAML @@ -152,9 +152,7 @@ Faites-y référence avec la syntaxe d'expression standard `$(...)` dans les dé label: VLAN # filter available VLANs based on the parent's selected region query: "select id,name from vlans where region='$(__parent__.region)'" - dbConfig: - name: MYDB - type: mysql + dbConfig: MYDB # a database of Connections > Databases valueColumn: id placeholderColumn: name diff --git a/i18n/fr/_configure/credentials.md b/i18n/fr/_configure/credentials.md index 445f840..66773b6 100644 --- a/i18n/fr/_configure/credentials.md +++ b/i18n/fr/_configure/credentials.md @@ -5,7 +5,7 @@ nav_order: 6 has_children: true has_toc: false permalink: /credentials.html -translated_from: 08110077a1cf59a4a52e078fc2ebc252f7cae48d +translated_from: 0c8fddace3f97bb7d5a3a2642e3fccc296680454 --- # Identifiants @@ -40,6 +40,9 @@ par son nom, si bien que le mot de passe lui-même n'apparaît jamais dans un fo base de données d'AnsibleForms, chiffrés avec `ENCRYPTION_SECRET`, soit lus depuis un [coffre de secrets](secret-stores/) à chaque utilisation de l'identifiant. +Depuis la 7.5.0, les formulaires interrogent une [base de données](databases.html) de **Connexions > Bases de données**, qui nomme l'identifiant de type +**Base de données** avec lequel elle se connecte ; un formulaire qui nomme l'identifiant lui-même dans `dbConfig` fonctionne toujours, comme avant. + --- ## Qui peut modifier un identifiant @@ -69,6 +72,7 @@ tiennent ces utilisateurs à l'écart de secrets qu'ils ne pourraient pas lire a ## Identifiants utilisés -Un identifiant que des enregistrements nomment encore ne peut être ni supprimé ni renommé, car ils pointeraient alors vers rien. +Un identifiant que des enregistrements nomment encore, dont une [base de données](databases.html) depuis la 7.5.0, ne peut être ni supprimé ni +renommé, car ils pointeraient alors vers rien. Le refus indique combien d'enregistrements l'utilisent ; l'onglet **Utilisé par** de [sa page](credentials/credential-page.html) les liste. Pointez-les d'abord vers un autre identifiant, puis supprimez-le ou renommez-le. diff --git a/i18n/fr/_configure/credentials/credential-page.md b/i18n/fr/_configure/credentials/credential-page.md index 9907d7d..808a70a 100644 --- a/i18n/fr/_configure/credentials/credential-page.md +++ b/i18n/fr/_configure/credentials/credential-page.md @@ -3,7 +3,7 @@ layout: default title: "La page d'un identifiant" parent: Identifiants nav_order: 3 -translated_from: 0269b5c0d313622bea6c910b96231f41ffd852d7 +translated_from: 204eca949763c8c23625369f1d8d8d0d06545c87 --- # La page d'un identifiant @@ -20,7 +20,7 @@ La page d'un identifiant affiche les étapes de sa boîte de dialogue sous forme | Type | À quoi sert l'identifiant. | | Connexion | Tous les champs de son type, comme à l'étape **Connexion** de la boîte de dialogue : l'utilisateur, le mot de passe, et l'endroit où il se connecte (hôte et port, la base de données, le serveur mail, les serveurs de l'annuaire, le tenant ou l'issuer, l'adresse du serveur et son TLS). L'AppID, le certificat client et la clé d'un identifiant CyberArk. | | Stockage | Base de données ou Coffre de secrets, et le coffre et la référence. Pas pour CyberArk ni HashiCorp Vault. | -| Utilisé par | Tout ce qui nomme cet identifiant : coffres de secrets, canaux de notification, dépôts, annuaires LDAP, fournisseurs SSO, runners, l'assistant de chat, les formulaires et les workflows du concepteur. Une ligne l'ouvre. | +| Utilisé par | Tout ce qui nomme cet identifiant : coffres de secrets, canaux de notification, dépôts, annuaires LDAP, fournisseurs SSO, runners, [bases de données](../databases.html) (depuis la 7.5.0), l'assistant de chat, les formulaires et les workflows du concepteur. Une ligne l'ouvre. | Le mot de passe se saisit dans l'onglet **Connexion**, et n'est plus jamais affiché une fois enregistré : laissé vide, celui qui est stocké est conservé. Pour un identifiant CyberArk, laissez la clé client vide pour garder celle qui est stockée. En haut à droite se trouvent **Tester la connexion** (identifiants de base de données uniquement), diff --git a/i18n/fr/_configure/credentials/types.md b/i18n/fr/_configure/credentials/types.md index 2fa13fb..c8e776b 100644 --- a/i18n/fr/_configure/credentials/types.md +++ b/i18n/fr/_configure/credentials/types.md @@ -3,7 +3,7 @@ layout: default title: Types d'identifiants parent: Identifiants nav_order: 1 -translated_from: 1f21f8fc1ae73953922d8c9f21de6db05b3b1a87 +translated_from: 2782b0144b1442eceb8684fb1407827cef5fde8f --- # Types d'identifiants @@ -27,7 +27,7 @@ Le type indique à quoi sert un identifiant. Il décide des champs que demande l | SSH | Un utilisateur et un mot de passe pour SSH vers un serveur, avec son hôte et son port | Les playbooks, via les `credentials` ou `ansibleCredentials` d'un formulaire ou un champ d'identifiant, et l'accès d'un nœud de workflow | | Git | Un utilisateur et un mot de passe ou un jeton pour des dépôts git | Les [dépôts](../repositories/authentication.html) | | API | Un utilisateur et un mot de passe ou un jeton pour une API REST | Les [expressions REST](../expressions/credentials.html), un jeton de bot Telegram, le bearer token d'un webhook, la clé d'API de l'assistant de chat | -| Base de données | Un accès à une base de données, avec son type, son hôte, son port et le nom de la base | Les requêtes de formulaire (`dbConfig`) et `fnCredentials` ; il peut être testé | +| Base de données | Un accès à une base de données, avec son type, son hôte, son port et le nom de la base | Une [base de données](../databases.html) que les formulaires interrogent (`dbConfig`), depuis la 7.5.0, ou directement le `dbConfig` d'un formulaire ; `fnCredentials` ; il peut être testé | | CyberArk | L'adresse du CyberArk Central Credential Provider (CCP) et son TLS, ainsi que l'AppID, le certificat client et la clé avec lesquels se connecte un coffre CyberArk | Un coffre de secrets [CyberArk](../secret-stores/cyberark.html) | | SMTP | Un serveur mail, son port et son TLS, et son accès (aucun pour un relais) | Un [canal de notification](../notification-channels.html) mail | | LDAP | Les serveurs, le port, le TLS et les certificats d'un annuaire, et son DN et mot de passe de bind | Un [annuaire LDAP](../authentication/ldap.html) | @@ -39,7 +39,8 @@ Le type indique à quoi sert un identifiant. Il décide des champs que demande l | Jenkins | Un utilisateur, son jeton d'API et l'adresse d'un Jenkins | Un runner Jenkins | | HashiCorp Vault | Le jeton et l'adresse avec lesquels se connecte un coffre Vault | Un coffre de secrets [HashiCorp Vault](../secret-stores/hashicorp-vault.html) | -Un identifiant de base de données peut être de type MySQL, MSSQL, PostgreSQL, Oracle ou MongoDB. +Un identifiant de base de données peut être de type MySQL, MSSQL, PostgreSQL, Oracle ou MongoDB. Depuis la 7.5.0, il est choisi par une base de données de +[Connexions > Bases de données](../databases.html), et la mise à jour vers la 7.5.0 crée une base de données pour chacun, avec le même nom. Dans l'API et le [seed de configuration](../seed/), les types sont `userpass`, `ssh`, `git`, `api`, `database`, `cyberark`, `smtp`, `ldap`, `entraid`, `oidc`, `rte`, `awx`, `aap`, `ascender`, `semaphore`, `rundeck`, `jenkins` et `vault`. La mise à jour depuis la 6 diff --git a/i18n/fr/_configure/customization/index.md b/i18n/fr/_configure/customization/index.md index f37d7dd..e704a7f 100644 --- a/i18n/fr/_configure/customization/index.md +++ b/i18n/fr/_configure/customization/index.md @@ -1,11 +1,11 @@ --- layout: default title: Variables d'environnement -nav_order: 8 +nav_order: 9 has_children: true has_toc: false permalink: /customization/ -translated_from: fd6e83f3550f59aa576c8addaf28bfa6115b96a0 +translated_from: e0bc1d7c5bd2df4a3f9036a2d9413a276b228156 --- # Variables d'environnement diff --git a/i18n/fr/_configure/databases.md b/i18n/fr/_configure/databases.md new file mode 100644 index 0000000..16549f0 --- /dev/null +++ b/i18n/fr/_configure/databases.md @@ -0,0 +1,150 @@ +--- +layout: default +title: Bases de données +nav_order: 7 +has_children: true +has_toc: false +permalink: /databases.html +translated_from: 7c14f8dd95d2314974c54a3f2c5aba279410d822 +--- + +# Bases de données +{: .no_toc } + +Les bases de données des formulaires, chacune avec son identifiant +{: .fs-6 .fw-300 } + +1. TOC +{:toc} + +--- + +Pour les administrateurs : nommez les bases de données qu'interrogent vos formulaires, choisissez l'identifiant avec lequel chacune se connecte, et testez-les. + +--- + +## Dans cette section + +| Page | Ce qu'elle couvre | +|---|---| +| [La page des bases de données](databases/list.html) | La liste des bases de données, ses colonnes, et la boîte de dialogue qui en ajoute une | +| [La page d'une base de données](databases/database-page.html) | Les onglets d'une base de données, les formulaires qui l'interrogent, Tester la connexion et Supprimer | +| [Les bases de données dans les formulaires](databases/in-forms.html) | Comment le `dbConfig` d'un champ nomme une base de données, et les formulaires écrits avant la 7.5.0 | + +--- + +## Fonctionnement + +Depuis la 7.5.0, une **base de données** est une connexion à part entière, ajoutée dans **Connexions > Bases de données**, entre **Coffres de secrets** et **Runners**. +Elle comporte trois éléments : + +| Champ | Ce que c'est | +|---|---| +| Nom | Le nom que donne le `dbConfig` d'un champ pour l'interroger, comme `cmdb` | +| Description | À quoi elle sert | +| Identifiant | L'identifiant de [Connexions > Identifiants](credentials.html), de type **Base de données**, avec lequel elle se connecte | + +L'identifiant conserve tout ce qui concerne la connexion, comme avant : le type de base de données (MySQL, MSSQL, PostgreSQL, Oracle ou MongoDB), +l'hôte et le port, le nom de la base, TLS, et l'utilisateur et le mot de passe, conservés chiffrés ou lus depuis un [coffre de secrets](secret-stores/). +Une base de données n'a ni adresse ni secret propres, si bien qu'une base de données et un runner choisissent leur identifiant de la même façon. + +Un champ interroge une base de données en la nommant dans `dbConfig` : + +```yaml +- name: city + type: enum + dbConfig: cmdb # a database of Connections > Databases + query: select name from cmdb.city +``` + +Un nom qui n'est pas une base de données est cherché comme un identifiant de type base de données, comme avant la 7.5.0, si bien que les +anciens formulaires fonctionnent toujours sans changement (voir [Les bases de données dans les formulaires](databases/in-forms.html)). + +--- + +## Mettre à jour vers la 7.5.0 + +La mise à jour remplit **Connexions > Bases de données** une seule fois, si bien que vos formulaires fonctionnent toujours sans aucun changement. + +Elle crée une base de données pour chaque identifiant de type base de données, avec le nom et la description de l'identifiant, qui se connecte +avec cet identifiant. Un formulaire dont le `dbConfig` nomme l'identifiant trouve désormais la base de données du même nom, qui se connecte avec +le même identifiant : le résultat est le même. Les identifiants conservent tous leurs champs. + +La mise à jour ne s'exécute qu'une fois : une base de données supprimée ensuite n'est pas recréée, et un identifiant de base de données ajouté +plus tard ne reçoit aucune base de données tant que vous n'en ajoutez pas une. + +--- + +## Identifiants utilisés + +Un identifiant avec lequel se connecte une base de données est utilisé, comme celui avec lequel un runner se connecte. + +Il ne peut être ni supprimé ni renommé tant qu'une base de données le nomme, et l'onglet **Utilisé par** de sa page liste les bases de données (voir +[Identifiants utilisés](credentials.html#credentials-in-use)). Supprimer une base de données laisse son identifiant tel quel. + +--- + +## Qui gère les bases de données + +Les bases de données suivent les options de rôle des identifiants qu'elles nomment. + +La liste, la page d'une base de données et son API nécessitent l'option de rôle `showSettings` ou `showConnectionsSettings`, comme les identifiants. +Seul un admin peut faire se connecter une base de données avec un identifiant que seul un admin peut nommer, comme un identifiant qui lit son mot +de passe depuis un coffre de secrets (voir [Qui peut modifier un identifiant](credentials.html#who-may-change-a-credential)) : les formulaires qui +l'interrogent se connecteraient avec cet identifiant, et **Tester la connexion** enverrait son secret à son serveur. Un autre utilisateur peut +enregistrer à nouveau une base de données avec l'identifiant qu'elle nomme déjà. + +Une base de données déclarée dans le [seed de configuration](seed/) est en lecture seule sur sa page : modifiez-la plutôt dans le fichier seed. + +--- + +## Le seed de configuration + +Un seed déclare ses bases de données dans une section `databases:`, après les identifiants qu'elles nomment. + +Chaque élément a un `name`, un `credential` de type base de données et, facultativement, une `description`. L'identifiant peut venir de la +section `credentials` du même seed ou être un identifiant créé dans l'application : + +```yaml +credentials: + items: + - name: cmdb-login + credential_type: database + db_type: mysql + host: cmdb.example.com + port: 3306 + user: svc_forms + password: ${SEED_CMDB_PW} + +databases: + items: + - name: cmdb # the name a field's dbConfig gives + description: The CMDB + credential: cmdb-login # a credential of type database +``` + +Voir l'[exemple](seed/example.html) complet et [Objets gérés](seed/managed-objects.html) pour la façon dont le seed prend en charge ce qu'il déclare. + +--- + +## L'API REST + +Les scripts gèrent les bases de données via l'[API REST](api/), sous `/api/v2/database`, avec les mêmes options de rôle que la page. + +| Appel | Ce qu'il fait | +|---|---| +| `GET /api/v2/database` | Liste les bases de données, chacune avec le type de base, la base, l'hôte et le port de son identifiant, et le nombre de formulaires qui l'interrogent (`used_by_count`) | +| `GET /api/v2/database?name=` | Renvoie la base de données de ce nom | +| `GET /api/v2/database/` | Renvoie une base de données | +| `POST /api/v2/database` | Ajoute une base de données : son `name`, son `credential` et facultativement sa `description` | +| `PUT /api/v2/database/` | Modifie une base de données | +| `DELETE /api/v2/database/` | Supprime une base de données ; son identifiant reste | +| `POST /api/v2/database//check` | Teste sa connexion, avec son identifiant | + +```bash +curl -X POST https://forms.example.com/api/v2/database \ + -H "Authorization: Bearer " -H "Content-Type: application/json" \ + -d '{ "name": "cmdb", "description": "The CMDB", "credential": "cmdb-login" }' +``` + +Un `credential` qui n'existe pas, ou qui n'est pas de type base de données, est refusé avec `400`. Chaque modification est écrite dans le journal d'audit. diff --git a/i18n/fr/_configure/databases/database-page.md b/i18n/fr/_configure/databases/database-page.md new file mode 100644 index 0000000..06fc9a4 --- /dev/null +++ b/i18n/fr/_configure/databases/database-page.md @@ -0,0 +1,61 @@ +--- +layout: default +title: "La page d'une base de données" +parent: Bases de données +nav_order: 2 +translated_from: b027ce5ca33397772148bb221bd9eaab4984f276 +--- + +# La page d'une base de données +{: .no_toc } + +Ses onglets, les formulaires qui l'interrogent, le test et la suppression +{: .fs-6 .fw-300 } + +1. TOC +{:toc} + +--- + +## Onglets + +La page d'une base de données affiche les étapes de sa boîte de dialogue sous forme d'onglets, plus les formulaires qui l'interrogent : + +| Onglet | Ce qu'il contient | +|---|---| +| Détails | Le **Nom**, celui que donne le `dbConfig` d'un champ, et la **Description** | +| Identifiants | L'**Identifiant** avec lequel elle se connecte, un identifiant de Connexions > Identifiants de type **Base de données**, qui contient son type de base, son hôte, son port, sa base, TLS et son accès | +| Utilisé par | Les formulaires qui l'interrogent, avec leur nombre sur l'onglet, voir [Utilisé par](#used-by) | + +Chaque onglet a sa propre adresse, comme `/settings/databases//used-by`, si bien qu'un lien ou un favori l'ouvre. La recherche de la +ligne de titre filtre tous les onglets à la fois. + +Dans l'onglet **Identifiants**, **Ajouter un identifiant** crée un nouvel identifiant de type **Base de données** et le choisit. Un mot de passe +n'est plus jamais affiché une fois enregistré : modifiez-le sur l'identifiant. + +--- + +## Utilisé par + +L'onglet **Utilisé par** liste les formulaires dont des champs interrogent la base de données, tels que l'application les lit dans les formulaires. + +| Colonne | Ce qu'elle affiche | +|---|---| +| Formulaire | Le formulaire ; une ligne l'ouvre | +| Description | La description du formulaire | +| Champ | Les champs de ce formulaire dont le `dbConfig` nomme la base de données | + +Un champ compte quand son `dbConfig` nomme la base de données, ou nomme son identifiant, comme le fait un formulaire écrit avant la 7.5.0. +Les deux se connectent avec le même identifiant, donc les deux sont listés. Quand il n'y en a aucun, l'onglet indique **Aucun formulaire n'interroge cette base de données.** + +--- + +## Tester la connexion et Supprimer + +Les boutons en haut à droite agissent sur la base de données telle qu'elle est enregistrée. + +**Tester la connexion** se connecte avec son identifiant et exécute la requête minimale de son type de base de données, puis le dit dans un message, +**Connexion <name> OK**, ou la raison de l'échec. C'est le même test que le **Tester la connexion** de l'identifiant lui-même. + +**Supprimer** demande d'abord, puis supprime la base de données et revient à la liste. Son identifiant reste dans **Connexions > Identifiants**. +À côté, **Enregistrer** enregistre les onglets Détails et Identifiants. diff --git a/i18n/fr/_configure/databases/in-forms.md b/i18n/fr/_configure/databases/in-forms.md new file mode 100644 index 0000000..b8e4bc8 --- /dev/null +++ b/i18n/fr/_configure/databases/in-forms.md @@ -0,0 +1,77 @@ +--- +layout: default +title: Les bases de données dans les formulaires +parent: Bases de données +nav_order: 3 +translated_from: 44e424afaa9938d1bcdb9277d2b7d8e5fefee64e +--- + +# Les bases de données dans les formulaires +{: .no_toc } + +Comment le dbConfig d'un champ nomme une base, et les anciens formulaires +{: .fs-6 .fw-300 } + +1. TOC +{:toc} + +--- + +## Nommer une base de données + +Un champ avec une `query` l'exécute sur la base de données que nomme son `dbConfig`. + +```yaml +- name: datacenter + type: enum + dbConfig: cmdb # a database of Connections > Databases + query: select name from cmdb.datacenter +``` + +Depuis la 7.5.0, le nom est cherché dans cet ordre : + +| Ordre | Le nom est | La requête se connecte avec | +|---|---|---| +| 1 | Une base de données de **Connexions > Bases de données** | L'identifiant que nomme cette base de données | +| 2 | Sinon un identifiant de type **Base de données** de **Connexions > Identifiants** | Cet identifiant, comme avant la 7.5.0 | + +Le type de base de données (MySQL, MSSQL, PostgreSQL, Oracle ou MongoDB) vient de l'identifiant, si bien que le formulaire ne le donne jamais. +Un identifiant sans type est lu comme MySQL. + +--- + +## Les formulaires écrits avant la 7.5.0 + +Tout formulaire qui nommait un identifiant dans `dbConfig` fonctionne toujours, sans changement. + +La [mise à jour vers la 7.5.0](../databases.html#upgrading-to-750) crée une base de données pour chaque identifiant de base de données, avec le même +nom et se connectant avec cet identifiant, si bien que le nom que donne un formulaire trouve désormais d'abord la base de données, qui mène au même +accès. Un identifiant de type base de données sans base de données de son nom est toujours trouvé par l'étape 2. + +Une base de données et un identifiant peuvent partager un nom, comme le fait la mise à jour. La base de données l'emporte : pointez-la vers un +autre identifiant et chaque formulaire qui donne ce nom suit, ce qui permet à un formulaire de passer à un autre serveur sans être modifié. + +--- + +## Les formes de dbConfig + +Les trois formes que `dbConfig` a toujours acceptées fonctionnent toujours, chaque nom étant cherché comme ci-dessus. + +| `dbConfig` | Exemple | Ce qu'il fait | +|---|---|---| +| Un nom | `dbConfig: cmdb` | Interroge cette base de données | +| Une liste de noms | `dbConfig: [cmdb-eu, cmdb-us]` | Exécute la requête sur chacune et réunit les résultats ; les doublons ne sont pas supprimés | +| Un objet (ancien) | `dbConfig: { name: cmdb, type: mysql }` | Interroge la base de données ou l'identifiant `name` ; obsolète, utilisez le nom seul | + +Une référence à un [coffre de secrets](../secret-stores/#inline-without-a-credential-row), comme `dbConfig: secret:vault:secret/cmdb/db`, n'est le +nom ni d'une base de données ni d'un identifiant, et elle est toujours lue depuis le coffre comme avant. + +--- + +## Quels formulaires interrogent une base de données + +L'application lit les formulaires pour savoir lesquels interrogent chaque base de données. + +La colonne **Utilisé par** de [la page des bases de données](list.html) les compte, et l'onglet **Utilisé par** de +[la page d'une base de données](database-page.html#used-by) les liste avec leurs champs. Un champ qui nomme à la place l'identifiant de la base de +données compte aussi. Renommez une base de données seulement après avoir modifié les formulaires qui donnent son ancien nom. diff --git a/i18n/fr/_configure/databases/list.md b/i18n/fr/_configure/databases/list.md new file mode 100644 index 0000000..ce7fba5 --- /dev/null +++ b/i18n/fr/_configure/databases/list.md @@ -0,0 +1,64 @@ +--- +layout: default +title: La page des bases de données +parent: Bases de données +nav_order: 1 +translated_from: 66ffec0a34395642b0208e81078dbc725bdc7123 +--- + +# La page des bases de données +{: .no_toc } + +La liste des bases de données, ses colonnes, et l'ajout d'une base +{: .fs-6 .fw-300 } + +1. TOC +{:toc} + +--- + +## La liste + +La page **Connexions > Bases de données** liste chaque base de données avec ces colonnes : + +| Colonne | Signification | +|---|---| +| Nom | Comment les formulaires y font référence, avec `dbConfig: ` | +| Description | À quoi elle sert | +| Type de base de données | Celui de son identifiant : MySQL, MSSQL, PostgreSQL, Oracle ou MongoDB | +| Base de données | La base que son identifiant ouvre | + +**Colonnes** en ajoute deux autres, masquées par défaut : **Hôte**, où son identifiant se connecte, avec son port quand il en a un, et **Utilisé par**, +le nombre de formulaires qui l'interrogent, par son nom ou par celui de son identifiant (voir [Utilisé par](database-page.html#used-by)). + +Le type de base de données, la base et l'hôte sont lus depuis l'identifiant : modifiez-les sur l'identifiant, dans +**Connexions > Identifiants**. Aucune colonne n'affiche un utilisateur ni un mot de passe. + +--- + +## Ajouter une base de données + +**Ajouter une base de données** ouvre une boîte de dialogue en deux étapes, comme celle d'un runner. + +| Étape | Champs | +|---|---| +| Base de données | **Nom** et **Description**. Le nom est obligatoire et unique | +| Identifiants | **Identifiant**, obligatoire : un identifiant de type **Base de données**. Seuls ceux-là sont proposés | + +À l'étape **Identifiants**, **Ajouter un identifiant** ouvre la boîte de dialogue d'un nouvel identifiant de type **Base de données** (voir +[La page des identifiants](../credentials/list.html)) et le choisit une fois enregistré, si bien qu'une base de données et son accès s'ajoutent en une fois. + +--- + +## Le menu de la ligne + +Une ligne ouvre la page propre de la base de données, et son menu propose : + +| Action | Ce qu'elle fait | +|---|---| +| Modifier | Ouvre sa page | +| Tester la connexion | Se connecte avec son identifiant, exécute la requête minimale de son type de base de données, et dit si cela a fonctionné | +| Supprimer | Supprime la base de données, après confirmation. Son identifiant reste | + +Supprimer une base de données que des formulaires nomment encore fait échouer leurs requêtes, sauf s'il reste un identifiant du même nom +vers lequel se replier (voir [Les bases de données dans les formulaires](in-forms.html)). Vérifiez d'abord son onglet **Utilisé par**. diff --git a/i18n/fr/_configure/disclaimer.md b/i18n/fr/_configure/disclaimer.md index d3506f6..5733378 100644 --- a/i18n/fr/_configure/disclaimer.md +++ b/i18n/fr/_configure/disclaimer.md @@ -1,11 +1,11 @@ --- layout: default title: Avertissement -nav_order: 7 +nav_order: 8 has_children: true has_toc: false permalink: /disclaimer.html -translated_from: a22b56db001904583c51e6bd28f1281737f32a32 +translated_from: ad00bcbac9d3c64c103b15d26914eec84174f6b6 --- # Avertissement diff --git a/i18n/fr/_configure/notification-channels.md b/i18n/fr/_configure/notification-channels.md index a277c65..9e07ac5 100644 --- a/i18n/fr/_configure/notification-channels.md +++ b/i18n/fr/_configure/notification-channels.md @@ -1,11 +1,11 @@ --- layout: default title: Canaux de notification -nav_order: 9 +nav_order: 10 has_children: true has_toc: false permalink: /notification-channels.html -translated_from: 1488a67f6f281b0236e4bad3a8b3d0c3bb32326c +translated_from: 1756db6ff7b9197f88b34a0c089953a68493e008 --- # Canaux de notification diff --git a/i18n/fr/_configure/production/index.md b/i18n/fr/_configure/production/index.md index 7c982f2..3740d23 100644 --- a/i18n/fr/_configure/production/index.md +++ b/i18n/fr/_configure/production/index.md @@ -1,11 +1,11 @@ --- layout: default title: Exploitation en production -nav_order: 12 +nav_order: 13 has_children: true has_toc: false permalink: /production/ -translated_from: 2d7f4be84a76837fae34c1b414a229448bfae4ea +translated_from: 9f501893a2c4476707ac2f11f25e67998200e9e7 --- # Exploitation en production diff --git a/i18n/fr/_configure/rte/index.md b/i18n/fr/_configure/rte/index.md index b71aca5..f0e255f 100644 --- a/i18n/fr/_configure/rte/index.md +++ b/i18n/fr/_configure/rte/index.md @@ -1,11 +1,11 @@ --- layout: default title: RTE -nav_order: 10 +nav_order: 11 has_children: true has_toc: false permalink: /rte/ -translated_from: 2c3f3f81ad8faaf18eac56f18782ef5f78111b04 +translated_from: 75a4facc8ad51d9d74b8fccfd2bbfd7ba48b17f9 --- # Environnements d'exécution (RTE) diff --git a/i18n/fr/_configure/runners.md b/i18n/fr/_configure/runners.md index 03aac5c..f9c5b63 100644 --- a/i18n/fr/_configure/runners.md +++ b/i18n/fr/_configure/runners.md @@ -1,11 +1,11 @@ --- layout: default title: Runners -nav_order: 11 +nav_order: 12 has_children: true has_toc: false permalink: /runners.html -translated_from: 339eda183d7748fa923090d9f8e26e2f112b1352 +translated_from: e6663cf2e7dc14a1559383c7f49fd968a4cbf635 --- # Runners diff --git a/i18n/fr/_configure/secret-stores/index.md b/i18n/fr/_configure/secret-stores/index.md index 27249b3..af14ed3 100644 --- a/i18n/fr/_configure/secret-stores/index.md +++ b/i18n/fr/_configure/secret-stores/index.md @@ -1,11 +1,11 @@ --- layout: default title: Coffres de secrets -nav_order: 13 +nav_order: 14 has_children: true has_toc: false permalink: /secret-stores/ -translated_from: 595f94a84c4e8182b1b79289eb309a814dec1287 +translated_from: c7e5d9fb5e640896bd51e3fa20d76be092857ce2 --- # Coffres de secrets @@ -95,6 +95,9 @@ fn.fnCredentials('vault:secret/myapp/prod') // the store named `vault` dbConfig: secret:vault:secret/cmdb/db ``` +Depuis la 7.5.0, un `dbConfig` nomme d'abord une [base de données](../databases.html) ; une référence comme celle-ci n'est pas une base de données, elle +est donc toujours lue depuis le coffre. Une base de données peut aussi lire son accès depuis un coffre, via un identifiant de type base de données qui en utilise un. + Sans ligne d'identifiant, un secret de base de données nécessite au moins un `db_type` et un hôte, par exemple : ```json diff --git a/i18n/fr/_configure/security/index.md b/i18n/fr/_configure/security/index.md index bde66c0..ff00f46 100644 --- a/i18n/fr/_configure/security/index.md +++ b/i18n/fr/_configure/security/index.md @@ -1,11 +1,11 @@ --- layout: default title: Sécurité -nav_order: 14 +nav_order: 15 has_children: true has_toc: false permalink: /security/ -translated_from: f2b18fd1638cb4ccb2401652eafb82e6ce0e82eb +translated_from: e299ab0a4ffb1c12441a3b3fec6eaaef4a19de79 --- # Sécurité diff --git a/i18n/fr/_configure/seed/example.md b/i18n/fr/_configure/seed/example.md index 8f54087..2dac713 100644 --- a/i18n/fr/_configure/seed/example.md +++ b/i18n/fr/_configure/seed/example.md @@ -3,7 +3,7 @@ layout: default title: Exemple parent: Seed de configuration nav_order: 1 -translated_from: f085641a12234a5485ea59e73e76c29e7452d5e9 +translated_from: cf1f2b0122ca5cd2dfcc411e4ed20fb683b079bf --- # Exemple @@ -72,6 +72,12 @@ credentials: user: svc_forms # leave user and password out for a relay password: ${SEED_SMTP_PW} +databases: # from 7.5.0 + items: + - name: production-db # the name a field's dbConfig gives + description: The CMDB + credential: production-db # a credential of the credentials section, of type database + repositories: prune: true items: @@ -209,3 +215,6 @@ validation du seed. Un RTE en mode base de données peut s'enregistrer lui-même avant que le seed soit appliqué. Un runner RTE du seed dont le `uri` est l'adresse à laquelle un tel RTE s'est enregistré **adopte** cette ligne : il prend le nom et les champs déclarés, et le worker ne le supprime plus quand le RTE cesse de répondre, au lieu d'avoir un second runner pour le même RTE. + +Depuis la 7.5.0, la section `databases` déclare les [bases de données](../databases.html) que les formulaires interrogent. Un élément a un `name`, un +`credential` de type base de données et une `description` facultative ; le seed l'applique après les identifiants, et refuse un identifiant d'un autre type. diff --git a/i18n/fr/_configure/seed/index.md b/i18n/fr/_configure/seed/index.md index b0795a8..da6840b 100644 --- a/i18n/fr/_configure/seed/index.md +++ b/i18n/fr/_configure/seed/index.md @@ -5,7 +5,7 @@ nav_order: 4 has_children: true has_toc: false permalink: /seed/ -translated_from: 030ff83b1d7c3920600b7e0668b05ab24b949b67 +translated_from: 8f8eb798f4ada177abf5210049a523f7f2f4265b --- # Seed de configuration @@ -33,6 +33,7 @@ déclare des objets qui n'existaient auparavant que dans la base de données : | `runners` | Où s'exécutent les jobs : RTE, AWX / AAP / Ascender, Semaphore, Rundeck, Jenkins | | `secret_stores` | Les coffres de secrets (HashiCorp Vault, ...) | | `credentials` | Les identifiants | +| `databases` | Les bases de données que les formulaires interrogent, chacune avec son identifiant, depuis la 7.5.0 | | `oauth2` | Les fournisseurs SSO : Entra ID et OIDC | | `repositories` | Les dépôts Git | | `syslog_servers` | Les serveurs syslog qui reçoivent le journal du serveur et les entrées d'audit | diff --git a/i18n/fr/_configure/users-and-groups.md b/i18n/fr/_configure/users-and-groups.md index b3f55f2..ff3be49 100644 --- a/i18n/fr/_configure/users-and-groups.md +++ b/i18n/fr/_configure/users-and-groups.md @@ -1,11 +1,11 @@ --- layout: default title: Utilisateurs et groupes -nav_order: 15 +nav_order: 16 has_children: true has_toc: false permalink: /users-and-groups.html -translated_from: 8ed4dc089c64e091636c29884af1cd1002eb40aa +translated_from: 07178b6b66a60d91e5a8ff3c417da3771730bc5e --- # Utilisateurs et groupes diff --git a/i18n/fr/_reference/faq.md b/i18n/fr/_reference/faq.md index 278804c..7df3b45 100644 --- a/i18n/fr/_reference/faq.md +++ b/i18n/fr/_reference/faq.md @@ -2,7 +2,7 @@ layout: default title: FAQ nav_order: 2 -translated_from: 6616eaf626411a615cb68d8cc4f2a43401fe21d9 +translated_from: 487a25c7f3b24b3a0c0d4df08c858a52d48f8556 --- # Questions fréquentes @@ -171,11 +171,11 @@ L'application web cliente réévalue les champs toutes les 100 ms ; avec les pro > Une référence à un autre champ enum renvoie les valeurs sélectionnées, **pas** la liste déroulante complète. Utilisez la propriété `placeholderColumn` ou la notation pointée comme `$(city.name)`. > **Nouveau en v4.0.20** : mettre placeholderColumn à "*" renvoie l'enregistrement entier au lieu d'une seule colonne. +Les exemples interrogent `CONN1`, une [base de données](databases.html) de Connexions > Bases de données (depuis la 7.5.0) ou un identifiant de type base de données. + ```yaml - type: enum - dbConfig: - name: CONN1 - type: mysql + dbConfig: CONN1 query: select name from cmdb.city name: city_name label: Select a city @@ -184,9 +184,7 @@ L'application web cliente réévalue les champs toutes les 100 ms ; avec les pro model: cmdb.city group: CMDB - type: enum - dbConfig: - name: CONN1 - type: mysql + dbConfig: CONN1 query: select datacenter.name from cmdb.datacenter,cmdb.city where datacenter.city_id=city.id and city.name='$(city_name)' name: datacenter_name @@ -201,9 +199,7 @@ L'application web cliente réévalue les champs toutes les 100 ms ; avec les pro # or use the placeholderColumn property - type: enum - dbConfig: - name: CONN1 - type: mysql + dbConfig: CONN1 query: select id,name,description from cmdb.city name: city label: Select a city @@ -218,9 +214,7 @@ L'application web cliente réévalue les champs toutes les 100 ms ; avec les pro - name - description - type: enum - dbConfig: - name: CONN1 - type: mysql + dbConfig: CONN1 query: select name, capacity_pct from cmdb.datacenter where datacenter.city_id=$(city) # this cascaded dropdown will react using "id" as placeholder # or "query":"select name from cmdb.datacenter where datacenter.city_id=$(city.id)", diff --git a/i18n/it/_build_forms/expressions/placeholders.md b/i18n/it/_build_forms/expressions/placeholders.md index 2df5af9..12ca87b 100644 --- a/i18n/it/_build_forms/expressions/placeholders.md +++ b/i18n/it/_build_forms/expressions/placeholders.md @@ -3,7 +3,7 @@ layout: default title: Segnaposto parent: Espressioni nav_order: 0.5 -translated_from: bd63e437a4f77c707a1bf8d8ee99b1516063b62a +translated_from: 7b1ef975e0d5d92c446f050ffda02ee4acfa97aa --- # Segnaposto @@ -31,7 +31,7 @@ valore, e viene valutato di nuovo ogni volta che quel valore cambia. È così ch values: [Amsterdam, Brussels] - name: datacenter type: enum - dbConfig: { name: CMDB, type: mysql } + dbConfig: CMDB # a database of Connections > Databases query: select name from cmdb.datacenter where city='$(city)' ``` @@ -73,7 +73,7 @@ Impostando `placeholderColumn: "*"` su un enum, `$(field)` restituisce l'intero ```yaml - name: city type: enum - dbConfig: { name: CMDB, type: mysql } + dbConfig: CMDB query: select id, name from cmdb.city valueColumn: name placeholderColumn: id # $(city) gives the id; $(city.name) still gives the name diff --git a/i18n/it/_build_forms/formfields/list.md b/i18n/it/_build_forms/formfields/list.md index c297a8f..173479d 100644 --- a/i18n/it/_build_forms/formfields/list.md +++ b/i18n/it/_build_forms/formfields/list.md @@ -3,7 +3,7 @@ layout: default title: List parent: Campi del modulo nav_order: 13 -translated_from: b6209effaf1cc9783a27c36669004a239751fb3e +translated_from: c454e7962323f4d82488bbdd30f92a7619162c32 --- # Campo List @@ -285,6 +285,9 @@ Righe caricate da una query su database: query: SELECT hostname, role FROM servers WHERE active = 1 ``` +`dbConfig` indica un [database](../databases.html) di **Connessioni > Database** (dalla 7.5.0), o altrimenti una credenziale di tipo database, +come prima (vedi [I database nei moduli](../databases/in-forms.html)). + #### Da un'espressione locale (`runLocal`) Righe calcolate nel browser da un'espressione locale: diff --git a/i18n/it/_build_forms/formfields/yaml.md b/i18n/it/_build_forms/formfields/yaml.md index 94a777b..21e07a6 100644 --- a/i18n/it/_build_forms/formfields/yaml.md +++ b/i18n/it/_build_forms/formfields/yaml.md @@ -3,7 +3,7 @@ layout: default title: YAML parent: Campi del modulo nav_order: 14 -translated_from: c7439c165a54cf525a91d0458a268a66ee8a136f +translated_from: 8dde3e82c2a53e38adc729f5a8f3764b182718c7 --- # Campo YAML @@ -152,9 +152,7 @@ Fai riferimento a essa con la sintassi standard delle espressioni `$(...)` nelle label: VLAN # filter available VLANs based on the parent's selected region query: "select id,name from vlans where region='$(__parent__.region)'" - dbConfig: - name: MYDB - type: mysql + dbConfig: MYDB # a database of Connections > Databases valueColumn: id placeholderColumn: name diff --git a/i18n/it/_configure/credentials.md b/i18n/it/_configure/credentials.md index 118f994..a61b55a 100644 --- a/i18n/it/_configure/credentials.md +++ b/i18n/it/_configure/credentials.md @@ -5,7 +5,7 @@ nav_order: 6 has_children: true has_toc: false permalink: /credentials.html -translated_from: 08110077a1cf59a4a52e078fc2ebc252f7cae48d +translated_from: 0c8fddace3f97bb7d5a3a2642e3fccc296680454 --- # Credenziali @@ -40,6 +40,9 @@ la indicano con il suo nome, così la password stessa non compare mai in un modu database di AnsibleForms, cifrati con `ENCRYPTION_SECRET`, oppure letti da un [archivio di segreti](secret-stores/) ogni volta che la credenziale viene usata. +Dalla 7.5.0 i moduli interrogano un [database](databases.html) di **Connessioni > Database**, che indica la credenziale di tipo +**Database** con cui si connette; un modulo che indica la credenziale stessa nel `dbConfig` funziona ancora, come prima. + --- ## Chi può modificare una credenziale @@ -69,6 +72,7 @@ tengono questi utenti lontani dai segreti che altrimenti non potrebbero leggere: ## Credenziali in uso -Una credenziale ancora indicata da dei record non si può eliminare né rinominare, perché questi resterebbero a puntare verso il nulla. +Una credenziale ancora indicata da dei record, tra cui un [database](databases.html) dalla 7.5.0, non si può eliminare né rinominare, perché +questi resterebbero a puntare verso il nulla. Il rifiuto indica quanti record la usano; la scheda **Usato da** della [sua pagina](credentials/credential-page.html) li elenca. Puntali prima verso un'altra credenziale, poi eliminala o rinominala. diff --git a/i18n/it/_configure/credentials/credential-page.md b/i18n/it/_configure/credentials/credential-page.md index c22ca61..ed3f5d7 100644 --- a/i18n/it/_configure/credentials/credential-page.md +++ b/i18n/it/_configure/credentials/credential-page.md @@ -3,7 +3,7 @@ layout: default title: "La pagina di una credenziale" parent: Credenziali nav_order: 3 -translated_from: 0269b5c0d313622bea6c910b96231f41ffd852d7 +translated_from: 204eca949763c8c23625369f1d8d8d0d06545c87 --- # La pagina di una credenziale @@ -20,7 +20,7 @@ La pagina di una credenziale mostra i passaggi della sua finestra di dialogo com | Tipo | A cosa serve la credenziale. | | Accesso | Ogni campo del suo tipo, come nel passaggio **Accesso** della finestra di dialogo: l'utente, la password, e dove accede (host e porta, il database, il server mail, i server della directory, il tenant o l'issuer, l'indirizzo del server e il suo TLS). Per una credenziale CyberArk, l'AppID, il certificato client e la chiave. | | Archivio | Database o Archivio di segreti, e l'archivio e il riferimento. Non per CyberArk né per HashiCorp Vault. | -| Usato da | Tutto ciò che indica questa credenziale: archivi di segreti, canali di notifica, repository, directory LDAP, provider SSO, runner, l'assistente chat, i moduli e i workflow del designer. Una riga lo apre. | +| Usato da | Tutto ciò che indica questa credenziale: archivi di segreti, canali di notifica, repository, directory LDAP, provider SSO, runner, [database](../databases.html) (dalla 7.5.0), l'assistente chat, i moduli e i workflow del designer. Una riga lo apre. | La password si digita nella scheda **Accesso**, e una volta salvata non viene più mostrata: se la lasci vuota, resta quella salvata. Per una credenziale CyberArk, lascia vuota la chiave client per mantenere quella salvata. In alto a destra ci sono **Testa connessione** (solo credenziali database), diff --git a/i18n/it/_configure/credentials/types.md b/i18n/it/_configure/credentials/types.md index 0c63ebb..a6ce39e 100644 --- a/i18n/it/_configure/credentials/types.md +++ b/i18n/it/_configure/credentials/types.md @@ -3,7 +3,7 @@ layout: default title: Tipi di credenziale parent: Credenziali nav_order: 1 -translated_from: 1f21f8fc1ae73953922d8c9f21de6db05b3b1a87 +translated_from: 2782b0144b1442eceb8684fb1407827cef5fde8f --- # Tipi di credenziale @@ -27,7 +27,7 @@ Il tipo dice a cosa serve una credenziale. Decide quali campi chiede la finestra | SSH | Un utente e una password per SSH verso un server, con il suo host e la sua porta | Playbook, tramite le `credentials` di un modulo, `ansibleCredentials` o un campo credenziale, e l'accesso di un nodo di workflow | | Git | Un utente e una password o un token per repository git | [Repository](../repositories/authentication.html) | | API | Un utente e una password o un token per una API REST | [Espressioni REST](../expressions/credentials.html), il token di un bot Telegram, il bearer token di un webhook, la chiave API dell'assistente chat | -| Database | Un accesso a un database, con il suo tipo, host, porta e nome del database | Query dei moduli (`dbConfig`) e `fnCredentials`; si può testare | +| Database | Un accesso a un database, con il suo tipo, host, porta e nome del database | Un [database](../databases.html) che i moduli interrogano (`dbConfig`), dalla 7.5.0, o direttamente il `dbConfig` di un modulo; `fnCredentials`; si può testare | | CyberArk | L'indirizzo del CyberArk Central Credential Provider (CCP) e il suo TLS, e l'AppID, il certificato client e la chiave con cui accede un archivio CyberArk | Un archivio di segreti [CyberArk](../secret-stores/cyberark.html) | | SMTP | Un server mail, la sua porta e il TLS, e il suo accesso (nessuno per un relay) | Un [canale di notifica](../notification-channels.html) mail | | LDAP | I server di una directory, la porta, il TLS e i certificati, e il suo bind DN e la password | Una [directory LDAP](../authentication/ldap.html) | @@ -39,7 +39,8 @@ Il tipo dice a cosa serve una credenziale. Decide quali campi chiede la finestra | Jenkins | Un utente, il suo token API e l'indirizzo di un Jenkins | Un runner Jenkins | | HashiCorp Vault | Il token e l'indirizzo con cui accede un archivio Vault | Un archivio di segreti [HashiCorp Vault](../secret-stores/hashicorp-vault.html) | -Una credenziale database può essere di tipo MySQL, MSSQL, PostgreSQL, Oracle o MongoDB. +Una credenziale database può essere di tipo MySQL, MSSQL, PostgreSQL, Oracle o MongoDB. Dalla 7.5.0 viene scelta da un database di +[Connessioni > Database](../databases.html), e l'aggiornamento alla 7.5.0 crea un database per ognuna, con lo stesso nome. Nell'API e nel [config seed](../seed/), i tipi sono `userpass`, `ssh`, `git`, `api`, `database`, `cyberark`, `smtp`, `ldap`, `entraid`, `oidc`, `rte`, `awx`, `aap`, `ascender`, `semaphore`, `rundeck`, `jenkins` e `vault`. L'aggiornamento dalla 6 diff --git a/i18n/it/_configure/customization/index.md b/i18n/it/_configure/customization/index.md index 12a1d17..5e73821 100644 --- a/i18n/it/_configure/customization/index.md +++ b/i18n/it/_configure/customization/index.md @@ -1,11 +1,11 @@ --- layout: default title: Variabili d'ambiente -nav_order: 8 +nav_order: 9 has_children: true has_toc: false permalink: /customization/ -translated_from: fd6e83f3550f59aa576c8addaf28bfa6115b96a0 +translated_from: e0bc1d7c5bd2df4a3f9036a2d9413a276b228156 --- # Variabili d'ambiente diff --git a/i18n/it/_configure/databases.md b/i18n/it/_configure/databases.md new file mode 100644 index 0000000..7a83b53 --- /dev/null +++ b/i18n/it/_configure/databases.md @@ -0,0 +1,150 @@ +--- +layout: default +title: Database +nav_order: 7 +has_children: true +has_toc: false +permalink: /databases.html +translated_from: 7c14f8dd95d2314974c54a3f2c5aba279410d822 +--- + +# Database +{: .no_toc } + +I database che i moduli interrogano, ognuno con la sua credenziale +{: .fs-6 .fw-300 } + +1. TOC +{:toc} + +--- + +Per gli amministratori: dai un nome ai database che i tuoi moduli interrogano, scegli la credenziale con cui si connette ognuno, e testali. + +--- + +## In questa sezione + +| Pagina | Cosa tratta | +|---|---| +| [La pagina dei database](databases/list.html) | La lista dei database, le sue colonne, e la finestra di dialogo che ne aggiunge uno | +| [La pagina di un database](databases/database-page.html) | Le schede di un database, i moduli che lo interrogano, Testa connessione ed Elimina | +| [I database nei moduli](databases/in-forms.html) | Come il `dbConfig` di un campo indica un database, e i moduli scritti prima della 7.5.0 | + +--- + +## Come funziona + +Dalla 7.5.0 un **database** è una connessione a sé, aggiunta in **Connessioni > Database**, tra **Archivi di segreti** e **Runner**. +Ha tre elementi: + +| Campo | Cos'è | +|---|---| +| Nome | Il nome che il `dbConfig` di un campo indica per interrogarlo, come `cmdb` | +| Descrizione | A cosa serve | +| Credenziale | La credenziale di [Connessioni > Credenziali](credentials.html), di tipo **Database**, con cui si connette | + +La credenziale conserva tutto ciò che riguarda la connessione, come prima: il tipo di database (MySQL, MSSQL, PostgreSQL, Oracle o MongoDB), +l'host e la porta, il nome del database, il TLS, e l'utente e la password, conservati cifrati o letti da un [archivio di segreti](secret-stores/). +Un database non ha né indirizzo né segreto propri, così un database e un runner scelgono la loro credenziale allo stesso modo. + +Un campo interroga un database indicandolo nel `dbConfig`: + +```yaml +- name: city + type: enum + dbConfig: cmdb # a database of Connections > Databases + query: select name from cmdb.city +``` + +Un nome che non è un database viene cercato come credenziale di tipo database, come prima della 7.5.0, così i moduli più vecchi continuano +a funzionare senza modifiche (vedi [I database nei moduli](databases/in-forms.html)). + +--- + +## Aggiornare alla 7.5.0 + +L'aggiornamento riempie **Connessioni > Database** una sola volta, così i moduli che hai continuano a funzionare senza modifiche. + +Crea un database per ogni credenziale di tipo database, con il nome e la descrizione della credenziale, connesso con quella +credenziale. Un modulo il cui `dbConfig` indica la credenziale trova ora il database con lo stesso nome, che si connette con la stessa +credenziale: il risultato è lo stesso. Le credenziali mantengono tutti i loro campi. + +L'aggiornamento viene eseguito una sola volta: un database eliminato in seguito non viene ricreato, e una credenziale database aggiunta +più tardi non riceve nessun database finché non ne aggiungi uno. + +--- + +## Credenziali in uso + +Una credenziale con cui si connette un database è in uso, come quella con cui accede un runner. + +Non si può eliminare né rinominare finché un database la indica, e la scheda **Usato da** della sua pagina elenca i database (vedi +[Credenziali in uso](credentials.html#credentials-in-use)). Eliminare un database lascia la sua credenziale com'è. + +--- + +## Chi gestisce i database + +I database seguono le opzioni di ruolo delle credenziali che indicano. + +La lista, la pagina di un database e la sua API richiedono l'opzione di ruolo `showSettings` o `showConnectionsSettings`, come le credenziali. +Solo un admin può far connettere un database con una credenziale che solo un admin può indicare, come una che legge la sua password da un +archivio di segreti (vedi [Chi può modificare una credenziale](credentials.html#who-may-change-a-credential)): i moduli che lo interrogano +si connetterebbero con quella credenziale, e **Testa connessione** invierebbe il suo segreto al suo server. Un altro utente può salvare di +nuovo un database con la credenziale che indica già. + +Un database dichiarato nel [config seed](seed/) è in sola lettura nella sua pagina: modificalo invece nel file del seed. + +--- + +## Il config seed + +Un seed dichiara i suoi database in una sezione `databases:`, dopo le credenziali che indicano. + +Ogni elemento ha un `name`, una `credential` di tipo database e, facoltativamente, una `description`. La credenziale può venire dalla +sezione `credentials` dello stesso seed o essere una creata nell'app: + +```yaml +credentials: + items: + - name: cmdb-login + credential_type: database + db_type: mysql + host: cmdb.example.com + port: 3306 + user: svc_forms + password: ${SEED_CMDB_PW} + +databases: + items: + - name: cmdb # the name a field's dbConfig gives + description: The CMDB + credential: cmdb-login # a credential of type database +``` + +Vedi l'[esempio](seed/example.html) completo e [Oggetti gestiti](seed/managed-objects.html) per come il seed possiede ciò che dichiara. + +--- + +## L'API REST + +Gli script gestiscono i database tramite l'[API REST](api/), sotto `/api/v2/database`, con le stesse opzioni di ruolo della pagina. + +| Chiamata | Cosa fa | +|---|---| +| `GET /api/v2/database` | Elenca i database, ognuno con il tipo di database, il database, l'host e la porta della sua credenziale, e quanti moduli lo interrogano (`used_by_count`) | +| `GET /api/v2/database?name=` | Restituisce il database con quel nome | +| `GET /api/v2/database/` | Restituisce un database | +| `POST /api/v2/database` | Aggiunge un database: il suo `name`, la `credential` e, facoltativamente, la `description` | +| `PUT /api/v2/database/` | Modifica un database | +| `DELETE /api/v2/database/` | Elimina un database; la sua credenziale resta | +| `POST /api/v2/database//check` | Testa la sua connessione, con la sua credenziale | + +```bash +curl -X POST https://forms.example.com/api/v2/database \ + -H "Authorization: Bearer " -H "Content-Type: application/json" \ + -d '{ "name": "cmdb", "description": "The CMDB", "credential": "cmdb-login" }' +``` + +Una `credential` che non esiste, o che non è di tipo database, viene rifiutata con `400`. Ogni modifica viene scritta nel registro di audit. diff --git a/i18n/it/_configure/databases/database-page.md b/i18n/it/_configure/databases/database-page.md new file mode 100644 index 0000000..e73db55 --- /dev/null +++ b/i18n/it/_configure/databases/database-page.md @@ -0,0 +1,61 @@ +--- +layout: default +title: "La pagina di un database" +parent: Database +nav_order: 2 +translated_from: b027ce5ca33397772148bb221bd9eaab4984f276 +--- + +# La pagina di un database +{: .no_toc } + +Le schede, i moduli che lo interrogano, il test e l'eliminazione +{: .fs-6 .fw-300 } + +1. TOC +{:toc} + +--- + +## Schede + +La pagina di un database mostra i passaggi della sua finestra di dialogo come schede, più i moduli che lo interrogano: + +| Scheda | Cosa contiene | +|---|---| +| Dettagli | Il **Nome**, quello che indica il `dbConfig` di un campo, e la **Descrizione** | +| Credenziali | La **Credenziale** con cui si connette, una credenziale di Connessioni > Credenziali di tipo **Database**, che contiene il tipo di database, l'host, la porta, il database, il TLS e l'accesso | +| Usato da | I moduli che lo interrogano, con il conteggio sulla scheda, vedi [Usato da](#used-by) | + +Ogni scheda ha il suo indirizzo, come `/settings/databases//used-by`, così un collegamento o un segnalibro la apre. La ricerca della riga del +titolo filtra tutte le schede insieme. + +Nella scheda **Credenziali**, **Aggiungi credenziale** crea una nuova credenziale di tipo **Database** e la sceglie. Una password, una volta salvata, +non viene più mostrata: cambiala sulla credenziale. + +--- + +## Usato da + +La scheda **Usato da** elenca i moduli i cui campi interrogano il database, come l'app li legge dai moduli. + +| Colonna | Cosa mostra | +|---|---| +| Modulo | Il modulo, una riga lo apre | +| Descrizione | La descrizione del modulo | +| Campo | I campi di quel modulo il cui `dbConfig` indica il database | + +Un campo conta quando il suo `dbConfig` indica il database, o indica la sua credenziale, come fa un modulo scritto prima della 7.5.0. Entrambi +si connettono con la stessa credenziale, quindi entrambi sono elencati. Quando non ce n'è nessuno, la scheda dice **Nessun formulario interroga questo database.** + +--- + +## Testa connessione ed Elimina + +I pulsanti in alto a destra agiscono sul database così come è salvato. + +**Testa connessione** si connette con la sua credenziale ed esegue la query minima del suo tipo di database, poi lo dice in un messaggio, +**Connessione <name> OK**, o perché non è riuscito. È lo stesso test del **Testa connessione** della credenziale stessa. + +**Elimina** chiede prima, poi elimina il database e torna alla lista. La sua credenziale resta in **Connessioni > Credenziali**. +Accanto a questi, **Salva** salva le schede Dettagli e Credenziali. diff --git a/i18n/it/_configure/databases/in-forms.md b/i18n/it/_configure/databases/in-forms.md new file mode 100644 index 0000000..7141a2d --- /dev/null +++ b/i18n/it/_configure/databases/in-forms.md @@ -0,0 +1,77 @@ +--- +layout: default +title: I database nei moduli +parent: Database +nav_order: 3 +translated_from: 44e424afaa9938d1bcdb9277d2b7d8e5fefee64e +--- + +# I database nei moduli +{: .no_toc } + +Come il dbConfig di un campo indica un database +{: .fs-6 .fw-300 } + +1. TOC +{:toc} + +--- + +## Indicare un database + +Un campo con una `query` la esegue sul database indicato dal suo `dbConfig`. + +```yaml +- name: datacenter + type: enum + dbConfig: cmdb # a database of Connections > Databases + query: select name from cmdb.datacenter +``` + +Dalla 7.5.0 il nome viene cercato in quest'ordine: + +| Ordine | Il nome è | La query si connette con | +|---|---|---| +| 1 | Un database di **Connessioni > Database** | La credenziale indicata da quel database | +| 2 | Altrimenti una credenziale di tipo **Database** di **Connessioni > Credenziali** | Quella credenziale, come prima della 7.5.0 | + +Il tipo di database (MySQL, MSSQL, PostgreSQL, Oracle o MongoDB) viene dalla credenziale, quindi il modulo non lo indica mai. Una credenziale +senza tipo viene letta come MySQL. + +--- + +## I moduli scritti prima della 7.5.0 + +Ogni modulo che indicava una credenziale nel `dbConfig` continua a funzionare, senza modifiche. + +L'[aggiornamento alla 7.5.0](../databases.html#upgrading-to-750) crea un database per ogni credenziale database, con lo stesso nome e +connesso con quella credenziale, così il nome che indica un modulo trova ora prima il database, che porta allo stesso accesso. Una credenziale +di tipo database senza un database con il suo nome viene ancora trovata dal passo 2. + +Un database e una credenziale possono condividere un nome, come fa l'aggiornamento. Vince il database: puntalo verso un'altra credenziale e ogni +modulo che indica quel nome lo segue, ed è così che un modulo passa a un altro server senza essere modificato. + +--- + +## Le forme di dbConfig + +Le tre forme che `dbConfig` ha sempre accettato funzionano ancora, ogni nome cercato come sopra. + +| `dbConfig` | Esempio | Cosa fa | +|---|---|---| +| Un nome | `dbConfig: cmdb` | Interroga quel database | +| Una lista di nomi | `dbConfig: [cmdb-eu, cmdb-us]` | Esegue la query su ognuno e unisce i risultati; i doppioni non vengono rimossi | +| Un oggetto (legacy) | `dbConfig: { name: cmdb, type: mysql }` | Interroga il database o la credenziale `name`; deprecato, usa solo il nome | + +Un riferimento a un [archivio di segreti](../secret-stores/#inline-without-a-credential-row), come `dbConfig: secret:vault:secret/cmdb/db`, non è +né un nome di database né un nome di credenziale, e viene ancora letto dall'archivio come prima. + +--- + +## Quali moduli interrogano un database + +L'app legge i moduli per sapere quali di essi interrogano ogni database. + +La colonna **Usato da** della [pagina dei database](list.html) li conta, e la scheda **Usato da** della +[pagina di un database](database-page.html#used-by) li elenca con i loro campi. Conta anche un campo che indica invece la credenziale del +database. Rinomina un database solo dopo aver modificato i moduli che indicano il suo vecchio nome. diff --git a/i18n/it/_configure/databases/list.md b/i18n/it/_configure/databases/list.md new file mode 100644 index 0000000..deb4709 --- /dev/null +++ b/i18n/it/_configure/databases/list.md @@ -0,0 +1,64 @@ +--- +layout: default +title: La pagina dei database +parent: Database +nav_order: 1 +translated_from: 66ffec0a34395642b0208e81078dbc725bdc7123 +--- + +# La pagina dei database +{: .no_toc } + +La lista dei database, le sue colonne, e come aggiungerne uno +{: .fs-6 .fw-300 } + +1. TOC +{:toc} + +--- + +## La lista + +La pagina in **Connessioni > Database** elenca ogni database con queste colonne: + +| Colonna | Significato | +|---|---| +| Nome | Come lo indicano i moduli, con `dbConfig: ` | +| Descrizione | A cosa serve | +| Tipo database | Quello della sua credenziale: MySQL, MSSQL, PostgreSQL, Oracle o MongoDB | +| Database | Il database che apre la sua credenziale | + +**Colonne** ne aggiunge altre due, disattivate per impostazione predefinita: **Host**, dove si connette la sua credenziale, con la porta quando +ne ha una, e **Usato da**, quanti moduli lo interrogano, con il suo nome o con quello della sua credenziale (vedi [Usato da](database-page.html#used-by)). + +Il tipo di database, il database e l'host vengono letti dalla credenziale: modificali sulla credenziale, in +**Connessioni > Credenziali**. Nessuna colonna mostra un utente o una password. + +--- + +## Aggiungere un database + +**Aggiungi database** apre una finestra di dialogo in due passaggi, come quella di un runner. + +| Passaggio | Campi | +|---|---| +| Database | **Nome** e **Descrizione**. Il nome è obbligatorio, e unico | +| Credenziali | **Credenziale**, obbligatoria: una credenziale di tipo **Database**. Vengono proposte solo queste | + +Nel passaggio **Credenziali**, **Aggiungi credenziale** apre la finestra di dialogo di una nuova credenziale di tipo **Database** (vedi +[La pagina delle credenziali](../credentials/list.html)) e la sceglie una volta salvata, così un database e il suo accesso si possono aggiungere in una volta. + +--- + +## Il menu della riga + +Una riga apre la pagina del database, e il suo menu offre: + +| Azione | Cosa fa | +|---|---| +| Modifica | Apre la sua pagina | +| Testa connessione | Si connette con la sua credenziale ed esegue la query minima del suo tipo di database, e dice se ha funzionato | +| Elimina | Elimina il database, dopo una conferma. La sua credenziale resta | + +Eliminare un database che dei moduli indicano ancora fa fallire le loro query, a meno che non resti una credenziale con lo stesso nome a cui +ricorrere (vedi [I database nei moduli](in-forms.html)). Controlla prima la sua scheda **Usato da**. diff --git a/i18n/it/_configure/disclaimer.md b/i18n/it/_configure/disclaimer.md index 25405f6..a762090 100644 --- a/i18n/it/_configure/disclaimer.md +++ b/i18n/it/_configure/disclaimer.md @@ -1,11 +1,11 @@ --- layout: default title: Disclaimer -nav_order: 7 +nav_order: 8 has_children: true has_toc: false permalink: /disclaimer.html -translated_from: a22b56db001904583c51e6bd28f1281737f32a32 +translated_from: ad00bcbac9d3c64c103b15d26914eec84174f6b6 --- # Disclaimer diff --git a/i18n/it/_configure/notification-channels.md b/i18n/it/_configure/notification-channels.md index ce4c96b..d3824a9 100644 --- a/i18n/it/_configure/notification-channels.md +++ b/i18n/it/_configure/notification-channels.md @@ -1,11 +1,11 @@ --- layout: default title: Canali di notifica -nav_order: 9 +nav_order: 10 has_children: true has_toc: false permalink: /notification-channels.html -translated_from: 1488a67f6f281b0236e4bad3a8b3d0c3bb32326c +translated_from: 1756db6ff7b9197f88b34a0c089953a68493e008 --- # Canali di notifica diff --git a/i18n/it/_configure/production/index.md b/i18n/it/_configure/production/index.md index 8a5ba34..4224297 100644 --- a/i18n/it/_configure/production/index.md +++ b/i18n/it/_configure/production/index.md @@ -1,11 +1,11 @@ --- layout: default title: In produzione -nav_order: 12 +nav_order: 13 has_children: true has_toc: false permalink: /production/ -translated_from: 2d7f4be84a76837fae34c1b414a229448bfae4ea +translated_from: 9f501893a2c4476707ac2f11f25e67998200e9e7 --- # In produzione diff --git a/i18n/it/_configure/rte/index.md b/i18n/it/_configure/rte/index.md index 4a67a8f..2618aa3 100644 --- a/i18n/it/_configure/rte/index.md +++ b/i18n/it/_configure/rte/index.md @@ -1,11 +1,11 @@ --- layout: default title: RTE -nav_order: 10 +nav_order: 11 has_children: true has_toc: false permalink: /rte/ -translated_from: 2c3f3f81ad8faaf18eac56f18782ef5f78111b04 +translated_from: 75a4facc8ad51d9d74b8fccfd2bbfd7ba48b17f9 --- # Ambienti di esecuzione (RTE) diff --git a/i18n/it/_configure/runners.md b/i18n/it/_configure/runners.md index 1b85f09..8fa10b6 100644 --- a/i18n/it/_configure/runners.md +++ b/i18n/it/_configure/runners.md @@ -1,11 +1,11 @@ --- layout: default title: Runner -nav_order: 11 +nav_order: 12 has_children: true has_toc: false permalink: /runners.html -translated_from: 339eda183d7748fa923090d9f8e26e2f112b1352 +translated_from: e6663cf2e7dc14a1559383c7f49fd968a4cbf635 --- # Runner diff --git a/i18n/it/_configure/secret-stores/index.md b/i18n/it/_configure/secret-stores/index.md index 45b6725..eea81fd 100644 --- a/i18n/it/_configure/secret-stores/index.md +++ b/i18n/it/_configure/secret-stores/index.md @@ -1,11 +1,11 @@ --- layout: default title: Archivi di segreti -nav_order: 13 +nav_order: 14 has_children: true has_toc: false permalink: /secret-stores/ -translated_from: 595f94a84c4e8182b1b79289eb309a814dec1287 +translated_from: c7e5d9fb5e640896bd51e3fa20d76be092857ce2 --- # Archivi di segreti @@ -95,6 +95,9 @@ fn.fnCredentials('vault:secret/myapp/prod') // the store named `vault` dbConfig: secret:vault:secret/cmdb/db ``` +Dalla 7.5.0 un `dbConfig` indica prima un [database](../databases.html); un riferimento come questo non è un database, quindi viene ancora letto +dall'archivio. Anche un database può leggere il suo accesso da un archivio, tramite una credenziale di tipo database che ne usa uno. + Senza una riga di credenziale, un segreto di database richiede almeno un `db_type` e un host, per esempio: ```json diff --git a/i18n/it/_configure/security/index.md b/i18n/it/_configure/security/index.md index f35a365..8e1d533 100644 --- a/i18n/it/_configure/security/index.md +++ b/i18n/it/_configure/security/index.md @@ -1,11 +1,11 @@ --- layout: default title: Sicurezza -nav_order: 14 +nav_order: 15 has_children: true has_toc: false permalink: /security/ -translated_from: f2b18fd1638cb4ccb2401652eafb82e6ce0e82eb +translated_from: e299ab0a4ffb1c12441a3b3fec6eaaef4a19de79 --- # Sicurezza diff --git a/i18n/it/_configure/seed/example.md b/i18n/it/_configure/seed/example.md index edc1686..a0fedff 100644 --- a/i18n/it/_configure/seed/example.md +++ b/i18n/it/_configure/seed/example.md @@ -3,7 +3,7 @@ layout: default title: Esempio parent: Config seed nav_order: 1 -translated_from: f085641a12234a5485ea59e73e76c29e7452d5e9 +translated_from: cf1f2b0122ca5cd2dfcc411e4ed20fb683b079bf --- # Esempio @@ -72,6 +72,12 @@ credentials: user: svc_forms # leave user and password out for a relay password: ${SEED_SMTP_PW} +databases: # from 7.5.0 + items: + - name: production-db # the name a field's dbConfig gives + description: The CMDB + credential: production-db # a credential of the credentials section, of type database + repositories: prune: true items: @@ -209,3 +215,6 @@ validazione del seed. Un RTE in modalità database può registrarsi da solo prima che il seed venga applicato. Un runner RTE del seed il cui `uri` è l'indirizzo con cui un RTE del genere si è registrato **adotta** quella riga: prende il nome e i campi dichiarati, e il worker non lo rimuove più quando l'RTE smette di rispondere, invece di avere un secondo runner per lo stesso RTE. + +Dalla 7.5.0 la sezione `databases` dichiara i [database](../databases.html) che i moduli interrogano. Un elemento ha un `name`, una `credential` +di tipo database e una `description` facoltativa; il seed lo applica dopo le credenziali, e rifiuta una credenziale di un altro tipo. diff --git a/i18n/it/_configure/seed/index.md b/i18n/it/_configure/seed/index.md index 664dfce..b5c8eae 100644 --- a/i18n/it/_configure/seed/index.md +++ b/i18n/it/_configure/seed/index.md @@ -5,7 +5,7 @@ nav_order: 4 has_children: true has_toc: false permalink: /seed/ -translated_from: 030ff83b1d7c3920600b7e0668b05ab24b949b67 +translated_from: 8f8eb798f4ada177abf5210049a523f7f2f4265b --- # Config seed @@ -33,6 +33,7 @@ dichiara oggetti che prima esistevano solo nel database: | `runners` | Dove girano i job: RTE, AWX / AAP / Ascender, Semaphore, Rundeck, Jenkins | | `secret_stores` | Archivi di segreti (HashiCorp Vault, ...) | | `credentials` | Credenziali | +| `databases` | I database che i moduli interrogano, ognuno con la sua credenziale, dalla 7.5.0 | | `oauth2` | Provider SSO: Entra ID e OIDC | | `repositories` | Repository git | | `syslog_servers` | I server syslog che ricevono il log del server e le voci di audit | diff --git a/i18n/it/_configure/users-and-groups.md b/i18n/it/_configure/users-and-groups.md index 57d3f5c..e242e09 100644 --- a/i18n/it/_configure/users-and-groups.md +++ b/i18n/it/_configure/users-and-groups.md @@ -1,11 +1,11 @@ --- layout: default title: Utenti e gruppi -nav_order: 15 +nav_order: 16 has_children: true has_toc: false permalink: /users-and-groups.html -translated_from: 8ed4dc089c64e091636c29884af1cd1002eb40aa +translated_from: 07178b6b66a60d91e5a8ff3c417da3771730bc5e --- # Utenti e gruppi diff --git a/i18n/it/_reference/faq.md b/i18n/it/_reference/faq.md index 582f78b..97325d2 100644 --- a/i18n/it/_reference/faq.md +++ b/i18n/it/_reference/faq.md @@ -2,7 +2,7 @@ layout: default title: FAQ nav_order: 2 -translated_from: 6616eaf626411a615cb68d8cc4f2a43401fe21d9 +translated_from: 487a25c7f3b24b3a0c0d4df08c858a52d48f8556 --- # Domande frequenti @@ -171,11 +171,11 @@ L'applicazione web client rivaluta i campi ogni 100 ms; con i processori attuali > Un riferimento a un altro campo enum restituisce i valori selezionati, **non** l'intero elenco del menu a tendina. Usa la proprietà `placeholderColumn` o la notazione a punti come `$(city.name)`. > **Novità della v4.0.20**: impostare placeholderColumn su "*" restituisce l'intero record invece di una singola colonna. +Gli esempi interrogano `CONN1`, un [database](databases.html) di Connessioni > Database (dalla 7.5.0) o una credenziale di tipo database. + ```yaml - type: enum - dbConfig: - name: CONN1 - type: mysql + dbConfig: CONN1 query: select name from cmdb.city name: city_name label: Select a city @@ -184,9 +184,7 @@ L'applicazione web client rivaluta i campi ogni 100 ms; con i processori attuali model: cmdb.city group: CMDB - type: enum - dbConfig: - name: CONN1 - type: mysql + dbConfig: CONN1 query: select datacenter.name from cmdb.datacenter,cmdb.city where datacenter.city_id=city.id and city.name='$(city_name)' name: datacenter_name @@ -201,9 +199,7 @@ L'applicazione web client rivaluta i campi ogni 100 ms; con i processori attuali # or use the placeholderColumn property - type: enum - dbConfig: - name: CONN1 - type: mysql + dbConfig: CONN1 query: select id,name,description from cmdb.city name: city label: Select a city @@ -218,9 +214,7 @@ L'applicazione web client rivaluta i campi ogni 100 ms; con i processori attuali - name - description - type: enum - dbConfig: - name: CONN1 - type: mysql + dbConfig: CONN1 query: select name, capacity_pct from cmdb.datacenter where datacenter.city_id=$(city) # this cascaded dropdown will react using "id" as placeholder # or "query":"select name from cmdb.datacenter where datacenter.city_id=$(city.id)", diff --git a/i18n/ja/_build_forms/expressions/placeholders.md b/i18n/ja/_build_forms/expressions/placeholders.md index ee6b0fa..3507fe2 100644 --- a/i18n/ja/_build_forms/expressions/placeholders.md +++ b/i18n/ja/_build_forms/expressions/placeholders.md @@ -3,7 +3,7 @@ layout: default title: プレースホルダー parent: 式 nav_order: 0.5 -translated_from: bd63e437a4f77c707a1bf8d8ee99b1516063b62a +translated_from: 7b1ef975e0d5d92c446f050ffda02ee4acfa97aa --- # プレースホルダー @@ -31,7 +31,7 @@ translated_from: bd63e437a4f77c707a1bf8d8ee99b1516063b62a values: [Amsterdam, Brussels] - name: datacenter type: enum - dbConfig: { name: CMDB, type: mysql } + dbConfig: CMDB # a database of Connections > Databases query: select name from cmdb.datacenter where city='$(city)' ``` @@ -73,7 +73,7 @@ enum に `placeholderColumn: "*"` を設定すると、 `$(field)` は 1 つの ```yaml - name: city type: enum - dbConfig: { name: CMDB, type: mysql } + dbConfig: CMDB query: select id, name from cmdb.city valueColumn: name placeholderColumn: id # $(city) gives the id; $(city.name) still gives the name diff --git a/i18n/ja/_build_forms/formfields/list.md b/i18n/ja/_build_forms/formfields/list.md index 9c9f336..1ebcbfe 100644 --- a/i18n/ja/_build_forms/formfields/list.md +++ b/i18n/ja/_build_forms/formfields/list.md @@ -3,7 +3,7 @@ layout: default title: List parent: フォームフィールド nav_order: 13 -translated_from: b6209effaf1cc9783a27c36669004a239751fb3e +translated_from: c454e7962323f4d82488bbdd30f92a7619162c32 --- # List フィールド @@ -285,6 +285,9 @@ list には 3 種類のソースから事前に値を入れられます。いず query: SELECT hostname, role FROM servers WHERE active = 1 ``` +`dbConfig` は **接続 > データベース** の [データベース](../databases.html) (7.5.0 から)を指定し、それ以外はこれまでどおり種類がデータベースの +認証情報を指定します( [フォームでのデータベース](../databases/in-forms.html) を参照)。 + #### ローカル式から (`runLocal`) ローカル式によってブラウザーで計算した行です。 diff --git a/i18n/ja/_build_forms/formfields/yaml.md b/i18n/ja/_build_forms/formfields/yaml.md index 17ad66c..338f84e 100644 --- a/i18n/ja/_build_forms/formfields/yaml.md +++ b/i18n/ja/_build_forms/formfields/yaml.md @@ -3,7 +3,7 @@ layout: default title: YAML parent: フォームフィールド nav_order: 14 -translated_from: c7439c165a54cf525a91d0458a268a66ee8a136f +translated_from: 8dde3e82c2a53e38adc729f5a8f3764b182718c7 --- # YAML フィールド @@ -152,9 +152,7 @@ translated_from: c7439c165a54cf525a91d0458a268a66ee8a136f label: VLAN # filter available VLANs based on the parent's selected region query: "select id,name from vlans where region='$(__parent__.region)'" - dbConfig: - name: MYDB - type: mysql + dbConfig: MYDB # a database of Connections > Databases valueColumn: id placeholderColumn: name diff --git a/i18n/ja/_configure/credentials.md b/i18n/ja/_configure/credentials.md index e93b50b..70dc404 100644 --- a/i18n/ja/_configure/credentials.md +++ b/i18n/ja/_configure/credentials.md @@ -5,7 +5,7 @@ nav_order: 6 has_children: true has_toc: false permalink: /credentials.html -translated_from: 08110077a1cf59a4a52e078fc2ebc252f7cae48d +translated_from: 0c8fddace3f97bb7d5a3a2642e3fccc296680454 --- # 認証情報 @@ -40,6 +40,9 @@ translated_from: 08110077a1cf59a4a52e078fc2ebc252f7cae48d `ENCRYPTION_SECRET` で暗号化して AnsibleForms のデータベースに保存するか、認証情報が使われるたびに [シークレットストア](secret-stores/) から 読み込みます。 +7.5.0 からは、フォームは **接続 > データベース** の [データベース](databases.html) を照会し、そのデータベースが接続に使う種類が +**データベース** の認証情報を指定します。 `dbConfig` で認証情報そのものを指定するフォームも、これまでどおり動作します。 + --- ## 認証情報を変更できるユーザー @@ -68,6 +71,6 @@ translated_from: 08110077a1cf59a4a52e078fc2ebc252f7cae48d ## 使用中の認証情報 -レコードが指定している認証情報は、削除も名前の変更もできません。そうしたレコードが何も指さない状態になってしまうためです。 +レコード(7.5.0 からは [データベース](databases.html) も含む)が指定している認証情報は、削除も名前の変更もできません。そうしたレコードが何も指さない状態になってしまうためです。 拒否されたときは、その認証情報を使っているレコードの数が示されます。 [認証情報のページ](credentials/credential-page.html) の **使用元** タブに一覧が表示されます。 先にそれらを別の認証情報に向けてから、削除または名前の変更を行ってください。 diff --git a/i18n/ja/_configure/credentials/credential-page.md b/i18n/ja/_configure/credentials/credential-page.md index 71cc0a8..76f69fa 100644 --- a/i18n/ja/_configure/credentials/credential-page.md +++ b/i18n/ja/_configure/credentials/credential-page.md @@ -3,7 +3,7 @@ layout: default title: 認証情報のページ parent: 認証情報 nav_order: 3 -translated_from: 0269b5c0d313622bea6c910b96231f41ffd852d7 +translated_from: 204eca949763c8c23625369f1d8d8d0d06545c87 --- # 認証情報のページ @@ -20,7 +20,7 @@ translated_from: 0269b5c0d313622bea6c910b96231f41ffd852d7 | 種類 | 認証情報の用途。 | | ログイン | ダイアログの **ログイン** ステップと同じく、その種類のすべてのフィールド。ユーザー、パスワード、ログイン先(ホストとポート、データベース、メールサーバー、ディレクトリのサーバー、テナントまたは発行者、サーバーのアドレスとその TLS)。CyberArk 認証情報の場合は AppID、クライアント証明書、キー。 | | 保存先 | データベースまたはシークレットストアと、ストアおよび参照。CyberArk と HashiCorp Vault にはありません。 | -| 使用元 | この認証情報を指定しているすべてのもの。シークレットストア、通知チャネル、リポジトリ、LDAP ディレクトリ、SSO プロバイダー、ランナー、チャットアシスタント、フォーム、デザイナーのワークフロー。行をクリックすると開きます。 | +| 使用元 | この認証情報を指定しているすべてのもの。シークレットストア、通知チャネル、リポジトリ、LDAP ディレクトリ、SSO プロバイダー、ランナー、 [データベース](../databases.html) (7.5.0 から)、チャットアシスタント、フォーム、デザイナーのワークフロー。行をクリックすると開きます。 | パスワードは **ログイン** タブで入力し、一度保存すると二度と表示されません。空のままにすると、保存されているものが残ります。CyberArk 認証情報では、保存されているクライアントキーを残すにはクライアントキーを空のままにします。右上には **接続テスト** (データベースの認証情報のみ)、 diff --git a/i18n/ja/_configure/credentials/types.md b/i18n/ja/_configure/credentials/types.md index a1e5f2d..4366d78 100644 --- a/i18n/ja/_configure/credentials/types.md +++ b/i18n/ja/_configure/credentials/types.md @@ -3,7 +3,7 @@ layout: default title: 認証情報の種類 parent: 認証情報 nav_order: 1 -translated_from: 1f21f8fc1ae73953922d8c9f21de6db05b3b1a87 +translated_from: 2782b0144b1442eceb8684fb1407827cef5fde8f --- # 認証情報の種類 @@ -27,7 +27,7 @@ translated_from: 1f21f8fc1ae73953922d8c9f21de6db05b3b1a87 | SSH | サーバーへの SSH 用のユーザーとパスワード、およびそのホストとポート | フォームの `credentials` 、 `ansibleCredentials` 、または認証情報フィールドを通じたプレイブック、ワークフローノードのログイン | | Git | git リポジトリ用のユーザーとパスワードまたはトークン | [リポジトリ](../repositories/authentication.html) | | API | REST API 用のユーザーとパスワードまたはトークン | [REST 式](../expressions/credentials.html) 、Telegram ボットのトークン、Webhook のベアラートークン、チャットアシスタントの API キー | -| データベース | データベースのログイン。種類、ホスト、ポート、データベース名を含みます | フォームのクエリ( `dbConfig` )と `fnCredentials` 。テストできます | +| データベース | データベースのログイン。種類、ホスト、ポート、データベース名を含みます | フォームが照会する [データベース](../databases.html) ( `dbConfig` 、7.5.0 から)、またはフォームの `dbConfig` から直接。 `fnCredentials` 。テストできます | | CyberArk | CyberArk Central Credential Provider(CCP)のアドレスとその TLS、CyberArk ストアがログインに使う AppID、クライアント証明書、キー | [CyberArk](../secret-stores/cyberark.html) シークレットストア | | SMTP | メールサーバー、そのポートと TLS、ログイン(リレーの場合はなし) | メールの [通知チャネル](../notification-channels.html) | | LDAP | ディレクトリのサーバー、ポート、TLS、証明書、バインド DN とパスワード | [LDAP ディレクトリ](../authentication/ldap.html) | @@ -39,7 +39,8 @@ translated_from: 1f21f8fc1ae73953922d8c9f21de6db05b3b1a87 | Jenkins | Jenkins のユーザー、その API トークンとアドレス | Jenkins ランナー | | HashiCorp Vault | Vault ストアがログインに使うトークンとアドレス | [HashiCorp Vault](../secret-stores/hashicorp-vault.html) シークレットストア | -データベースの認証情報の種類には、MySQL、MSSQL、PostgreSQL、Oracle、MongoDB があります。 +データベースの認証情報の種類には、MySQL、MSSQL、PostgreSQL、Oracle、MongoDB があります。7.5.0 からは +[接続 > データベース](../databases.html) のデータベースがそれを選び、7.5.0 へのアップグレードでは、それぞれに同じ名前のデータベースが一つ作られます。 API と [構成シード](../seed/) では、種類は `userpass` 、 `ssh` 、 `git` 、 `api` 、 `database` 、 `cyberark` 、 `smtp` 、 `ldap` 、 `entraid` 、 `oidc` 、 `rte` 、 `awx` 、 `aap` 、 `ascender` 、 `semaphore` 、 `rundeck` 、 `jenkins` 、 `vault` です。バージョン 6 からの diff --git a/i18n/ja/_configure/customization/index.md b/i18n/ja/_configure/customization/index.md index 20c7151..1485744 100644 --- a/i18n/ja/_configure/customization/index.md +++ b/i18n/ja/_configure/customization/index.md @@ -1,11 +1,11 @@ --- layout: default title: 環境変数 -nav_order: 8 +nav_order: 9 has_children: true has_toc: false permalink: /customization/ -translated_from: fd6e83f3550f59aa576c8addaf28bfa6115b96a0 +translated_from: e0bc1d7c5bd2df4a3f9036a2d9413a276b228156 --- # 環境変数 diff --git a/i18n/ja/_configure/databases.md b/i18n/ja/_configure/databases.md new file mode 100644 index 0000000..947debc --- /dev/null +++ b/i18n/ja/_configure/databases.md @@ -0,0 +1,149 @@ +--- +layout: default +title: データベース +nav_order: 7 +has_children: true +has_toc: false +permalink: /databases.html +translated_from: 7c14f8dd95d2314974c54a3f2c5aba279410d822 +--- + +# データベース +{: .no_toc } + +フォームが照会するデータベース。それぞれがデータベースの認証情報で接続します +{: .fs-6 .fw-300 } + +1. TOC +{:toc} + +--- + +管理者向けです。フォームが照会するデータベースに名前を付け、それぞれが接続に使う認証情報を選び、テストします。 + +--- + +## このセクションの内容 + +| ページ | 内容 | +|---|---| +| [データベースページ](databases/list.html) | データベースのリスト、その列、データベースを追加するダイアログ | +| [データベースのページ](databases/database-page.html) | データベースのタブ、それを照会するフォーム、接続テストと削除 | +| [フォームでのデータベース](databases/in-forms.html) | フィールドの `dbConfig` がデータベースを指定する方法と、7.5.0 より前に書かれたフォーム | + +--- + +## 仕組み + +7.5.0 からは、 **データベース** は独立した接続で、 **接続 > データベース** の **シークレットストア** と **ランナー** の間で追加します。 +データベースは次の三つを持ちます。 + +| フィールド | 内容 | +|---|---| +| 名前 | フィールドの `dbConfig` がそれを照会するために指定する名前。たとえば `cmdb` | +| 説明 | 用途 | +| 認証情報 | 接続に使う、 [接続 > 認証情報](credentials.html) にある種類が **データベース** の認証情報 | + +接続に関するすべては、これまでどおり認証情報が保持します。データベースの種類(MySQL、MSSQL、PostgreSQL、Oracle、MongoDB)、 +ホストとポート、データベース名、TLS、ユーザーとパスワードで、これらは暗号化して保存するか、 [シークレットストア](secret-stores/) から読み込みます。 +データベース自体はアドレスもシークレットも持たないので、データベースとランナーは同じ方法で認証情報を選びます。 + +フィールドは、 `dbConfig` でデータベースを指定して照会します。 + +```yaml +- name: city + type: enum + dbConfig: cmdb # a database of Connections > Databases + query: select name from cmdb.city +``` + +データベースではない名前は、7.5.0 より前と同じく種類がデータベースの認証情報として検索されるので、古いフォームは変更なしで +動作し続けます( [フォームでのデータベース](databases/in-forms.html) を参照)。 + +--- + +## 7.5.0 へのアップグレード + +アップグレードは **接続 > データベース** を一度だけ埋めるので、既存のフォームは変更なしで動作し続けます。 + +種類がデータベースの認証情報ごとに、その認証情報の名前と説明を持ち、その認証情報で接続するデータベースを一つ作ります。 +`dbConfig` で認証情報を指定しているフォームは、同じ名前のデータベースを見つけるようになり、そのデータベースは同じ認証情報で +接続します。結果は同じです。認証情報はすべてのフィールドをそのまま保持します。 + +アップグレードは一度だけ実行されます。その後に削除したデータベースが再び作られることはなく、後から追加したデータベースの認証情報には、 +自分で追加するまでデータベースはありません。 + +--- + +## 使用中の認証情報 + +データベースが接続に使う認証情報は、ランナーがサインインに使う認証情報と同じく使用中になります。 + +データベースがそれを指定している間は、削除も名前の変更もできません。そのページの **使用元** タブにはデータベースが表示されます( +[使用中の認証情報](credentials.html#credentials-in-use) を参照)。データベースを削除しても、その認証情報はそのまま残ります。 + +--- + +## データベースを管理できるユーザー + +データベースは、指定する認証情報のロールオプションに従います。 + +リスト、データベースのページ、その API には、認証情報と同じくロールオプション `showSettings` または `showConnectionsSettings` が必要です。 +管理者だけが指定できる認証情報(パスワードをシークレットストアから読み込むものなど)でデータベースを接続させられるのは管理者だけです +( [認証情報を変更できるユーザー](credentials.html#who-may-change-a-credential) を参照)。それを照会するフォームはその認証情報で接続し、 +**接続テスト** はそのシークレットをサーバーに送るためです。ほかのユーザーも、すでに指定されている認証情報のままデータベースを保存し直すことはできます。 + +[構成シード](seed/) で宣言されたデータベースは、そのページでは読み取り専用です。代わりにシードファイルで変更してください。 + +--- + +## 構成シード + +シードは、 `databases:` セクションでデータベースを宣言します。このセクションは、指定する認証情報の後に適用されます。 + +各項目には `name` 、種類がデータベースの `credential` 、任意で `description` があります。認証情報は同じシードの +`credentials` セクションのものでも、アプリで作成したものでもかまいません。 + +```yaml +credentials: + items: + - name: cmdb-login + credential_type: database + db_type: mysql + host: cmdb.example.com + port: 3306 + user: svc_forms + password: ${SEED_CMDB_PW} + +databases: + items: + - name: cmdb # the name a field's dbConfig gives + description: The CMDB + credential: cmdb-login # a credential of type database +``` + +完全な [例](seed/example.html) と、シードが宣言したものをどう管理するかについては [管理対象オブジェクト](seed/managed-objects.html) を参照してください。 + +--- + +## REST API + +スクリプトは、ページと同じロールオプションで、 `/api/v2/database` の下の [REST API](api/) を通じてデータベースを管理します。 + +| 呼び出し | 動作 | +|---|---| +| `GET /api/v2/database` | データベースを一覧表示します。それぞれに認証情報のデータベースの種類、データベース、ホスト、ポートと、それを照会するフォームの数( `used_by_count` )が付きます | +| `GET /api/v2/database?name=` | その名前のデータベースを取得します | +| `GET /api/v2/database/` | 一つのデータベースを取得します | +| `POST /api/v2/database` | データベースを追加します。 `name` 、 `credential` 、任意で `description` | +| `PUT /api/v2/database/` | データベースを変更します | +| `DELETE /api/v2/database/` | データベースを削除します。その認証情報は残ります | +| `POST /api/v2/database//check` | その認証情報で接続をテストします | + +```bash +curl -X POST https://forms.example.com/api/v2/database \ + -H "Authorization: Bearer " -H "Content-Type: application/json" \ + -d '{ "name": "cmdb", "description": "The CMDB", "credential": "cmdb-login" }' +``` + +存在しない `credential` 、または種類がデータベースではない `credential` は `400` で拒否されます。すべての変更は監査ログに記録されます。 diff --git a/i18n/ja/_configure/databases/database-page.md b/i18n/ja/_configure/databases/database-page.md new file mode 100644 index 0000000..82e3c7e --- /dev/null +++ b/i18n/ja/_configure/databases/database-page.md @@ -0,0 +1,61 @@ +--- +layout: default +title: データベースのページ +parent: データベース +nav_order: 2 +translated_from: b027ce5ca33397772148bb221bd9eaab4984f276 +--- + +# データベースのページ +{: .no_toc } + +データベースのタブ、それを照会するフォーム、接続テストと削除 +{: .fs-6 .fw-300 } + +1. TOC +{:toc} + +--- + +## タブ + +データベースのページには、ダイアログのステップがタブとして表示され、さらにそれを照会するフォームも表示されます。 + +| タブ | 内容 | +|---|---| +| 詳細 | **名前** (フィールドの `dbConfig` が指定する名前)と **説明** | +| 認証情報 | 接続に使う **認証情報** 。接続 > 認証情報 にある種類が **データベース** の認証情報で、データベースの種類、ホスト、ポート、データベース、TLS、ログインを保持します | +| 使用元 | それを照会するフォーム。タブには件数が表示されます。 [使用元](#used-by) を参照 | + +各タブには `/settings/databases//used-by` のような独自のアドレスがあるので、リンクやブックマークでそのタブを開けます。タイトル行の +検索は、すべてのタブを一度に絞り込みます。 + +**認証情報** タブの **認証情報を追加** は、種類が **データベース** の新しい認証情報を作成し、それを選択します。パスワードは一度保存すると +二度と表示されません。変更は認証情報で行ってください。 + +--- + +## 使用元 + +**使用元** タブには、フィールドがデータベースを照会するフォームが、アプリがフォームから読み取ったとおりに表示されます。 + +| 列 | 表示するもの | +|---|---| +| フォーム | フォーム。行をクリックすると開きます | +| 説明 | フォームの説明 | +| フィールド | そのフォームのフィールドのうち、 `dbConfig` がデータベースを指定しているもの | + +フィールドの `dbConfig` がデータベースを指定している場合、または 7.5.0 より前に書かれたフォームのようにその認証情報を指定している場合に +数えられます。どちらも同じ認証情報で接続するので、どちらも表示されます。ない場合、タブには **このデータベースを照会するフォームはありません。** と表示されます。 + +--- + +## 接続テストと削除 + +右上のボタンは、保存されている状態のデータベースに対して動作します。 + +**接続テスト** は認証情報で接続し、そのデータベースの種類の最小のクエリを実行して、その結果をメッセージで示します: +**<name> connection ok** 、または失敗した理由です。認証情報自体の **接続テスト** と同じテストです。 + +**削除** は確認の後、データベースを削除してリストに戻ります。その認証情報は **接続 > 認証情報** に残ります。 +その隣の **保存** は、詳細タブと認証情報タブを保存します。 diff --git a/i18n/ja/_configure/databases/in-forms.md b/i18n/ja/_configure/databases/in-forms.md new file mode 100644 index 0000000..934608c --- /dev/null +++ b/i18n/ja/_configure/databases/in-forms.md @@ -0,0 +1,77 @@ +--- +layout: default +title: フォームでのデータベース +parent: データベース +nav_order: 3 +translated_from: 44e424afaa9938d1bcdb9277d2b7d8e5fefee64e +--- + +# フォームでのデータベース +{: .no_toc } + +フィールドの dbConfig がデータベースを指定する方法と、古いフォームの互換性 +{: .fs-6 .fw-300 } + +1. TOC +{:toc} + +--- + +## データベースの指定 + +`query` を持つフィールドは、 `dbConfig` が指定するデータベースでそのクエリを実行します。 + +```yaml +- name: datacenter + type: enum + dbConfig: cmdb # a database of Connections > Databases + query: select name from cmdb.datacenter +``` + +7.5.0 からは、名前は次の順序で検索されます。 + +| 順序 | 名前が指すもの | クエリの接続に使うもの | +|---|---|---| +| 1 | **接続 > データベース** のデータベース | そのデータベースが指定する認証情報 | +| 2 | それ以外は **接続 > 認証情報** にある種類が **データベース** の認証情報 | その認証情報。7.5.0 より前と同じ | + +データベースの種類(MySQL、MSSQL、PostgreSQL、Oracle、MongoDB)は認証情報から取得されるので、フォームで指定することはありません。 +種類のない認証情報は MySQL として読み込まれます。 + +--- + +## 7.5.0 より前に書かれたフォーム + +`dbConfig` で認証情報を指定していたフォームは、すべて変更なしで動作し続けます。 + +[7.5.0 へのアップグレード](../databases.html#upgrading-to-750) は、データベースの認証情報ごとに同じ名前でその認証情報で接続するデータベースを +作るので、フォームが指定する名前はまずデータベースを見つけ、同じログインにたどり着きます。同じ名前のデータベースがない種類がデータベースの +認証情報は、引き続き手順 2 で見つかります。 + +アップグレードが行うように、データベースと認証情報は同じ名前を共有できます。その場合はデータベースが優先されます。データベースを別の +認証情報に向けると、その名前を指定するすべてのフォームがそれに従います。これにより、フォームを編集せずに別のサーバーへ移せます。 + +--- + +## dbConfig の形式 + +`dbConfig` がこれまで受け付けてきた三つの形式は引き続き動作し、それぞれの名前は上記のとおり検索されます。 + +| `dbConfig` | 例 | 動作 | +|---|---|---| +| 名前 | `dbConfig: cmdb` | そのデータベースを照会します | +| 名前のリスト | `dbConfig: [cmdb-eu, cmdb-us]` | それぞれでクエリを実行し、結果を結合します。重複は削除されません | +| オブジェクト(レガシー) | `dbConfig: { name: cmdb, type: mysql }` | データベースまたは認証情報 `name` を照会します。非推奨です。名前だけを使ってください | + +`dbConfig: secret:vault:secret/cmdb/db` のような [シークレットストア](../secret-stores/#inline-without-a-credential-row) の参照は、 +データベースの名前でも認証情報の名前でもないので、これまでどおりストアから読み込まれます。 + +--- + +## データベースを照会するフォーム + +アプリはフォームを読み取り、どのフォームが各データベースを照会しているかを判断します。 + +[データベースページ](list.html) の **使用元** 列はそれらを数え、 [データベースのページ](database-page.html#used-by) の **使用元** タブは +それらをフィールドとともに一覧表示します。データベースの代わりにその認証情報を指定しているフィールドも数えられます。データベースの名前は、 +古い名前を指定しているフォームを変更してから変更してください。 diff --git a/i18n/ja/_configure/databases/list.md b/i18n/ja/_configure/databases/list.md new file mode 100644 index 0000000..b007732 --- /dev/null +++ b/i18n/ja/_configure/databases/list.md @@ -0,0 +1,64 @@ +--- +layout: default +title: データベースページ +parent: データベース +nav_order: 1 +translated_from: 66ffec0a34395642b0208e81078dbc725bdc7123 +--- + +# データベースページ +{: .no_toc } + +データベースのリスト、その列、データベースを追加するダイアログ +{: .fs-6 .fw-300 } + +1. TOC +{:toc} + +--- + +## リスト + +**接続 > データベース** のページには、すべてのデータベースが次の列とともに表示されます。 + +| 列 | 意味 | +|---|---| +| 名前 | フォームが `dbConfig: ` で参照する名前 | +| 説明 | 用途 | +| データベースの種類 | 認証情報のもの:MySQL、MSSQL、PostgreSQL、Oracle、MongoDB | +| データベース | 認証情報が開くデータベース | + +**列** では、既定でオフの列を二つ追加できます。 **ホスト** は認証情報の接続先で、ポートがある場合はポートも表示されます。 **使用元** は、 +名前または認証情報の名前でそれを照会するフォームの数です( [使用元](database-page.html#used-by) を参照)。 + +データベースの種類、データベース、ホストは認証情報から読み込まれます。変更は **接続 > 認証情報** の認証情報で行ってください。 +ユーザーやパスワードを表示する列はありません。 + +--- + +## データベースの追加 + +**データベースを追加** を押すと、ランナーと同じく 2 ステップのダイアログが開きます。 + +| ステップ | フィールド | +|---|---| +| データベース | **名前** と **説明** 。名前は必須で、一意です | +| 認証情報 | **認証情報** 、必須:種類が **データベース** の認証情報。それらだけが選択肢に表示されます | + +**認証情報** ステップの **認証情報を追加** は、種類が **データベース** の新しい認証情報のダイアログを開き( +[認証情報ページ](../credentials/list.html) を参照)、保存するとそれを選択します。データベースとそのログインを一度に追加できます。 + +--- + +## 行メニュー + +行をクリックするとデータベースのページが開き、行メニューには次のものがあります。 + +| 操作 | 動作 | +|---|---| +| 編集 | そのページを開きます | +| 接続テスト | 認証情報で接続し、そのデータベースの種類の最小のクエリを実行して、成功したかどうかを示します | +| 削除 | 確認の後、データベースを削除します。その認証情報は残ります | + +フォームがまだ指定しているデータベースを削除すると、同じ名前の認証情報が残っていてそちらに切り替わる場合を除き、それらのクエリは +失敗します( [フォームでのデータベース](in-forms.html) を参照)。先に **使用元** タブを確認してください。 diff --git a/i18n/ja/_configure/disclaimer.md b/i18n/ja/_configure/disclaimer.md index 3c3d352..fa2be8f 100644 --- a/i18n/ja/_configure/disclaimer.md +++ b/i18n/ja/_configure/disclaimer.md @@ -1,11 +1,11 @@ --- layout: default title: 免責事項 -nav_order: 7 +nav_order: 8 has_children: true has_toc: false permalink: /disclaimer.html -translated_from: a22b56db001904583c51e6bd28f1281737f32a32 +translated_from: ad00bcbac9d3c64c103b15d26914eec84174f6b6 --- # 免責事項 diff --git a/i18n/ja/_configure/notification-channels.md b/i18n/ja/_configure/notification-channels.md index 319f17b..3cd1967 100644 --- a/i18n/ja/_configure/notification-channels.md +++ b/i18n/ja/_configure/notification-channels.md @@ -1,11 +1,11 @@ --- layout: default title: 通知チャネル -nav_order: 9 +nav_order: 10 has_children: true has_toc: false permalink: /notification-channels.html -translated_from: 1488a67f6f281b0236e4bad3a8b3d0c3bb32326c +translated_from: 1756db6ff7b9197f88b34a0c089953a68493e008 --- # 通知チャネル diff --git a/i18n/ja/_configure/production/index.md b/i18n/ja/_configure/production/index.md index 4ab56c7..9d5a3c1 100644 --- a/i18n/ja/_configure/production/index.md +++ b/i18n/ja/_configure/production/index.md @@ -1,11 +1,11 @@ --- layout: default title: 本番環境での運用 -nav_order: 12 +nav_order: 13 has_children: true has_toc: false permalink: /production/ -translated_from: 2d7f4be84a76837fae34c1b414a229448bfae4ea +translated_from: 9f501893a2c4476707ac2f11f25e67998200e9e7 --- # 本番環境での運用 diff --git a/i18n/ja/_configure/rte/index.md b/i18n/ja/_configure/rte/index.md index 4bf024b..5e589b4 100644 --- a/i18n/ja/_configure/rte/index.md +++ b/i18n/ja/_configure/rte/index.md @@ -1,11 +1,11 @@ --- layout: default title: RTE -nav_order: 10 +nav_order: 11 has_children: true has_toc: false permalink: /rte/ -translated_from: 2c3f3f81ad8faaf18eac56f18782ef5f78111b04 +translated_from: 75a4facc8ad51d9d74b8fccfd2bbfd7ba48b17f9 --- # ランタイム環境(RTE) diff --git a/i18n/ja/_configure/runners.md b/i18n/ja/_configure/runners.md index 3ddb980..969d0f1 100644 --- a/i18n/ja/_configure/runners.md +++ b/i18n/ja/_configure/runners.md @@ -1,11 +1,11 @@ --- layout: default title: ランナー -nav_order: 11 +nav_order: 12 has_children: true has_toc: false permalink: /runners.html -translated_from: 339eda183d7748fa923090d9f8e26e2f112b1352 +translated_from: e6663cf2e7dc14a1559383c7f49fd968a4cbf635 --- # ランナー diff --git a/i18n/ja/_configure/secret-stores/index.md b/i18n/ja/_configure/secret-stores/index.md index a9df73f..96e3c98 100644 --- a/i18n/ja/_configure/secret-stores/index.md +++ b/i18n/ja/_configure/secret-stores/index.md @@ -1,11 +1,11 @@ --- layout: default title: シークレットストア -nav_order: 13 +nav_order: 14 has_children: true has_toc: false permalink: /secret-stores/ -translated_from: 595f94a84c4e8182b1b79289eb309a814dec1287 +translated_from: c7e5d9fb5e640896bd51e3fa20d76be092857ce2 --- # シークレットストア @@ -95,6 +95,9 @@ fn.fnCredentials('vault:secret/myapp/prod') // the store named `vault` dbConfig: secret:vault:secret/cmdb/db ``` +7.5.0 からは、 `dbConfig` はまず [データベース](../databases.html) を指定します。このような参照はデータベースではないので、これまでどおり +ストアから読み込まれます。データベースも、ストアを使う種類がデータベースの認証情報を通じて、ログインをストアから読み込めます。 + 認証情報の行がない場合、データベースのシークレットには少なくとも `db_type` とホストが必要です。たとえば次のとおりです。 ```json diff --git a/i18n/ja/_configure/security/index.md b/i18n/ja/_configure/security/index.md index 5c6ec54..9e40bf7 100644 --- a/i18n/ja/_configure/security/index.md +++ b/i18n/ja/_configure/security/index.md @@ -1,11 +1,11 @@ --- layout: default title: セキュリティ -nav_order: 14 +nav_order: 15 has_children: true has_toc: false permalink: /security/ -translated_from: f2b18fd1638cb4ccb2401652eafb82e6ce0e82eb +translated_from: e299ab0a4ffb1c12441a3b3fec6eaaef4a19de79 --- # セキュリティ diff --git a/i18n/ja/_configure/seed/example.md b/i18n/ja/_configure/seed/example.md index 226593b..c3a960b 100644 --- a/i18n/ja/_configure/seed/example.md +++ b/i18n/ja/_configure/seed/example.md @@ -3,7 +3,7 @@ layout: default title: 例 parent: 構成シード nav_order: 1 -translated_from: f085641a12234a5485ea59e73e76c29e7452d5e9 +translated_from: cf1f2b0122ca5cd2dfcc411e4ed20fb683b079bf --- # 例 @@ -72,6 +72,12 @@ credentials: user: svc_forms # leave user and password out for a relay password: ${SEED_SMTP_PW} +databases: # from 7.5.0 + items: + - name: production-db # the name a field's dbConfig gives + description: The CMDB + credential: production-db # a credential of the credentials section, of type database + repositories: prune: true items: @@ -209,3 +215,6 @@ RTE で設定された同じ変数より優先され、データベースモー データベースモードの RTE は、シードが適用される前に自分自身を登録することがあります。シードで宣言した RTE ランナーの `uri` が、そうした RTE が 登録したアドレスである場合、そのランナーはその行を **引き継ぎます** 。宣言した名前とフィールドを取り込み、RTE が応答しなくなっても ワーカーはそれを削除しなくなります。同じ RTE に対して 2 つ目のランナーが作られることはありません。 + +7.5.0 からは、 `databases` セクションでフォームが照会する [データベース](../databases.html) を宣言します。項目には `name` 、種類がデータベースの +`credential` 、任意の `description` があります。シードは認証情報の後にそれを適用し、ほかの種類の認証情報は拒否します。 diff --git a/i18n/ja/_configure/seed/index.md b/i18n/ja/_configure/seed/index.md index 35a76ed..6477077 100644 --- a/i18n/ja/_configure/seed/index.md +++ b/i18n/ja/_configure/seed/index.md @@ -5,7 +5,7 @@ nav_order: 4 has_children: true has_toc: false permalink: /seed/ -translated_from: 030ff83b1d7c3920600b7e0668b05ab24b949b67 +translated_from: 8f8eb798f4ada177abf5210049a523f7f2f4265b --- # 構成シード @@ -33,6 +33,7 @@ git から構築する管理者向けです。管理オブジェクトをファ | `runners` | ジョブの実行場所:RTE、AWX / AAP / Ascender、Semaphore、Rundeck、Jenkins | | `secret_stores` | シークレットストア(HashiCorp Vault など) | | `credentials` | 認証情報 | +| `databases` | フォームが照会するデータベースとその認証情報(7.5.0 から) | | `oauth2` | SSO プロバイダー:Entra ID と OIDC | | `repositories` | Git リポジトリ | | `syslog_servers` | サーバーログと監査エントリを受け取る syslog サーバー | diff --git a/i18n/ja/_configure/users-and-groups.md b/i18n/ja/_configure/users-and-groups.md index 0f9f832..23ba276 100644 --- a/i18n/ja/_configure/users-and-groups.md +++ b/i18n/ja/_configure/users-and-groups.md @@ -1,11 +1,11 @@ --- layout: default title: ユーザーとグループ -nav_order: 15 +nav_order: 16 has_children: true has_toc: false permalink: /users-and-groups.html -translated_from: 8ed4dc089c64e091636c29884af1cd1002eb40aa +translated_from: 07178b6b66a60d91e5a8ff3c417da3771730bc5e --- # ユーザーとグループ diff --git a/i18n/ja/_reference/faq.md b/i18n/ja/_reference/faq.md index 2adc41a..25f6b6a 100644 --- a/i18n/ja/_reference/faq.md +++ b/i18n/ja/_reference/faq.md @@ -2,7 +2,7 @@ layout: default title: FAQ nav_order: 2 -translated_from: 6616eaf626411a615cb68d8cc4f2a43401fe21d9 +translated_from: 487a25c7f3b24b3a0c0d4df08c858a52d48f8556 --- # よくある質問 @@ -171,11 +171,11 @@ expression: $(__user__.roles) > ほかの enum フィールドを参照すると、ドロップダウンの一覧全体では **なく** 、選択された値が返されます。 `placeholderColumn` プロパティか、 `$(city.name)` のようなドット記法を使ってください。 > **v4.0.20 の新機能**: placeholderColumn を "*" に設定すると、1 つの列ではなくレコード全体が出力されます。 +例では `CONN1` を照会します。これは接続 > データベース の [データベース](databases.html) (7.5.0 から)、または種類がデータベースの認証情報です。 + ```yaml - type: enum - dbConfig: - name: CONN1 - type: mysql + dbConfig: CONN1 query: select name from cmdb.city name: city_name label: Select a city @@ -184,9 +184,7 @@ expression: $(__user__.roles) model: cmdb.city group: CMDB - type: enum - dbConfig: - name: CONN1 - type: mysql + dbConfig: CONN1 query: select datacenter.name from cmdb.datacenter,cmdb.city where datacenter.city_id=city.id and city.name='$(city_name)' name: datacenter_name @@ -201,9 +199,7 @@ expression: $(__user__.roles) # or use the placeholderColumn property - type: enum - dbConfig: - name: CONN1 - type: mysql + dbConfig: CONN1 query: select id,name,description from cmdb.city name: city label: Select a city @@ -218,9 +214,7 @@ expression: $(__user__.roles) - name - description - type: enum - dbConfig: - name: CONN1 - type: mysql + dbConfig: CONN1 query: select name, capacity_pct from cmdb.datacenter where datacenter.city_id=$(city) # this cascaded dropdown will react using "id" as placeholder # or "query":"select name from cmdb.datacenter where datacenter.city_id=$(city.id)", diff --git a/i18n/nl/_build_forms/expressions/placeholders.md b/i18n/nl/_build_forms/expressions/placeholders.md index bf08dd6..4ca9d3e 100644 --- a/i18n/nl/_build_forms/expressions/placeholders.md +++ b/i18n/nl/_build_forms/expressions/placeholders.md @@ -3,7 +3,7 @@ layout: default title: Placeholders parent: Expressies nav_order: 0.5 -translated_from: bd63e437a4f77c707a1bf8d8ee99b1516063b62a +translated_from: 7b1ef975e0d5d92c446f050ffda02ee4acfa97aa --- # Placeholders @@ -31,7 +31,7 @@ waarde heeft, en wordt opnieuw geëvalueerd telkens als die waarde verandert. Zo values: [Amsterdam, Brussels] - name: datacenter type: enum - dbConfig: { name: CMDB, type: mysql } + dbConfig: CMDB # a database of Connections > Databases query: select name from cmdb.datacenter where city='$(city)' ``` @@ -73,7 +73,7 @@ Met `placeholderColumn: "*"` op een enum geeft `$(field)` het hele geselecteerde ```yaml - name: city type: enum - dbConfig: { name: CMDB, type: mysql } + dbConfig: CMDB query: select id, name from cmdb.city valueColumn: name placeholderColumn: id # $(city) gives the id; $(city.name) still gives the name diff --git a/i18n/nl/_build_forms/formfields/list.md b/i18n/nl/_build_forms/formfields/list.md index 62f5ce6..ac19ae1 100644 --- a/i18n/nl/_build_forms/formfields/list.md +++ b/i18n/nl/_build_forms/formfields/list.md @@ -3,7 +3,7 @@ layout: default title: List parent: Formuliervelden nav_order: 13 -translated_from: b6209effaf1cc9783a27c36669004a239751fb3e +translated_from: c454e7962323f4d82488bbdd30f92a7619162c32 --- # Veld List @@ -285,6 +285,9 @@ Rijen die uit een databasequery worden geladen: query: SELECT hostname, role FROM servers WHERE active = 1 ``` +`dbConfig` noemt een [database](../databases.html) uit **Verbindingen > Databases** (vanaf 7.5.0), of anders een referentie van het type database, +zoals voorheen (zie [Databases in formulieren](../databases/in-forms.html)). + #### Uit een lokale expressie (`runLocal`) Rijen die in de browser door een lokale expressie worden berekend: diff --git a/i18n/nl/_build_forms/formfields/yaml.md b/i18n/nl/_build_forms/formfields/yaml.md index 72ab2f6..72e86a1 100644 --- a/i18n/nl/_build_forms/formfields/yaml.md +++ b/i18n/nl/_build_forms/formfields/yaml.md @@ -3,7 +3,7 @@ layout: default title: YAML parent: Formuliervelden nav_order: 14 -translated_from: c7439c165a54cf525a91d0458a268a66ee8a136f +translated_from: 8dde3e82c2a53e38adc729f5a8f3764b182718c7 --- # Veld YAML @@ -152,9 +152,7 @@ Verwijs ernaar met de gewone expressiesyntax `$(...)` in de velddefinities van h label: VLAN # filter available VLANs based on the parent's selected region query: "select id,name from vlans where region='$(__parent__.region)'" - dbConfig: - name: MYDB - type: mysql + dbConfig: MYDB # a database of Connections > Databases valueColumn: id placeholderColumn: name diff --git a/i18n/nl/_configure/credentials.md b/i18n/nl/_configure/credentials.md index c402a39..63a1f85 100644 --- a/i18n/nl/_configure/credentials.md +++ b/i18n/nl/_configure/credentials.md @@ -5,7 +5,7 @@ nav_order: 6 has_children: true has_toc: false permalink: /credentials.html -translated_from: 08110077a1cf59a4a52e078fc2ebc252f7cae48d +translated_from: 0c8fddace3f97bb7d5a3a2642e3fccc296680454 --- # Inloggegevens @@ -40,6 +40,9 @@ ernaar met haar naam, zodat het wachtwoord zelf nooit in een formulier verschijn AnsibleForms-database bewaard, versleuteld met `ENCRYPTION_SECRET`, ofwel elke keer dat de referentie wordt gebruikt uit een [secret store](secret-stores/) gelezen. +Vanaf 7.5.0 bevragen formulieren een [database](databases.html) uit **Verbindingen > Databases**, die de referentie van het type +**Database** noemt waarmee hij verbinding maakt; een formulier dat de referentie zelf in `dbConfig` noemt, werkt nog steeds, zoals voorheen. + --- ## Wie een referentie mag wijzigen @@ -69,6 +72,7 @@ houden die gebruikers weg van geheimen die ze anders niet zouden kunnen lezen: ## Referenties in gebruik -Een referentie die nog door records wordt genoemd, kan niet worden verwijderd of hernoemd, omdat die records dan naar niets zouden wijzen. +Een referentie die nog door records wordt genoemd, vanaf 7.5.0 ook door een [database](databases.html), kan niet worden verwijderd of hernoemd, +omdat die records dan naar niets zouden wijzen. De weigering noemt hoeveel records haar gebruiken; het tabblad **Gebruikt door** van [haar pagina](credentials/credential-page.html) toont ze. Laat ze eerst naar een andere referentie wijzen, en verwijder of hernoem haar daarna. diff --git a/i18n/nl/_configure/credentials/credential-page.md b/i18n/nl/_configure/credentials/credential-page.md index 828d5af..90230cf 100644 --- a/i18n/nl/_configure/credentials/credential-page.md +++ b/i18n/nl/_configure/credentials/credential-page.md @@ -3,7 +3,7 @@ layout: default title: "De pagina van een referentie" parent: Inloggegevens nav_order: 3 -translated_from: 0269b5c0d313622bea6c910b96231f41ffd852d7 +translated_from: 204eca949763c8c23625369f1d8d8d0d06545c87 --- # De pagina van een referentie @@ -20,7 +20,7 @@ De pagina van een referentie toont de stappen van haar dialoogvenster als tabbla | Type | Waarvoor de referentie dient. | | Aanmelding | Elk veld van haar type, zoals in de stap **Aanmelding** van het dialoogvenster: de gebruiker, het wachtwoord, en waar ze zich aanmeldt (host en poort, de database, de mailserver, de servers van de directory, de tenant of issuer, het adres van de server en de TLS ervan). Voor een CyberArk-referentie de AppID, het clientcertificaat en de sleutel. | | Opslag | Database of Geheimenkluis, en de store en de referentie. Niet voor CyberArk of HashiCorp Vault. | -| Gebruikt door | Alles wat deze referentie noemt: secret stores, meldingskanalen, repositories, LDAP-directory's, SSO-providers, runners, de chat-assistent, formulieren en de workflows van de designer. Een rij opent het. | +| Gebruikt door | Alles wat deze referentie noemt: secret stores, meldingskanalen, repositories, LDAP-directory's, SSO-providers, runners, [databases](../databases.html) (vanaf 7.5.0), de chat-assistent, formulieren en de workflows van de designer. Een rij opent het. | Het wachtwoord wordt in het tabblad **Aanmelding** getypt en wordt na het opslaan nooit meer getoond: leeg gelaten blijft het opgeslagen wachtwoord staan. Laat voor een CyberArk-referentie de clientsleutel leeg om de opgeslagen sleutel te behouden. Rechtsboven staan **Verbinding testen** (alleen voor databasereferenties), diff --git a/i18n/nl/_configure/credentials/types.md b/i18n/nl/_configure/credentials/types.md index 125a81a..291e199 100644 --- a/i18n/nl/_configure/credentials/types.md +++ b/i18n/nl/_configure/credentials/types.md @@ -3,7 +3,7 @@ layout: default title: Typen referenties parent: Inloggegevens nav_order: 1 -translated_from: 1f21f8fc1ae73953922d8c9f21de6db05b3b1a87 +translated_from: 2782b0144b1442eceb8684fb1407827cef5fde8f --- # Typen referenties @@ -27,7 +27,7 @@ Het type zegt waarvoor een referentie dient. Het bepaalt welke velden het dialoo | SSH | Een gebruiker en wachtwoord voor SSH naar een server, met de host en poort | Playbooks, via de `credentials` of `ansibleCredentials` van een formulier of een referentieveld, en de aanmelding van een workflownode | | Git | Een gebruiker en wachtwoord of token voor git-repositories | [Repositories](../repositories/authentication.html) | | API | Een gebruiker en wachtwoord of token voor een REST API | [REST-expressies](../expressions/credentials.html), een Telegram-bottoken, het bearer-token van een webhook, de API-sleutel van de chat-assistent | -| Database | Een database-aanmelding, met het type, de host, de poort en de databasenaam | Formulierquery's (`dbConfig`) en `fnCredentials`; ze kan worden getest | +| Database | Een database-aanmelding, met het type, de host, de poort en de databasenaam | Een [database](../databases.html) die formulieren bevragen (`dbConfig`), vanaf 7.5.0, of rechtstreeks de `dbConfig` van een formulier; `fnCredentials`; ze kan worden getest | | CyberArk | Het adres van de CyberArk Central Credential Provider (CCP) en de TLS ervan, en de AppID, het clientcertificaat en de sleutel waarmee een CyberArk-store zich aanmeldt | Een [CyberArk](../secret-stores/cyberark.html)-secret store | | SMTP | Een mailserver, de poort en TLS, en de aanmelding (geen voor een relay) | Een [meldingskanaal](../notification-channels.html) voor mail | | LDAP | De servers, poort, TLS en certificaten van een directory, en de bind-DN en het wachtwoord | Een [LDAP-directory](../authentication/ldap.html) | @@ -39,7 +39,8 @@ Het type zegt waarvoor een referentie dient. Het bepaalt welke velden het dialoo | Jenkins | Een gebruiker, het API-token en het adres van een Jenkins | Een Jenkins-runner | | HashiCorp Vault | Het token en het adres waarmee een Vault-store zich aanmeldt | Een [HashiCorp Vault](../secret-stores/hashicorp-vault.html)-secret store | -Een databasereferentie kan van het type MySQL, MSSQL, PostgreSQL, Oracle of MongoDB zijn. +Een databasereferentie kan van het type MySQL, MSSQL, PostgreSQL, Oracle of MongoDB zijn. Vanaf 7.5.0 wordt ze gekozen door een database uit +[Verbindingen > Databases](../databases.html), en de upgrade naar 7.5.0 maakt voor elke databasereferentie een database met dezelfde naam. In de API en de [configuratie-seed](../seed/) zijn de typen `userpass`, `ssh`, `git`, `api`, `database`, `cyberark`, `smtp`, `ldap`, `entraid`, `oidc`, `rte`, `awx`, `aap`, `ascender`, `semaphore`, `rundeck`, `jenkins` en `vault`. De upgrade vanaf 6 diff --git a/i18n/nl/_configure/customization/index.md b/i18n/nl/_configure/customization/index.md index 25f6adf..60b00b1 100644 --- a/i18n/nl/_configure/customization/index.md +++ b/i18n/nl/_configure/customization/index.md @@ -1,11 +1,11 @@ --- layout: default title: Omgevingsvariabelen -nav_order: 8 +nav_order: 9 has_children: true has_toc: false permalink: /customization/ -translated_from: fd6e83f3550f59aa576c8addaf28bfa6115b96a0 +translated_from: e0bc1d7c5bd2df4a3f9036a2d9413a276b228156 --- # Omgevingsvariabelen diff --git a/i18n/nl/_configure/databases.md b/i18n/nl/_configure/databases.md new file mode 100644 index 0000000..dcab568 --- /dev/null +++ b/i18n/nl/_configure/databases.md @@ -0,0 +1,150 @@ +--- +layout: default +title: Databases +nav_order: 7 +has_children: true +has_toc: false +permalink: /databases.html +translated_from: 7c14f8dd95d2314974c54a3f2c5aba279410d822 +--- + +# Databases +{: .no_toc } + +De databases die formulieren bevragen, elk met zijn referentie +{: .fs-6 .fw-300 } + +1. TOC +{:toc} + +--- + +Voor beheerders: geef de databases die je formulieren bevragen een naam, kies de referentie waarmee elk verbinding maakt, en test ze. + +--- + +## In deze sectie + +| Pagina | Wat er aan bod komt | +|---|---| +| [De pagina Databases](databases/list.html) | De lijst met databases, de kolommen ervan, en het dialoogvenster waarmee je er een toevoegt | +| [De pagina van een database](databases/database-page.html) | De tabbladen van een database, de formulieren die hem bevragen, Verbinding testen en Verwijderen | +| [Databases in formulieren](databases/in-forms.html) | Hoe de `dbConfig` van een veld een database noemt, en de formulieren van vóór 7.5.0 | + +--- + +## Hoe het werkt + +Vanaf 7.5.0 is een **database** een eigen verbinding, toegevoegd onder **Verbindingen > Databases**, tussen **Secret stores** en **Runners**. +Hij heeft drie dingen: + +| Veld | Wat het is | +|---|---| +| Naam | De naam die de `dbConfig` van een veld opgeeft om hem te bevragen, zoals `cmdb` | +| Beschrijving | Waarvoor hij dient | +| Inloggegevens | De referentie uit [Verbindingen > Inloggegevens](credentials.html), van het type **Database**, waarmee hij verbinding maakt | + +De referentie bevat alles over de verbinding, zoals voorheen: het databasetype (MySQL, MSSQL, PostgreSQL, Oracle of MongoDB), +de host en poort, de databasenaam, TLS, en de gebruiker en het wachtwoord, versleuteld bewaard of gelezen uit een [secret store](secret-stores/). +Een database heeft geen eigen adres en geen eigen geheim, dus een database en een runner kiezen hun referentie op dezelfde manier. + +Een veld bevraagt een database door hem in `dbConfig` te noemen: + +```yaml +- name: city + type: enum + dbConfig: cmdb # a database of Connections > Databases + query: select name from cmdb.city +``` + +Een naam die geen database is, wordt opgezocht als referentie van het type database, zoals vóór 7.5.0, zodat oudere formulieren +ongewijzigd blijven werken (zie [Databases in formulieren](databases/in-forms.html)). + +--- + +## Upgraden naar 7.5.0 + +De upgrade vult **Verbindingen > Databases** één keer, zodat je bestaande formulieren zonder wijziging blijven werken. + +Hij maakt één database voor elke referentie van het type database, met de naam en beschrijving van de referentie, die met die +referentie verbinding maakt. Een formulier waarvan de `dbConfig` de referentie noemt, vindt nu de database met dezelfde naam, die met dezelfde +referentie verbinding maakt: het resultaat is hetzelfde. Referenties behouden al hun velden. + +De upgrade draait maar één keer: een database die daarna wordt verwijderd, wordt niet opnieuw gemaakt, en een databasereferentie die later +wordt toegevoegd, krijgt geen database totdat je er een toevoegt. + +--- + +## Referenties in gebruik + +Een referentie waarmee een database verbinding maakt, is in gebruik, net als een referentie waarmee een runner zich aanmeldt. + +Ze kan niet worden verwijderd of hernoemd zolang een database haar noemt, en het tabblad **Gebruikt door** van haar pagina toont de databases (zie +[Referenties in gebruik](credentials.html#credentials-in-use)). Een database verwijderen laat zijn referentie zoals ze is. + +--- + +## Wie databases beheert + +De databases volgen de rolinstellingen van de referenties die ze noemen. + +De lijst, de pagina van een database en de API ervan vereisen de rolinstelling `showSettings` of `showConnectionsSettings`, net als de referenties. +Alleen een admin kan een database verbinding laten maken met een referentie die alleen een admin mag noemen, zoals een die haar wachtwoord uit een +secret store leest (zie [Wie een referentie mag wijzigen](credentials.html#who-may-change-a-credential)): de formulieren die hem bevragen zouden met +die referentie verbinding maken, en **Verbinding testen** zou haar geheim naar haar server sturen. Een andere gebruiker mag een database opnieuw +opslaan met de referentie die hij al noemt. + +Een database die in de [configuratie-seed](seed/) is gedeclareerd, is op zijn pagina alleen-lezen: wijzig hem dan in het seedbestand. + +--- + +## De configuratie-seed + +Een seed declareert zijn databases in een sectie `databases:`, na de referenties die ze noemen. + +Elk item heeft een `name`, een `credential` van het type database en optioneel een `description`. De referentie kan uit de +sectie `credentials` van dezelfde seed komen of een in de app gemaakte referentie zijn: + +```yaml +credentials: + items: + - name: cmdb-login + credential_type: database + db_type: mysql + host: cmdb.example.com + port: 3306 + user: svc_forms + password: ${SEED_CMDB_PW} + +databases: + items: + - name: cmdb # the name a field's dbConfig gives + description: The CMDB + credential: cmdb-login # a credential of type database +``` + +Zie het volledige [voorbeeld](seed/example.html) en [Beheerde objecten](seed/managed-objects.html) voor hoe de seed beheert wat hij declareert. + +--- + +## De REST API + +Scripts beheren de databases via de [REST API](api/), onder `/api/v2/database`, met dezelfde rolinstellingen als de pagina. + +| Aanroep | Wat het doet | +|---|---| +| `GET /api/v2/database` | Toont de databases, elk met het databasetype, de database, de host en de poort van zijn referentie, en hoeveel formulieren hem bevragen (`used_by_count`) | +| `GET /api/v2/database?name=` | Haalt de database met die naam op | +| `GET /api/v2/database/` | Haalt één database op | +| `POST /api/v2/database` | Voegt een database toe: zijn `name`, `credential` en optioneel `description` | +| `PUT /api/v2/database/` | Wijzigt een database | +| `DELETE /api/v2/database/` | Verwijdert een database; zijn referentie blijft | +| `POST /api/v2/database//check` | Test zijn verbinding, met zijn referentie | + +```bash +curl -X POST https://forms.example.com/api/v2/database \ + -H "Authorization: Bearer " -H "Content-Type: application/json" \ + -d '{ "name": "cmdb", "description": "The CMDB", "credential": "cmdb-login" }' +``` + +Een `credential` die niet bestaat, of niet van het type database is, wordt geweigerd met `400`. Elke wijziging wordt in het auditlog geschreven. diff --git a/i18n/nl/_configure/databases/database-page.md b/i18n/nl/_configure/databases/database-page.md new file mode 100644 index 0000000..1786f36 --- /dev/null +++ b/i18n/nl/_configure/databases/database-page.md @@ -0,0 +1,61 @@ +--- +layout: default +title: "De pagina van een database" +parent: Databases +nav_order: 2 +translated_from: b027ce5ca33397772148bb221bd9eaab4984f276 +--- + +# De pagina van een database +{: .no_toc } + +De tabbladen, de formulieren die hem bevragen, testen en verwijderen +{: .fs-6 .fw-300 } + +1. TOC +{:toc} + +--- + +## Tabbladen + +De pagina van een database toont de stappen van zijn dialoogvenster als tabbladen, plus de formulieren die hem bevragen: + +| Tabblad | Wat het bevat | +|---|---| +| Details | De **Naam**, die de `dbConfig` van een veld opgeeft, en de **Beschrijving** | +| Referenties | De **Inloggegevens** waarmee hij verbinding maakt, een referentie uit Verbindingen > Inloggegevens van het type **Database**, die het databasetype, de host, de poort, de database, TLS en de aanmelding bevat | +| Gebruikt door | De formulieren die hem bevragen, met het aantal op het tabblad, zie [Gebruikt door](#used-by) | + +Elk tabblad heeft een eigen adres, zoals `/settings/databases//used-by`, zodat een link of een bladwijzer het opent. De zoekfunctie van de +titelregel filtert alle tabbladen tegelijk. + +Op het tabblad **Referenties** maakt **Referentie toevoegen** een nieuwe referentie van het type **Database** en kiest die. Een wachtwoord wordt na +het opslaan nooit meer getoond: wijzig het op de referentie. + +--- + +## Gebruikt door + +Het tabblad **Gebruikt door** toont de formulieren waarvan de velden de database bevragen, zoals de app ze uit de formulieren leest. + +| Kolom | Wat het toont | +|---|---| +| Formulier | Het formulier, een rij opent het | +| Beschrijving | De beschrijving van het formulier | +| Veld | De velden van dat formulier waarvan de `dbConfig` de database noemt | + +Een veld telt mee als zijn `dbConfig` de database noemt, of zijn referentie noemt, zoals een formulier van vóór 7.5.0 doet. Beide maken +verbinding met dezelfde referentie, dus beide worden getoond. Als er geen is, zegt het tabblad **Geen formulier bevraagt deze database.** + +--- + +## Verbinding testen en Verwijderen + +De knoppen rechtsboven werken op de database zoals hij is opgeslagen. + +**Verbinding testen** maakt verbinding met zijn referentie, voert de kleinste query van zijn databasetype uit, en zegt het in een bericht, +**<name> verbinding ok**, of waarom het mislukte. Het is dezelfde test als **Verbinding testen** van de referentie zelf. + +**Verwijderen** vraagt eerst, verwijdert dan de database en gaat terug naar de lijst. Zijn referentie blijft onder **Verbindingen > Inloggegevens**. +Ernaast slaat **Opslaan** de tabbladen Details en Referenties op. diff --git a/i18n/nl/_configure/databases/in-forms.md b/i18n/nl/_configure/databases/in-forms.md new file mode 100644 index 0000000..576b984 --- /dev/null +++ b/i18n/nl/_configure/databases/in-forms.md @@ -0,0 +1,77 @@ +--- +layout: default +title: Databases in formulieren +parent: Databases +nav_order: 3 +translated_from: 44e424afaa9938d1bcdb9277d2b7d8e5fefee64e +--- + +# Databases in formulieren +{: .no_toc } + +Hoe de dbConfig van een veld een database noemt +{: .fs-6 .fw-300 } + +1. TOC +{:toc} + +--- + +## Een database noemen + +Een veld met een `query` voert die uit op de database die zijn `dbConfig` noemt. + +```yaml +- name: datacenter + type: enum + dbConfig: cmdb # a database of Connections > Databases + query: select name from cmdb.datacenter +``` + +Vanaf 7.5.0 wordt de naam in deze volgorde opgezocht: + +| Volgorde | De naam is | De query maakt verbinding met | +|---|---|---| +| 1 | Een database uit **Verbindingen > Databases** | De referentie die die database noemt | +| 2 | Anders een referentie van het type **Database** uit **Verbindingen > Inloggegevens** | Die referentie, zoals vóór 7.5.0 | + +Het databasetype (MySQL, MSSQL, PostgreSQL, Oracle of MongoDB) komt uit de referentie, dus het formulier geeft het nooit op. Een referentie +zonder type wordt als MySQL gelezen. + +--- + +## Formulieren van vóór 7.5.0 + +Elk formulier dat een referentie in `dbConfig` noemde, blijft werken, zonder wijziging. + +De [upgrade naar 7.5.0](../databases.html#upgrading-to-750) maakt een database voor elke databasereferentie, met dezelfde naam en +verbonden met die referentie, zodat de naam die een formulier opgeeft nu eerst de database vindt, die naar dezelfde aanmelding leidt. Een referentie +van het type database zonder database met haar naam wordt nog steeds gevonden via stap 2. + +Een database en een referentie kunnen een naam delen, zoals de upgrade doet. De database wint: laat hem naar een andere referentie wijzen en elk +formulier dat die naam opgeeft volgt, zo gaat een formulier naar een andere server zonder te worden bewerkt. + +--- + +## De vormen van dbConfig + +De drie vormen die `dbConfig` altijd heeft aangenomen, werken nog steeds, elke naam opgezocht zoals hierboven. + +| `dbConfig` | Voorbeeld | Wat het doet | +|---|---|---| +| Een naam | `dbConfig: cmdb` | Bevraagt die database | +| Een lijst met namen | `dbConfig: [cmdb-eu, cmdb-us]` | Voert de query op elk uit en voegt de resultaten samen; dubbele worden niet verwijderd | +| Een object (verouderd) | `dbConfig: { name: cmdb, type: mysql }` | Bevraagt de database of referentie `name`; verouderd, gebruik alleen de naam | + +Een verwijzing naar een [secret store](../secret-stores/#inline-without-a-credential-row), zoals `dbConfig: secret:vault:secret/cmdb/db`, is +geen naam van een database of een referentie, en wordt nog steeds uit de store gelezen zoals voorheen. + +--- + +## Welke formulieren een database bevragen + +De app leest de formulieren om te weten welke ervan elke database bevragen. + +De kolom **Gebruikt door** van [de pagina Databases](list.html) telt ze, en het tabblad **Gebruikt door** van +[de pagina van een database](database-page.html#used-by) toont ze met hun velden. Een veld dat in plaats daarvan de referentie van de database +noemt, telt ook mee. Hernoem een database pas nadat je de formulieren hebt gewijzigd die zijn oude naam opgeven. diff --git a/i18n/nl/_configure/databases/list.md b/i18n/nl/_configure/databases/list.md new file mode 100644 index 0000000..d25d749 --- /dev/null +++ b/i18n/nl/_configure/databases/list.md @@ -0,0 +1,64 @@ +--- +layout: default +title: De pagina Databases +parent: Databases +nav_order: 1 +translated_from: 66ffec0a34395642b0208e81078dbc725bdc7123 +--- + +# De pagina Databases +{: .no_toc } + +De lijst met databases, de kolommen, en er een toevoegen +{: .fs-6 .fw-300 } + +1. TOC +{:toc} + +--- + +## De lijst + +De pagina onder **Verbindingen > Databases** toont elke database met deze kolommen: + +| Kolom | Betekenis | +|---|---| +| Naam | Hoe formulieren ernaar verwijzen, met `dbConfig: ` | +| Beschrijving | Waarvoor hij dient | +| Database type | Dat van zijn referentie: MySQL, MSSQL, PostgreSQL, Oracle of MongoDB | +| Database | De database die zijn referentie opent | + +**Kolommen** voegt er nog twee toe, standaard uit: **Host**, waar zijn referentie verbinding maakt, met de poort als die er is, en **Gebruikt door**, +hoeveel formulieren hem bevragen, met zijn naam of met die van zijn referentie (zie [Gebruikt door](database-page.html#used-by)). + +Het databasetype, de database en de host worden uit de referentie gelezen: wijzig ze op de referentie, onder +**Verbindingen > Inloggegevens**. Geen enkele kolom toont een gebruiker of een wachtwoord. + +--- + +## Een database toevoegen + +**Database toevoegen** opent een dialoogvenster in twee stappen, zoals dat van een runner. + +| Stap | Velden | +|---|---| +| Database | **Naam** en **Beschrijving**. De naam is verplicht, en uniek | +| Referenties | **Inloggegevens**, verplicht: een referentie van het type **Database**. Alleen die worden aangeboden | + +In de stap **Referenties** opent **Referentie toevoegen** het dialoogvenster van een nieuwe referentie van het type **Database** (zie +[De pagina met inloggegevens](../credentials/list.html)) en kiest die zodra ze is opgeslagen, zodat een database en zijn aanmelding in één keer kunnen worden toegevoegd. + +--- + +## Het rijmenu + +Een rij opent de eigen pagina van de database, en het menu biedt: + +| Actie | Wat het doet | +|---|---| +| Bewerken | Opent zijn pagina | +| Verbinding testen | Maakt verbinding met zijn referentie, voert de kleinste query van zijn databasetype uit, en zegt of het lukte | +| Verwijderen | Verwijdert de database, na een bevestiging. Zijn referentie blijft | + +Een database verwijderen die formulieren nog noemen, laat hun query's mislukken, tenzij er een referentie met dezelfde naam overblijft om op terug +te vallen (zie [Databases in formulieren](in-forms.html)). Controleer eerst zijn tabblad **Gebruikt door**. diff --git a/i18n/nl/_configure/disclaimer.md b/i18n/nl/_configure/disclaimer.md index a4b31ab..e917d28 100644 --- a/i18n/nl/_configure/disclaimer.md +++ b/i18n/nl/_configure/disclaimer.md @@ -1,11 +1,11 @@ --- layout: default title: Disclaimer -nav_order: 7 +nav_order: 8 has_children: true has_toc: false permalink: /disclaimer.html -translated_from: a22b56db001904583c51e6bd28f1281737f32a32 +translated_from: ad00bcbac9d3c64c103b15d26914eec84174f6b6 --- # Disclaimer diff --git a/i18n/nl/_configure/notification-channels.md b/i18n/nl/_configure/notification-channels.md index f1797e2..1ea2d7f 100644 --- a/i18n/nl/_configure/notification-channels.md +++ b/i18n/nl/_configure/notification-channels.md @@ -1,11 +1,11 @@ --- layout: default title: Meldingskanalen -nav_order: 9 +nav_order: 10 has_children: true has_toc: false permalink: /notification-channels.html -translated_from: 1488a67f6f281b0236e4bad3a8b3d0c3bb32326c +translated_from: 1756db6ff7b9197f88b34a0c089953a68493e008 --- # Meldingskanalen diff --git a/i18n/nl/_configure/production/index.md b/i18n/nl/_configure/production/index.md index 4aabed9..b528eb2 100644 --- a/i18n/nl/_configure/production/index.md +++ b/i18n/nl/_configure/production/index.md @@ -1,11 +1,11 @@ --- layout: default title: Draaien in productie -nav_order: 12 +nav_order: 13 has_children: true has_toc: false permalink: /production/ -translated_from: 2d7f4be84a76837fae34c1b414a229448bfae4ea +translated_from: 9f501893a2c4476707ac2f11f25e67998200e9e7 --- # Draaien in productie diff --git a/i18n/nl/_configure/rte/index.md b/i18n/nl/_configure/rte/index.md index dbdfa90..372255a 100644 --- a/i18n/nl/_configure/rte/index.md +++ b/i18n/nl/_configure/rte/index.md @@ -1,11 +1,11 @@ --- layout: default title: RTE -nav_order: 10 +nav_order: 11 has_children: true has_toc: false permalink: /rte/ -translated_from: 2c3f3f81ad8faaf18eac56f18782ef5f78111b04 +translated_from: 75a4facc8ad51d9d74b8fccfd2bbfd7ba48b17f9 --- # Runtime-omgevingen (RTE) diff --git a/i18n/nl/_configure/runners.md b/i18n/nl/_configure/runners.md index 88a59d0..669334a 100644 --- a/i18n/nl/_configure/runners.md +++ b/i18n/nl/_configure/runners.md @@ -1,11 +1,11 @@ --- layout: default title: Runners -nav_order: 11 +nav_order: 12 has_children: true has_toc: false permalink: /runners.html -translated_from: 339eda183d7748fa923090d9f8e26e2f112b1352 +translated_from: e6663cf2e7dc14a1559383c7f49fd968a4cbf635 --- # Runners diff --git a/i18n/nl/_configure/secret-stores/index.md b/i18n/nl/_configure/secret-stores/index.md index 3a3b1c8..b0012ff 100644 --- a/i18n/nl/_configure/secret-stores/index.md +++ b/i18n/nl/_configure/secret-stores/index.md @@ -1,11 +1,11 @@ --- layout: default title: Secret stores -nav_order: 13 +nav_order: 14 has_children: true has_toc: false permalink: /secret-stores/ -translated_from: 595f94a84c4e8182b1b79289eb309a814dec1287 +translated_from: c7e5d9fb5e640896bd51e3fa20d76be092857ce2 --- # Secret stores @@ -95,6 +95,9 @@ fn.fnCredentials('vault:secret/myapp/prod') // the store named `vault` dbConfig: secret:vault:secret/cmdb/db ``` +Vanaf 7.5.0 noemt een `dbConfig` eerst een [database](../databases.html); een verwijzing als deze is geen database, dus ze wordt nog steeds uit +de store gelezen. Ook een database kan zijn aanmelding uit een store lezen, via een referentie van het type database die er een gebruikt. + Zonder referentierij heeft een databasegeheim minstens een `db_type` en een host nodig, bijvoorbeeld: ```json diff --git a/i18n/nl/_configure/security/index.md b/i18n/nl/_configure/security/index.md index 0b35dde..6773829 100644 --- a/i18n/nl/_configure/security/index.md +++ b/i18n/nl/_configure/security/index.md @@ -1,11 +1,11 @@ --- layout: default title: Beveiliging -nav_order: 14 +nav_order: 15 has_children: true has_toc: false permalink: /security/ -translated_from: f2b18fd1638cb4ccb2401652eafb82e6ce0e82eb +translated_from: e299ab0a4ffb1c12441a3b3fec6eaaef4a19de79 --- # Beveiliging diff --git a/i18n/nl/_configure/seed/example.md b/i18n/nl/_configure/seed/example.md index 822a32b..26c839b 100644 --- a/i18n/nl/_configure/seed/example.md +++ b/i18n/nl/_configure/seed/example.md @@ -3,7 +3,7 @@ layout: default title: Voorbeeld parent: Configuratie-seed nav_order: 1 -translated_from: f085641a12234a5485ea59e73e76c29e7452d5e9 +translated_from: cf1f2b0122ca5cd2dfcc411e4ed20fb683b079bf --- # Voorbeeld @@ -72,6 +72,12 @@ credentials: user: svc_forms # leave user and password out for a relay password: ${SEED_SMTP_PW} +databases: # from 7.5.0 + items: + - name: production-db # the name a field's dbConfig gives + description: The CMDB + credential: production-db # a credential of the credentials section, of type database + repositories: prune: true items: @@ -209,3 +215,6 @@ validatie van de seed mislukken. Een RTE in databasemodus kan zichzelf registreren voordat de seed wordt toegepast. Een RTE-runner uit de seed waarvan de `uri` het adres is waarop zo'n RTE zich registreerde, **neemt** die rij **over**: hij krijgt de gedeclareerde naam en velden, en de worker verwijdert hem niet meer als de RTE niet meer antwoordt, in plaats van een tweede runner voor dezelfde RTE. + +Vanaf 7.5.0 declareert de sectie `databases` de [databases](../databases.html) die formulieren bevragen. Een item heeft een `name`, een `credential` +van het type database en een optionele `description`; de seed past het toe na de referenties, en weigert een referentie van een ander type. diff --git a/i18n/nl/_configure/seed/index.md b/i18n/nl/_configure/seed/index.md index a93069c..6e9a350 100644 --- a/i18n/nl/_configure/seed/index.md +++ b/i18n/nl/_configure/seed/index.md @@ -5,7 +5,7 @@ nav_order: 4 has_children: true has_toc: false permalink: /seed/ -translated_from: 030ff83b1d7c3920600b7e0668b05ab24b949b67 +translated_from: 8f8eb798f4ada177abf5210049a523f7f2f4265b --- # Configuratie-seed @@ -33,6 +33,7 @@ declareert objecten die voorheen alleen in de database bestonden: | `runners` | Waar jobs draaien: RTE's, AWX / AAP / Ascender, Semaphore, Rundeck, Jenkins | | `secret_stores` | Secret stores (HashiCorp Vault, ...) | | `credentials` | Referenties | +| `databases` | De databases die formulieren bevragen, elk met zijn referentie, vanaf 7.5.0 | | `oauth2` | SSO-providers: Entra ID en OIDC | | `repositories` | Git-repositories | | `syslog_servers` | De syslogservers die het serverlog en de auditregels krijgen | diff --git a/i18n/nl/_configure/users-and-groups.md b/i18n/nl/_configure/users-and-groups.md index 96fe196..44ef0ee 100644 --- a/i18n/nl/_configure/users-and-groups.md +++ b/i18n/nl/_configure/users-and-groups.md @@ -1,11 +1,11 @@ --- layout: default title: Gebruikers en groepen -nav_order: 15 +nav_order: 16 has_children: true has_toc: false permalink: /users-and-groups.html -translated_from: 8ed4dc089c64e091636c29884af1cd1002eb40aa +translated_from: 07178b6b66a60d91e5a8ff3c417da3771730bc5e --- # Gebruikers en groepen diff --git a/i18n/nl/_reference/faq.md b/i18n/nl/_reference/faq.md index d97938f..86a8b3e 100644 --- a/i18n/nl/_reference/faq.md +++ b/i18n/nl/_reference/faq.md @@ -2,7 +2,7 @@ layout: default title: FAQ nav_order: 2 -translated_from: 6616eaf626411a615cb68d8cc4f2a43401fe21d9 +translated_from: 487a25c7f3b24b3a0c0d4df08c858a52d48f8556 --- # Veelgestelde vragen @@ -171,11 +171,11 @@ De webapplicatie aan de clientkant evalueert velden elke 100 ms opnieuw; met de > Een verwijzing naar een ander enum-veld geeft de geselecteerde waarden terug, **niet** de volledige keuzelijst. Gebruik de eigenschap `placeholderColumn` of puntnotatie zoals `$(city.name)`. > **Nieuw in v4.0.20**: als je placeholderColumn op "*" zet, wordt het hele record uitgevoerd in plaats van één kolom. +De voorbeelden bevragen `CONN1`, een [database](databases.html) uit Verbindingen > Databases (vanaf 7.5.0) of een referentie van het type database. + ```yaml - type: enum - dbConfig: - name: CONN1 - type: mysql + dbConfig: CONN1 query: select name from cmdb.city name: city_name label: Select a city @@ -184,9 +184,7 @@ De webapplicatie aan de clientkant evalueert velden elke 100 ms opnieuw; met de model: cmdb.city group: CMDB - type: enum - dbConfig: - name: CONN1 - type: mysql + dbConfig: CONN1 query: select datacenter.name from cmdb.datacenter,cmdb.city where datacenter.city_id=city.id and city.name='$(city_name)' name: datacenter_name @@ -201,9 +199,7 @@ De webapplicatie aan de clientkant evalueert velden elke 100 ms opnieuw; met de # or use the placeholderColumn property - type: enum - dbConfig: - name: CONN1 - type: mysql + dbConfig: CONN1 query: select id,name,description from cmdb.city name: city label: Select a city @@ -218,9 +214,7 @@ De webapplicatie aan de clientkant evalueert velden elke 100 ms opnieuw; met de - name - description - type: enum - dbConfig: - name: CONN1 - type: mysql + dbConfig: CONN1 query: select name, capacity_pct from cmdb.datacenter where datacenter.city_id=$(city) # this cascaded dropdown will react using "id" as placeholder # or "query":"select name from cmdb.datacenter where datacenter.city_id=$(city.id)", diff --git a/i18n/pl/_build_forms/expressions/placeholders.md b/i18n/pl/_build_forms/expressions/placeholders.md index cdb23e9..8719693 100644 --- a/i18n/pl/_build_forms/expressions/placeholders.md +++ b/i18n/pl/_build_forms/expressions/placeholders.md @@ -3,7 +3,7 @@ layout: default title: Symbole zastępcze parent: Wyrażenia nav_order: 0.5 -translated_from: bd63e437a4f77c707a1bf8d8ee99b1516063b62a +translated_from: 7b1ef975e0d5d92c446f050ffda02ee4acfa97aa --- # Symbole zastępcze @@ -31,7 +31,7 @@ wartość, i jest obliczane ponownie przy każdej zmianie tej wartości. W ten s values: [Amsterdam, Brussels] - name: datacenter type: enum - dbConfig: { name: CMDB, type: mysql } + dbConfig: CMDB # a database of Connections > Databases query: select name from cmdb.datacenter where city='$(city)' ``` @@ -73,7 +73,7 @@ Ustawienie `placeholderColumn: "*"` w polu enum sprawia, że `$(field)` daje ca ```yaml - name: city type: enum - dbConfig: { name: CMDB, type: mysql } + dbConfig: CMDB query: select id, name from cmdb.city valueColumn: name placeholderColumn: id # $(city) gives the id; $(city.name) still gives the name diff --git a/i18n/pl/_build_forms/formfields/list.md b/i18n/pl/_build_forms/formfields/list.md index aaed29c..9846e28 100644 --- a/i18n/pl/_build_forms/formfields/list.md +++ b/i18n/pl/_build_forms/formfields/list.md @@ -3,7 +3,7 @@ layout: default title: List parent: Pola formularza nav_order: 13 -translated_from: b6209effaf1cc9783a27c36669004a239751fb3e +translated_from: c454e7962323f4d82488bbdd30f92a7619162c32 --- # Pole List @@ -285,6 +285,9 @@ Wiersze ładowane z zapytania do bazy danych: query: SELECT hostname, role FROM servers WHERE active = 1 ``` +`dbConfig` wskazuje [bazę danych](../databases.html) z **Połączenia > Bazy danych** (od wersji 7.5.0), a w przeciwnym razie poświadczenie typu +baza danych, jak dotąd (zobacz [Bazy danych w formularzach](../databases/in-forms.html)). + #### Z wyrażenia lokalnego (`runLocal`) Wiersze obliczane w przeglądarce przez wyrażenie lokalne: diff --git a/i18n/pl/_build_forms/formfields/yaml.md b/i18n/pl/_build_forms/formfields/yaml.md index b7b05c3..ecb258c 100644 --- a/i18n/pl/_build_forms/formfields/yaml.md +++ b/i18n/pl/_build_forms/formfields/yaml.md @@ -3,7 +3,7 @@ layout: default title: YAML parent: Pola formularza nav_order: 14 -translated_from: c7439c165a54cf525a91d0458a268a66ee8a136f +translated_from: 8dde3e82c2a53e38adc729f5a8f3764b182718c7 --- # Pole YAML @@ -152,9 +152,7 @@ Odwołuj się do niej standardową składnią wyrażeń `$(...)` w definicjach p label: VLAN # filter available VLANs based on the parent's selected region query: "select id,name from vlans where region='$(__parent__.region)'" - dbConfig: - name: MYDB - type: mysql + dbConfig: MYDB # a database of Connections > Databases valueColumn: id placeholderColumn: name diff --git a/i18n/pl/_configure/credentials.md b/i18n/pl/_configure/credentials.md index 4e110b5..ab4a1ec 100644 --- a/i18n/pl/_configure/credentials.md +++ b/i18n/pl/_configure/credentials.md @@ -5,7 +5,7 @@ nav_order: 6 has_children: true has_toc: false permalink: /credentials.html -translated_from: 08110077a1cf59a4a52e078fc2ebc252f7cae48d +translated_from: 0c8fddace3f97bb7d5a3a2642e3fccc296680454 --- # Poświadczenia @@ -40,6 +40,9 @@ do niego po nazwie, więc samo hasło nigdy nie pojawia się w formularzu. Jego bazie danych AnsibleForms, zaszyfrowane kluczem `ENCRYPTION_SECRET`, albo odczytywane z [magazynu sekretów](secret-stores/) przy każdym użyciu poświadczenia. +Od wersji 7.5.0 formularze odpytują [bazę danych](databases.html) z **Połączenia > Bazy danych**, która wskazuje poświadczenie typu +**Baza danych**, którym się łączy; formularz, który wskazuje samo poświadczenie w `dbConfig`, nadal działa jak dotąd. + --- ## Kto może zmienić poświadczenie @@ -69,6 +72,7 @@ trzymają tych użytkowników z dala od sekretów, których inaczej nie mogliby ## Poświadczenia w użyciu -Poświadczenia, na które wciąż wskazują jakieś rekordy, nie można usunąć ani przemianować, bo te rekordy wskazywałyby na nic. +Poświadczenia, na które wciąż wskazują jakieś rekordy, od wersji 7.5.0 także [baza danych](databases.html), nie można usunąć ani +przemianować, bo te rekordy wskazywałyby na nic. Odmowa podaje, ile rekordów go używa; karta **Używane przez** na [jego stronie](credentials/credential-page.html) je wymienia. Najpierw skieruj je na inne poświadczenie, potem je usuń lub przemianuj. diff --git a/i18n/pl/_configure/credentials/credential-page.md b/i18n/pl/_configure/credentials/credential-page.md index 8f57343..b30ab7f 100644 --- a/i18n/pl/_configure/credentials/credential-page.md +++ b/i18n/pl/_configure/credentials/credential-page.md @@ -3,7 +3,7 @@ layout: default title: "Strona poświadczenia" parent: Poświadczenia nav_order: 3 -translated_from: 0269b5c0d313622bea6c910b96231f41ffd852d7 +translated_from: 204eca949763c8c23625369f1d8d8d0d06545c87 --- # Strona poświadczenia @@ -20,7 +20,7 @@ Strona poświadczenia pokazuje kroki jego okna jako karty, a do tego to, co go u | Typ | Do czego służy poświadczenie. | | Logowanie | Każde pole jego typu, jak w kroku **Logowanie** okna: użytkownik, hasło i miejsce logowania (host i port, baza danych, serwer poczty, serwery katalogu, dzierżawa lub wystawca, adres serwera i jego TLS). W poświadczeniu CyberArk: AppID, certyfikat klienta i klucz. | | Magazyn | Baza danych lub Magazyn sekretów oraz magazyn i odwołanie. Nie dotyczy CyberArk ani HashiCorp Vault. | -| Używane przez | Wszystko, co wskazuje to poświadczenie: magazyny sekretów, kanały powiadomień, repozytoria, katalogi LDAP, dostawcy SSO, runnery, asystent czatu, formularze i workflowy projektanta. Wiersz je otwiera. | +| Używane przez | Wszystko, co wskazuje to poświadczenie: magazyny sekretów, kanały powiadomień, repozytoria, katalogi LDAP, dostawcy SSO, runnery, [bazy danych](../databases.html) (od wersji 7.5.0), asystent czatu, formularze i workflowy projektanta. Wiersz je otwiera. | Hasło wpisuje się na karcie **Logowanie** i po zapisaniu nigdy nie jest już pokazywane: pozostawione puste, zapisane hasło zostaje. W poświadczeniu CyberArk zostaw klucz klienta pusty, żeby zachować zapisany. W prawym górnym rogu są **Testuj połączenie** (tylko poświadczenia bazy danych), diff --git a/i18n/pl/_configure/credentials/types.md b/i18n/pl/_configure/credentials/types.md index e3cfb6f..60665f6 100644 --- a/i18n/pl/_configure/credentials/types.md +++ b/i18n/pl/_configure/credentials/types.md @@ -3,7 +3,7 @@ layout: default title: Typy poświadczeń parent: Poświadczenia nav_order: 1 -translated_from: 1f21f8fc1ae73953922d8c9f21de6db05b3b1a87 +translated_from: 2782b0144b1442eceb8684fb1407827cef5fde8f --- # Typy poświadczeń @@ -27,7 +27,7 @@ Typ mówi, do czego służy poświadczenie. Decyduje, o które pola pyta okno i | SSH | Użytkownik i hasło do SSH na serwer, z jego hostem i portem | Playbooki, przez `credentials`, `ansibleCredentials` formularza lub pole poświadczenia, oraz logowanie węzła workflow | | Git | Użytkownik i hasło lub token do repozytoriów git | [Repozytoria](../repositories/authentication.html) | | API | Użytkownik i hasło lub token do API REST | [Wyrażenia REST](../expressions/credentials.html), token bota Telegram, token bearer webhooka, klucz API asystenta czatu | -| Baza danych | Dostęp do bazy danych z jej typem, hostem, portem i nazwą bazy | Zapytania formularzy (`dbConfig`) i `fnCredentials`; można go przetestować | +| Baza danych | Dostęp do bazy danych z jej typem, hostem, portem i nazwą bazy | [Baza danych](../databases.html), którą odpytują formularze (`dbConfig`), od wersji 7.5.0, lub bezpośrednio `dbConfig` formularza; `fnCredentials`; można go przetestować | | CyberArk | Adres CyberArk Central Credential Provider (CCP) i jego TLS oraz AppID, certyfikat klienta i klucz, którymi loguje się magazyn CyberArk | Magazyn sekretów [CyberArk](../secret-stores/cyberark.html) | | SMTP | Serwer poczty, jego port i TLS oraz logowanie (brak dla przekaźnika) | Pocztowy [kanał powiadomień](../notification-channels.html) | | LDAP | Serwery katalogu, port, TLS i certyfikaty oraz jego bind DN i hasło | [Katalog LDAP](../authentication/ldap.html) | @@ -39,7 +39,8 @@ Typ mówi, do czego służy poświadczenie. Decyduje, o które pola pyta okno i | Jenkins | Użytkownik, jego token API i adres Jenkinsa | Runner Jenkins | | HashiCorp Vault | Token i adres, którymi loguje się magazyn Vault | Magazyn sekretów [HashiCorp Vault](../secret-stores/hashicorp-vault.html) | -Poświadczenie bazy danych może być typu MySQL, MSSQL, PostgreSQL, Oracle lub MongoDB. +Poświadczenie bazy danych może być typu MySQL, MSSQL, PostgreSQL, Oracle lub MongoDB. Od wersji 7.5.0 wybiera je baza danych z +[Połączenia > Bazy danych](../databases.html), a aktualizacja do 7.5.0 tworzy jedną bazę danych dla każdego z nich, o tej samej nazwie. W API i w [config seed](../seed/) typy to `userpass`, `ssh`, `git`, `api`, `database`, `cyberark`, `smtp`, `ldap`, `entraid`, `oidc`, `rte`, `awx`, `aap`, `ascender`, `semaphore`, `rundeck`, `jenkins` i `vault`. Aktualizacja z wersji 6 diff --git a/i18n/pl/_configure/customization/index.md b/i18n/pl/_configure/customization/index.md index c52ac04..0976e7d 100644 --- a/i18n/pl/_configure/customization/index.md +++ b/i18n/pl/_configure/customization/index.md @@ -1,11 +1,11 @@ --- layout: default title: Zmienne środowiskowe -nav_order: 8 +nav_order: 9 has_children: true has_toc: false permalink: /customization/ -translated_from: fd6e83f3550f59aa576c8addaf28bfa6115b96a0 +translated_from: e0bc1d7c5bd2df4a3f9036a2d9413a276b228156 --- # Zmienne środowiskowe diff --git a/i18n/pl/_configure/databases.md b/i18n/pl/_configure/databases.md new file mode 100644 index 0000000..cd5e04b --- /dev/null +++ b/i18n/pl/_configure/databases.md @@ -0,0 +1,150 @@ +--- +layout: default +title: Bazy danych +nav_order: 7 +has_children: true +has_toc: false +permalink: /databases.html +translated_from: 7c14f8dd95d2314974c54a3f2c5aba279410d822 +--- + +# Bazy danych +{: .no_toc } + +Bazy danych odpytywane przez formularze, każda z poświadczeniem +{: .fs-6 .fw-300 } + +1. TOC +{:toc} + +--- + +Dla administratorów: nazwij bazy danych, które odpytują twoje formularze, wybierz poświadczenie, którym łączy się każda z nich, i przetestuj je. + +--- + +## W tej sekcji + +| Strona | Czego dotyczy | +|---|---| +| [Strona baz danych](databases/list.html) | Lista baz danych, jej kolumny i okno, które dodaje nową | +| [Strona bazy danych](databases/database-page.html) | Karty bazy danych, formularze, które ją odpytują, Testuj połączenie i Usuń | +| [Bazy danych w formularzach](databases/in-forms.html) | Jak `dbConfig` pola wskazuje bazę danych, i formularze napisane przed 7.5.0 | + +--- + +## Jak to działa + +Od wersji 7.5.0 **baza danych** jest osobnym połączeniem, dodawanym w **Połączenia > Bazy danych**, między **Magazyny sekretów** a **Runnery**. +Ma trzy elementy: + +| Pole | Co to jest | +|---|---| +| Nazwa | Nazwa, którą podaje `dbConfig` pola, aby ją odpytać, np. `cmdb` | +| Opis | Do czego służy | +| Poświadczenie | Poświadczenie z [Połączenia > Poświadczenia](credentials.html) typu **Baza danych**, którym się łączy | + +Poświadczenie przechowuje wszystko o połączeniu, jak dotąd: typ bazy danych (MySQL, MSSQL, PostgreSQL, Oracle lub MongoDB), +host i port, nazwę bazy danych, TLS oraz użytkownika i hasło, zaszyfrowane lub odczytywane z [magazynu sekretów](secret-stores/). +Baza danych nie ma własnego adresu ani sekretu, więc baza danych i runner wybierają swoje poświadczenie w ten sam sposób. + +Pole odpytuje bazę danych, wskazując ją w `dbConfig`: + +```yaml +- name: city + type: enum + dbConfig: cmdb # a database of Connections > Databases + query: select name from cmdb.city +``` + +Nazwa, która nie jest bazą danych, jest wyszukiwana jako poświadczenie typu baza danych, jak przed 7.5.0, więc starsze formularze działają +dalej bez zmian (zobacz [Bazy danych w formularzach](databases/in-forms.html)). + +--- + +## Aktualizacja do 7.5.0 + +Aktualizacja jednorazowo wypełnia **Połączenia > Bazy danych**, więc twoje formularze działają dalej bez żadnej zmiany. + +Tworzy jedną bazę danych dla każdego poświadczenia typu baza danych, z nazwą i opisem poświadczenia, łączącą się tym +poświadczeniem. Formularz, którego `dbConfig` wskazuje poświadczenie, znajduje teraz bazę danych o tej samej nazwie, która łączy się tym samym +poświadczeniem: wynik jest taki sam. Poświadczenia zachowują wszystkie swoje pola. + +Aktualizacja działa tylko raz: baza danych usunięta później nie jest tworzona ponownie, a poświadczenie bazy danych dodane później nie dostaje +bazy danych, dopóki jej nie dodasz. + +--- + +## Poświadczenia w użyciu + +Poświadczenie, którym łączy się baza danych, jest w użyciu, tak jak to, którym loguje się runner. + +Nie można go usunąć ani przemianować, dopóki wskazuje je baza danych, a karta **Używane przez** na jego stronie wymienia bazy danych (zobacz +[Poświadczenia w użyciu](credentials.html#credentials-in-use)). Usunięcie bazy danych pozostawia jej poświadczenie bez zmian. + +--- + +## Kto zarządza bazami danych + +Bazy danych podlegają tym samym opcjom roli co poświadczenia, które wskazują. + +Lista, strona bazy danych i jej API wymagają opcji roli `showSettings` lub `showConnectionsSettings`, tak jak poświadczenia. +Tylko admin może sprawić, że baza danych łączy się poświadczeniem, które może wskazać tylko admin, np. takim, które odczytuje hasło z +magazynu sekretów (zobacz [Kto może zmienić poświadczenie](credentials.html#who-may-change-a-credential)): formularze, które ją odpytują, +łączyłyby się tym poświadczeniem, a **Testuj połączenie** wysłałoby jego sekret na jego serwer. Inny użytkownik może ponownie zapisać bazę +danych z poświadczeniem, które już wskazuje. + +Baza danych zadeklarowana w [config seed](seed/) jest na swojej stronie tylko do odczytu: zmień ją zamiast tego w pliku seed. + +--- + +## Config seed + +Seed deklaruje swoje bazy danych w sekcji `databases:`, po poświadczeniach, które wskazują. + +Każdy element ma `name`, `credential` typu baza danych i opcjonalnie `description`. Poświadczenie może pochodzić z sekcji +`credentials` tego samego seeda albo być utworzone w aplikacji: + +```yaml +credentials: + items: + - name: cmdb-login + credential_type: database + db_type: mysql + host: cmdb.example.com + port: 3306 + user: svc_forms + password: ${SEED_CMDB_PW} + +databases: + items: + - name: cmdb # the name a field's dbConfig gives + description: The CMDB + credential: cmdb-login # a credential of type database +``` + +Zobacz pełny [przykład](seed/example.html) i [Obiekty zarządzane](seed/managed-objects.html), aby dowiedzieć się, jak seed zarządza tym, co deklaruje. + +--- + +## REST API + +Skrypty zarządzają bazami danych przez [REST API](api/), pod `/api/v2/database`, z tymi samymi opcjami roli co strona. + +| Wywołanie | Co robi | +|---|---| +| `GET /api/v2/database` | Wyświetla bazy danych, każdą z typem bazy danych, bazą danych, hostem i portem jej poświadczenia oraz liczbą formularzy, które ją odpytują (`used_by_count`) | +| `GET /api/v2/database?name=` | Pobiera bazę danych o tej nazwie | +| `GET /api/v2/database/` | Pobiera jedną bazę danych | +| `POST /api/v2/database` | Dodaje bazę danych: jej `name`, `credential` i opcjonalnie `description` | +| `PUT /api/v2/database/` | Zmienia bazę danych | +| `DELETE /api/v2/database/` | Usuwa bazę danych; jej poświadczenie zostaje | +| `POST /api/v2/database//check` | Testuje jej połączenie, jej poświadczeniem | + +```bash +curl -X POST https://forms.example.com/api/v2/database \ + -H "Authorization: Bearer " -H "Content-Type: application/json" \ + -d '{ "name": "cmdb", "description": "The CMDB", "credential": "cmdb-login" }' +``` + +`credential`, które nie istnieje lub nie jest typu baza danych, jest odrzucane z kodem `400`. Każda zmiana jest zapisywana w dzienniku audytu. diff --git a/i18n/pl/_configure/databases/database-page.md b/i18n/pl/_configure/databases/database-page.md new file mode 100644 index 0000000..af0a59e --- /dev/null +++ b/i18n/pl/_configure/databases/database-page.md @@ -0,0 +1,61 @@ +--- +layout: default +title: "Strona bazy danych" +parent: Bazy danych +nav_order: 2 +translated_from: b027ce5ca33397772148bb221bd9eaab4984f276 +--- + +# Strona bazy danych +{: .no_toc } + +Karty bazy danych, jej formularze, Testuj połączenie i Usuń +{: .fs-6 .fw-300 } + +1. TOC +{:toc} + +--- + +## Karty + +Strona bazy danych pokazuje kroki jej okna jako karty, a do tego formularze, które ją odpytują: + +| Karta | Co zawiera | +|---|---| +| Szczegóły | **Nazwę**, tę, którą podaje `dbConfig` pola, i **Opis** | +| Poświadczenia | **Poświadczenie**, którym się łączy, czyli poświadczenie z Połączenia > Poświadczenia typu **Baza danych**, które zawiera jej typ bazy danych, host, port, bazę danych, TLS i login | +| Używane przez | Formularze, które ją odpytują, z liczbą na karcie, zobacz [Używane przez](#used-by) | + +Każda karta ma własny adres, np. `/settings/databases//used-by`, więc link lub zakładka ją otwiera. Wyszukiwanie w wierszu tytułu +zawęża wszystkie karty naraz. + +Na karcie **Poświadczenia** **Dodaj poświadczenie** tworzy nowe poświadczenie typu **Baza danych** i je wybiera. Hasło po zapisaniu nigdy +nie jest już pokazywane: zmień je na poświadczeniu. + +--- + +## Używane przez + +Karta **Używane przez** wymienia formularze, których pola odpytują bazę danych, tak jak aplikacja odczytuje je z formularzy. + +| Kolumna | Co pokazuje | +|---|---| +| Formularz | Formularz, wiersz go otwiera | +| Opis | Opis formularza | +| Pole | Pola tego formularza, których `dbConfig` wskazuje bazę danych | + +Pole się liczy, gdy jego `dbConfig` wskazuje bazę danych albo jej poświadczenie, jak robi to formularz napisany przed 7.5.0. Oba +łączą się tym samym poświadczeniem, więc oba są wymienione. Gdy nie ma żadnego, karta mówi **Żaden formularz nie odpytuje tej bazy danych.** + +--- + +## Testuj połączenie i Usuń + +Przyciski w prawym górnym rogu działają na bazie danych w zapisanej postaci. + +**Testuj połączenie** łączy się jej poświadczeniem, uruchamia najprostsze zapytanie jej typu bazy danych, a potem mówi o tym w komunikacie, +**<name> connection ok**, lub podaje, dlaczego się nie udało. To ten sam test co **Testuj połączenie** samego poświadczenia. + +**Usuń** najpierw pyta, potem usuwa bazę danych i wraca do listy. Jej poświadczenie zostaje w **Połączenia > Poświadczenia**. +Obok nich **Zapisz** zapisuje karty Szczegóły i Poświadczenia. diff --git a/i18n/pl/_configure/databases/in-forms.md b/i18n/pl/_configure/databases/in-forms.md new file mode 100644 index 0000000..ab48c1b --- /dev/null +++ b/i18n/pl/_configure/databases/in-forms.md @@ -0,0 +1,77 @@ +--- +layout: default +title: Bazy danych w formularzach +parent: Bazy danych +nav_order: 3 +translated_from: 44e424afaa9938d1bcdb9277d2b7d8e5fefee64e +--- + +# Bazy danych w formularzach +{: .no_toc } + +Jak dbConfig pola wskazuje bazę danych, i starsze formularze +{: .fs-6 .fw-300 } + +1. TOC +{:toc} + +--- + +## Wskazywanie bazy danych + +Pole z `query` uruchamia je na bazie danych, którą wskazuje jego `dbConfig`. + +```yaml +- name: datacenter + type: enum + dbConfig: cmdb # a database of Connections > Databases + query: select name from cmdb.datacenter +``` + +Od wersji 7.5.0 nazwa jest wyszukiwana w tej kolejności: + +| Kolejność | Nazwa to | Zapytanie łączy się | +|---|---|---| +| 1 | Baza danych z **Połączenia > Bazy danych** | Poświadczeniem, które wskazuje ta baza danych | +| 2 | W przeciwnym razie poświadczenie typu **Baza danych** z **Połączenia > Poświadczenia** | Tym poświadczeniem, jak przed 7.5.0 | + +Typ bazy danych (MySQL, MSSQL, PostgreSQL, Oracle lub MongoDB) pochodzi z poświadczenia, więc formularz nigdy go nie podaje. Poświadczenie +bez niego jest odczytywane jako MySQL. + +--- + +## Formularze napisane przed 7.5.0 + +Każdy formularz, który wskazywał poświadczenie w `dbConfig`, działa dalej bez zmian. + +[Aktualizacja do 7.5.0](../databases.html#upgrading-to-750) tworzy bazę danych dla każdego poświadczenia bazy danych, o tej samej nazwie i +łączącą się tym poświadczeniem, więc nazwa podana przez formularz znajduje teraz najpierw bazę danych, która prowadzi do tego samego loginu. +Poświadczenie typu baza danych bez bazy danych o jego nazwie jest nadal znajdowane w kroku 2. + +Baza danych i poświadczenie mogą mieć tę samą nazwę, tak jak robi to aktualizacja. Wygrywa baza danych: skieruj ją na inne poświadczenie, a każdy +formularz podający tę nazwę pójdzie za nią; tak formularz przechodzi na inny serwer bez edytowania. + +--- + +## Postacie dbConfig + +Trzy postacie, które `dbConfig` zawsze przyjmował, nadal działają, a każda nazwa jest wyszukiwana jak wyżej. + +| `dbConfig` | Przykład | Co robi | +|---|---|---| +| Nazwa | `dbConfig: cmdb` | Odpytuje tę bazę danych | +| Lista nazw | `dbConfig: [cmdb-eu, cmdb-us]` | Uruchamia zapytanie na każdej i łączy wyniki; duplikaty nie są usuwane | +| Obiekt (przestarzały) | `dbConfig: { name: cmdb, type: mysql }` | Odpytuje bazę danych lub poświadczenie `name`; przestarzały, użyj samej nazwy | + +Odwołanie do [magazynu sekretów](../secret-stores/#inline-without-a-credential-row), takie jak `dbConfig: secret:vault:secret/cmdb/db`, nie jest +nazwą bazy danych ani poświadczenia i nadal jest odczytywane z magazynu jak dotąd. + +--- + +## Które formularze odpytują bazę danych + +Aplikacja odczytuje formularze, aby ustalić, które z nich odpytują każdą bazę danych. + +Kolumna **Używane przez** na [stronie baz danych](list.html) je liczy, a karta **Używane przez** na +[stronie bazy danych](database-page.html#used-by) wymienia je z ich polami. Pole, które zamiast tego wskazuje poświadczenie bazy danych, +też się liczy. Zmieniaj nazwę bazy danych dopiero po zmianie formularzy, które podają jej starą nazwę. diff --git a/i18n/pl/_configure/databases/list.md b/i18n/pl/_configure/databases/list.md new file mode 100644 index 0000000..4b12dfb --- /dev/null +++ b/i18n/pl/_configure/databases/list.md @@ -0,0 +1,64 @@ +--- +layout: default +title: Strona baz danych +parent: Bazy danych +nav_order: 1 +translated_from: 66ffec0a34395642b0208e81078dbc725bdc7123 +--- + +# Strona baz danych +{: .no_toc } + +Lista baz danych, jej kolumny i okno, które dodaje nową +{: .fs-6 .fw-300 } + +1. TOC +{:toc} + +--- + +## Lista + +Strona w **Połączenia > Bazy danych** wyświetla każdą bazę danych z tymi kolumnami: + +| Kolumna | Znaczenie | +|---|---| +| Nazwa | Jak odwołują się do niej formularze, przez `dbConfig: ` | +| Opis | Do czego służy | +| Typ bazy danych | Typ jej poświadczenia: MySQL, MSSQL, PostgreSQL, Oracle lub MongoDB | +| Baza danych | Baza danych, którą otwiera jej poświadczenie | + +**Kolumny** dodaje dwie kolejne, domyślnie wyłączone: **Host**, gdzie łączy się jej poświadczenie, z portem, jeśli go ma, oraz **Używane przez**, +czyli ile formularzy ją odpytuje, po jej nazwie lub po nazwie jej poświadczenia (zobacz [Używane przez](database-page.html#used-by)). + +Typ bazy danych, baza danych i host są odczytywane z poświadczenia: zmień je na poświadczeniu, w +**Połączenia > Poświadczenia**. Żadna kolumna nie pokazuje użytkownika ani hasła. + +--- + +## Dodawanie bazy danych + +**Dodaj bazę danych** otwiera okno w dwóch krokach, tak jak okno runnera. + +| Krok | Pola | +|---|---| +| Baza danych | **Nazwa** i **Opis**. Nazwa jest wymagana i unikalna | +| Poświadczenia | **Poświadczenie**, wymagane: poświadczenie typu **Baza danych**. Tylko takie są proponowane | + +W kroku **Poświadczenia** **Dodaj poświadczenie** otwiera okno nowego poświadczenia typu **Baza danych** (zobacz +[Strona poświadczeń](../credentials/list.html)) i wybiera je po zapisaniu, więc bazę danych i jej login można dodać za jednym razem. + +--- + +## Menu wiersza + +Wiersz otwiera własną stronę bazy danych, a jego menu oferuje: + +| Akcja | Co robi | +|---|---| +| Edytuj | Otwiera jej stronę | +| Testuj połączenie | Łączy się jej poświadczeniem, uruchamia najprostsze zapytanie jej typu bazy danych i mówi, czy się udało | +| Usuń | Usuwa bazę danych po potwierdzeniu. Jej poświadczenie zostaje | + +Usunięcie bazy danych, którą formularze nadal wskazują, sprawia, że ich zapytania kończą się błędem, chyba że zostaje poświadczenie o tej samej +nazwie, do którego mogą się cofnąć (zobacz [Bazy danych w formularzach](in-forms.html)). Najpierw sprawdź jej kartę **Używane przez**. diff --git a/i18n/pl/_configure/disclaimer.md b/i18n/pl/_configure/disclaimer.md index b62c38a..fa99d3c 100644 --- a/i18n/pl/_configure/disclaimer.md +++ b/i18n/pl/_configure/disclaimer.md @@ -1,11 +1,11 @@ --- layout: default title: Zastrzeżenie -nav_order: 7 +nav_order: 8 has_children: true has_toc: false permalink: /disclaimer.html -translated_from: a22b56db001904583c51e6bd28f1281737f32a32 +translated_from: ad00bcbac9d3c64c103b15d26914eec84174f6b6 --- # Zastrzeżenie diff --git a/i18n/pl/_configure/notification-channels.md b/i18n/pl/_configure/notification-channels.md index 22fcf93..4f38106 100644 --- a/i18n/pl/_configure/notification-channels.md +++ b/i18n/pl/_configure/notification-channels.md @@ -1,11 +1,11 @@ --- layout: default title: Kanały powiadomień -nav_order: 9 +nav_order: 10 has_children: true has_toc: false permalink: /notification-channels.html -translated_from: 1488a67f6f281b0236e4bad3a8b3d0c3bb32326c +translated_from: 1756db6ff7b9197f88b34a0c089953a68493e008 --- # Kanały powiadomień diff --git a/i18n/pl/_configure/production/index.md b/i18n/pl/_configure/production/index.md index be2e764..7381282 100644 --- a/i18n/pl/_configure/production/index.md +++ b/i18n/pl/_configure/production/index.md @@ -1,11 +1,11 @@ --- layout: default title: Środowisko produkcyjne -nav_order: 12 +nav_order: 13 has_children: true has_toc: false permalink: /production/ -translated_from: 2d7f4be84a76837fae34c1b414a229448bfae4ea +translated_from: 9f501893a2c4476707ac2f11f25e67998200e9e7 --- # Środowisko produkcyjne diff --git a/i18n/pl/_configure/rte/index.md b/i18n/pl/_configure/rte/index.md index 35be0c6..69018f5 100644 --- a/i18n/pl/_configure/rte/index.md +++ b/i18n/pl/_configure/rte/index.md @@ -1,11 +1,11 @@ --- layout: default title: RTE -nav_order: 10 +nav_order: 11 has_children: true has_toc: false permalink: /rte/ -translated_from: 2c3f3f81ad8faaf18eac56f18782ef5f78111b04 +translated_from: 75a4facc8ad51d9d74b8fccfd2bbfd7ba48b17f9 --- # Środowiska uruchomieniowe (RTE) diff --git a/i18n/pl/_configure/runners.md b/i18n/pl/_configure/runners.md index 113a8ce..b46bcc6 100644 --- a/i18n/pl/_configure/runners.md +++ b/i18n/pl/_configure/runners.md @@ -1,11 +1,11 @@ --- layout: default title: Runnery -nav_order: 11 +nav_order: 12 has_children: true has_toc: false permalink: /runners.html -translated_from: 339eda183d7748fa923090d9f8e26e2f112b1352 +translated_from: e6663cf2e7dc14a1559383c7f49fd968a4cbf635 --- # Runnery diff --git a/i18n/pl/_configure/secret-stores/index.md b/i18n/pl/_configure/secret-stores/index.md index 8d6a84e..0b31618 100644 --- a/i18n/pl/_configure/secret-stores/index.md +++ b/i18n/pl/_configure/secret-stores/index.md @@ -1,11 +1,11 @@ --- layout: default title: Magazyny sekretów -nav_order: 13 +nav_order: 14 has_children: true has_toc: false permalink: /secret-stores/ -translated_from: 595f94a84c4e8182b1b79289eb309a814dec1287 +translated_from: c7e5d9fb5e640896bd51e3fa20d76be092857ce2 --- # Magazyny sekretów @@ -95,6 +95,9 @@ fn.fnCredentials('vault:secret/myapp/prod') // the store named `vault` dbConfig: secret:vault:secret/cmdb/db ``` +Od wersji 7.5.0 `dbConfig` wskazuje najpierw [bazę danych](../databases.html); odwołanie takie jak to nie jest bazą danych, więc nadal jest +odczytywane z magazynu. Baza danych może też odczytywać swój login z magazynu, przez poświadczenie typu baza danych, które go używa. + Bez wiersza poświadczenia sekret bazy danych potrzebuje co najmniej `db_type` i hosta, na przykład: ```json diff --git a/i18n/pl/_configure/security/index.md b/i18n/pl/_configure/security/index.md index c03cf86..e94deeb 100644 --- a/i18n/pl/_configure/security/index.md +++ b/i18n/pl/_configure/security/index.md @@ -1,11 +1,11 @@ --- layout: default title: Bezpieczeństwo -nav_order: 14 +nav_order: 15 has_children: true has_toc: false permalink: /security/ -translated_from: f2b18fd1638cb4ccb2401652eafb82e6ce0e82eb +translated_from: e299ab0a4ffb1c12441a3b3fec6eaaef4a19de79 --- # Bezpieczeństwo diff --git a/i18n/pl/_configure/seed/example.md b/i18n/pl/_configure/seed/example.md index 0c626b8..a12ca28 100644 --- a/i18n/pl/_configure/seed/example.md +++ b/i18n/pl/_configure/seed/example.md @@ -3,7 +3,7 @@ layout: default title: Przykład parent: Config seed nav_order: 1 -translated_from: f085641a12234a5485ea59e73e76c29e7452d5e9 +translated_from: cf1f2b0122ca5cd2dfcc411e4ed20fb683b079bf --- # Przykład @@ -72,6 +72,12 @@ credentials: user: svc_forms # leave user and password out for a relay password: ${SEED_SMTP_PW} +databases: # from 7.5.0 + items: + - name: production-db # the name a field's dbConfig gives + description: The CMDB + credential: production-db # a credential of the credentials section, of type database + repositories: prune: true items: @@ -209,3 +215,6 @@ walidacji seeda. RTE w trybie bazy danych może się samo zarejestrować, zanim seed zostanie zastosowany. Runner RTE z seeda, którego `uri` jest adresem, pod którym takie RTE się zarejestrowało, **przejmuje** ten wiersz: przyjmuje zadeklarowaną nazwę i pola, a worker przestaje go usuwać, gdy RTE przestaje odpowiadać, zamiast tworzyć drugi runner dla tego samego RTE. + +Od wersji 7.5.0 sekcja `databases` deklaruje [bazy danych](../databases.html), które odpytują formularze. Element ma `name`, `credential` +typu baza danych i opcjonalny `description`; seed stosuje go po poświadczeniach i odrzuca poświadczenie innego typu. diff --git a/i18n/pl/_configure/seed/index.md b/i18n/pl/_configure/seed/index.md index d541ed2..08388e2 100644 --- a/i18n/pl/_configure/seed/index.md +++ b/i18n/pl/_configure/seed/index.md @@ -5,7 +5,7 @@ nav_order: 4 has_children: true has_toc: false permalink: /seed/ -translated_from: 030ff83b1d7c3920600b7e0668b05ab24b949b67 +translated_from: 8f8eb798f4ada177abf5210049a523f7f2f4265b --- # Config seed @@ -33,6 +33,7 @@ deklaruje obiekty, które wcześniej istniały tylko w bazie danych: | `runners` | Gdzie działają zadania: RTE, AWX / AAP / Ascender, Semaphore, Rundeck, Jenkins | | `secret_stores` | Magazyny sekretów (HashiCorp Vault, ...) | | `credentials` | Poświadczenia | +| `databases` | Bazy danych, które odpytują formularze, każda ze swoim poświadczeniem, od wersji 7.5.0 | | `oauth2` | Dostawców SSO: Entra ID i OIDC | | `repositories` | Repozytoria git | | `syslog_servers` | Serwery syslog, które otrzymują dziennik serwera i wpisy audytu | diff --git a/i18n/pl/_configure/users-and-groups.md b/i18n/pl/_configure/users-and-groups.md index 4eb0578..8f54194 100644 --- a/i18n/pl/_configure/users-and-groups.md +++ b/i18n/pl/_configure/users-and-groups.md @@ -1,11 +1,11 @@ --- layout: default title: Użytkownicy i grupy -nav_order: 15 +nav_order: 16 has_children: true has_toc: false permalink: /users-and-groups.html -translated_from: 8ed4dc089c64e091636c29884af1cd1002eb40aa +translated_from: 07178b6b66a60d91e5a8ff3c417da3771730bc5e --- # Użytkownicy i grupy diff --git a/i18n/pl/_reference/faq.md b/i18n/pl/_reference/faq.md index e8f9cc8..3a817f6 100644 --- a/i18n/pl/_reference/faq.md +++ b/i18n/pl/_reference/faq.md @@ -2,7 +2,7 @@ layout: default title: FAQ nav_order: 2 -translated_from: 6616eaf626411a615cb68d8cc4f2a43401fe21d9 +translated_from: 487a25c7f3b24b3a0c0d4df08c858a52d48f8556 --- # Najczęściej zadawane pytania @@ -171,11 +171,11 @@ Aplikacja webowa klienta ponownie oblicza pola co 100 ms; przy obecnych procesor > Odwołanie do innego pola enum zwraca wybrane wartości, **a nie** całą listę rozwijaną. Użyj właściwości `placeholderColumn` lub notacji z kropką, na przykład `$(city.name)`. > **Nowość w v4.0.20**: ustawienie placeholderColumn na "*" zwraca cały rekord zamiast jednej kolumny. +Przykłady odpytują `CONN1`, [bazę danych](databases.html) z Połączenia > Bazy danych (od wersji 7.5.0) lub poświadczenie typu baza danych. + ```yaml - type: enum - dbConfig: - name: CONN1 - type: mysql + dbConfig: CONN1 query: select name from cmdb.city name: city_name label: Select a city @@ -184,9 +184,7 @@ Aplikacja webowa klienta ponownie oblicza pola co 100 ms; przy obecnych procesor model: cmdb.city group: CMDB - type: enum - dbConfig: - name: CONN1 - type: mysql + dbConfig: CONN1 query: select datacenter.name from cmdb.datacenter,cmdb.city where datacenter.city_id=city.id and city.name='$(city_name)' name: datacenter_name @@ -201,9 +199,7 @@ Aplikacja webowa klienta ponownie oblicza pola co 100 ms; przy obecnych procesor # or use the placeholderColumn property - type: enum - dbConfig: - name: CONN1 - type: mysql + dbConfig: CONN1 query: select id,name,description from cmdb.city name: city label: Select a city @@ -218,9 +214,7 @@ Aplikacja webowa klienta ponownie oblicza pola co 100 ms; przy obecnych procesor - name - description - type: enum - dbConfig: - name: CONN1 - type: mysql + dbConfig: CONN1 query: select name, capacity_pct from cmdb.datacenter where datacenter.city_id=$(city) # this cascaded dropdown will react using "id" as placeholder # or "query":"select name from cmdb.datacenter where datacenter.city_id=$(city.id)", diff --git a/i18n/pt/_build_forms/expressions/placeholders.md b/i18n/pt/_build_forms/expressions/placeholders.md index 0a10270..f6db152 100644 --- a/i18n/pt/_build_forms/expressions/placeholders.md +++ b/i18n/pt/_build_forms/expressions/placeholders.md @@ -3,7 +3,7 @@ layout: default title: Marcadores parent: Expressões nav_order: 0.5 -translated_from: bd63e437a4f77c707a1bf8d8ee99b1516063b62a +translated_from: 7b1ef975e0d5d92c446f050ffda02ee4acfa97aa --- # Marcadores @@ -31,7 +31,7 @@ valor e é avaliado de novo sempre que esse valor muda. É assim que se constroe values: [Amsterdam, Brussels] - name: datacenter type: enum - dbConfig: { name: CMDB, type: mysql } + dbConfig: CMDB # a database of Connections > Databases query: select name from cmdb.datacenter where city='$(city)' ``` @@ -73,7 +73,7 @@ Definir `placeholderColumn: "*"` num enum faz com que `$(field)` devolva o regis ```yaml - name: city type: enum - dbConfig: { name: CMDB, type: mysql } + dbConfig: CMDB query: select id, name from cmdb.city valueColumn: name placeholderColumn: id # $(city) gives the id; $(city.name) still gives the name diff --git a/i18n/pt/_build_forms/formfields/list.md b/i18n/pt/_build_forms/formfields/list.md index 172455f..e67c005 100644 --- a/i18n/pt/_build_forms/formfields/list.md +++ b/i18n/pt/_build_forms/formfields/list.md @@ -3,7 +3,7 @@ layout: default title: List parent: Campos de formulário nav_order: 13 -translated_from: b6209effaf1cc9783a27c36669004a239751fb3e +translated_from: c454e7962323f4d82488bbdd30f92a7619162c32 --- # Campo List @@ -285,6 +285,9 @@ Linhas carregadas a partir de uma consulta à base de dados: query: SELECT hostname, role FROM servers WHERE active = 1 ``` +`dbConfig` nomeia uma [base de dados](../databases.html) de **Ligações > Bases de dados** (a partir da 7.5.0), ou então uma credencial do tipo +base de dados, como antes (consulte [Bases de dados nos formulários](../databases/in-forms.html)). + #### A partir de uma expressão local (`runLocal`) Linhas calculadas no navegador por uma expressão local: diff --git a/i18n/pt/_build_forms/formfields/yaml.md b/i18n/pt/_build_forms/formfields/yaml.md index 0399bfb..eba3279 100644 --- a/i18n/pt/_build_forms/formfields/yaml.md +++ b/i18n/pt/_build_forms/formfields/yaml.md @@ -3,7 +3,7 @@ layout: default title: YAML parent: Campos de formulário nav_order: 14 -translated_from: c7439c165a54cf525a91d0458a268a66ee8a136f +translated_from: 8dde3e82c2a53e38adc729f5a8f3764b182718c7 --- # Campo YAML @@ -152,9 +152,7 @@ Refira-a com a sintaxe de expressões habitual `$(...)` nas definições dos cam label: VLAN # filter available VLANs based on the parent's selected region query: "select id,name from vlans where region='$(__parent__.region)'" - dbConfig: - name: MYDB - type: mysql + dbConfig: MYDB # a database of Connections > Databases valueColumn: id placeholderColumn: name diff --git a/i18n/pt/_configure/credentials.md b/i18n/pt/_configure/credentials.md index 38cd189..1403c9d 100644 --- a/i18n/pt/_configure/credentials.md +++ b/i18n/pt/_configure/credentials.md @@ -5,7 +5,7 @@ nav_order: 6 has_children: true has_toc: false permalink: /credentials.html -translated_from: 08110077a1cf59a4a52e078fc2ebc252f7cae48d +translated_from: 0c8fddace3f97bb7d5a3a2642e3fccc296680454 --- # Credenciais @@ -40,6 +40,9 @@ a ela pelo seu nome, por isso a palavra-passe propriamente dita nunca aparece nu base de dados do AnsibleForms, cifrados com `ENCRYPTION_SECRET`, ou lidos de um [cofre de segredos](secret-stores/) cada vez que a credencial é usada. +A partir da 7.5.0, os formulários consultam uma [base de dados](databases.html) de **Ligações > Bases de dados**, que nomeia a credencial do +tipo **Base de dados** com que se liga; um formulário que nomeia a própria credencial no `dbConfig` continua a funcionar, como antes. + --- ## Quem pode alterar uma credencial @@ -69,6 +72,7 @@ mantêm esses utilizadores afastados de segredos que de outra forma não poderia ## Credenciais em uso -Uma credencial que ainda é nomeada por registos não pode ser eliminada nem renomeada, porque estes ficariam a apontar para nada. +Uma credencial que ainda é nomeada por registos, entre eles uma [base de dados](databases.html) a partir da 7.5.0, não pode ser eliminada +nem renomeada, porque estes ficariam a apontar para nada. A recusa indica quantos registos a usam; o separador **Usado por** da [sua página](credentials/credential-page.html) lista-os. Aponte-os primeiro para outra credencial e depois elimine-a ou renomeie-a. diff --git a/i18n/pt/_configure/credentials/credential-page.md b/i18n/pt/_configure/credentials/credential-page.md index 8599efd..c65fb44 100644 --- a/i18n/pt/_configure/credentials/credential-page.md +++ b/i18n/pt/_configure/credentials/credential-page.md @@ -3,7 +3,7 @@ layout: default title: "A página de uma credencial" parent: Credenciais nav_order: 3 -translated_from: 0269b5c0d313622bea6c910b96231f41ffd852d7 +translated_from: 204eca949763c8c23625369f1d8d8d0d06545c87 --- # A página de uma credencial @@ -20,7 +20,7 @@ A página de uma credencial mostra os passos da sua caixa de diálogo como separ | Tipo | Para que serve a credencial. | | Acesso | Todos os campos do seu tipo, como no passo **Acesso** da caixa de diálogo: o utilizador, a palavra-passe e onde inicia sessão (host e porta, a base de dados, o servidor de correio, os servidores do diretório, o tenant ou o emissor, o endereço do servidor e o seu TLS). O AppID, o certificado de cliente e a chave de uma credencial CyberArk. | | Armazenamento | Base de dados ou Cofre de segredos, e o cofre e a referência. Não existe para CyberArk nem para HashiCorp Vault. | -| Usado por | Tudo o que nomeia esta credencial: cofres de segredos, canais de notificação, repositórios, diretórios LDAP, fornecedores SSO, runners, o assistente de chat, formulários e os workflows do designer. Uma linha abre-o. | +| Usado por | Tudo o que nomeia esta credencial: cofres de segredos, canais de notificação, repositórios, diretórios LDAP, fornecedores SSO, runners, [bases de dados](../databases.html) (a partir da 7.5.0), o assistente de chat, formulários e os workflows do designer. Uma linha abre-o. | A palavra-passe é escrita no separador **Acesso**, e nunca volta a ser mostrada depois de guardada: deixada vazia, a guardada mantém-se. Numa credencial CyberArk, deixe a chave de cliente vazia para manter a guardada. No canto superior direito estão **Testar ligação** (só para credenciais de base de dados), diff --git a/i18n/pt/_configure/credentials/types.md b/i18n/pt/_configure/credentials/types.md index 14a8739..e6425fe 100644 --- a/i18n/pt/_configure/credentials/types.md +++ b/i18n/pt/_configure/credentials/types.md @@ -3,7 +3,7 @@ layout: default title: Tipos de credencial parent: Credenciais nav_order: 1 -translated_from: 1f21f8fc1ae73953922d8c9f21de6db05b3b1a87 +translated_from: 2782b0144b1442eceb8684fb1407827cef5fde8f --- # Tipos de credencial @@ -27,7 +27,7 @@ O tipo diz para que serve uma credencial. Decide que campos a caixa de diálogo | SSH | Um utilizador e uma palavra-passe para SSH a um servidor, com o seu host e porta | Playbooks, através das `credentials` ou `ansibleCredentials` de um formulário ou de um campo de credencial, e o acesso de um nó de workflow | | Git | Um utilizador e uma palavra-passe ou um token para repositórios git | [Repositórios](../repositories/authentication.html) | | API | Um utilizador e uma palavra-passe ou um token para uma API REST | [Expressões REST](../expressions/credentials.html), o token de um bot do Telegram, o bearer token de um webhook, a chave de API do assistente de chat | -| Base de dados | Um acesso a uma base de dados, com o seu tipo, host, porta e nome da base de dados | Consultas de formulários (`dbConfig`) e `fnCredentials`; pode ser testado | +| Base de dados | Um acesso a uma base de dados, com o seu tipo, host, porta e nome da base de dados | Uma [base de dados](../databases.html) que os formulários consultam (`dbConfig`), a partir da 7.5.0, ou diretamente o `dbConfig` de um formulário; `fnCredentials`; pode ser testado | | CyberArk | O endereço do CyberArk Central Credential Provider (CCP) e o seu TLS, e o AppID, o certificado de cliente e a chave com que um cofre CyberArk inicia sessão | Um cofre de segredos [CyberArk](../secret-stores/cyberark.html) | | SMTP | Um servidor de correio, a sua porta e TLS, e o seu acesso (nenhum para um relay) | Um [canal de notificação](../notification-channels.html) de correio | | LDAP | Os servidores, a porta, o TLS e os certificados de um diretório, e o seu bind DN e palavra-passe | Um [diretório LDAP](../authentication/ldap.html) | @@ -39,7 +39,8 @@ O tipo diz para que serve uma credencial. Decide que campos a caixa de diálogo | Jenkins | Um utilizador, o seu token de API e o endereço de um Jenkins | Um runner Jenkins | | HashiCorp Vault | O token e o endereço com que um cofre Vault inicia sessão | Um cofre de segredos [HashiCorp Vault](../secret-stores/hashicorp-vault.html) | -Uma credencial de base de dados pode ser do tipo MySQL, MSSQL, PostgreSQL, Oracle ou MongoDB. +Uma credencial de base de dados pode ser do tipo MySQL, MSSQL, PostgreSQL, Oracle ou MongoDB. A partir da 7.5.0 é escolhida por uma base de +dados de [Ligações > Bases de dados](../databases.html), e a atualização para a 7.5.0 cria uma base de dados para cada uma, com o mesmo nome. Na API e no [config seed](../seed/), os tipos são `userpass`, `ssh`, `git`, `api`, `database`, `cyberark`, `smtp`, `ldap`, `entraid`, `oidc`, `rte`, `awx`, `aap`, `ascender`, `semaphore`, `rundeck`, `jenkins` e `vault`. A atualização a partir da 6 diff --git a/i18n/pt/_configure/customization/index.md b/i18n/pt/_configure/customization/index.md index b4b22cd..29e4d57 100644 --- a/i18n/pt/_configure/customization/index.md +++ b/i18n/pt/_configure/customization/index.md @@ -1,11 +1,11 @@ --- layout: default title: Variáveis de ambiente -nav_order: 8 +nav_order: 9 has_children: true has_toc: false permalink: /customization/ -translated_from: fd6e83f3550f59aa576c8addaf28bfa6115b96a0 +translated_from: e0bc1d7c5bd2df4a3f9036a2d9413a276b228156 --- # Variáveis de ambiente diff --git a/i18n/pt/_configure/databases.md b/i18n/pt/_configure/databases.md new file mode 100644 index 0000000..ed19943 --- /dev/null +++ b/i18n/pt/_configure/databases.md @@ -0,0 +1,150 @@ +--- +layout: default +title: Bases de dados +nav_order: 7 +has_children: true +has_toc: false +permalink: /databases.html +translated_from: 7c14f8dd95d2314974c54a3f2c5aba279410d822 +--- + +# Bases de dados +{: .no_toc } + +As bases de dados que os formulários consultam, e a sua credencial +{: .fs-6 .fw-300 } + +1. TOC +{:toc} + +--- + +Para administradores: dê nome às bases de dados que os seus formulários consultam, escolha a credencial com que cada uma se liga, e teste-as. + +--- + +## Nesta secção + +| Página | O que abrange | +|---|---| +| [A página de bases de dados](databases/list.html) | A lista de bases de dados, as suas colunas, e a caixa de diálogo que adiciona uma | +| [A página de uma base de dados](databases/database-page.html) | Os separadores de uma base de dados, os formulários que a consultam, Testar ligação e Eliminar | +| [Bases de dados nos formulários](databases/in-forms.html) | Como o `dbConfig` de um campo nomeia uma base de dados, e os formulários escritos antes da 7.5.0 | + +--- + +## Como funciona + +A partir da 7.5.0, uma **base de dados** é uma ligação própria, adicionada em **Ligações > Bases de dados**, entre **Cofres de segredos** e +**Runners**. Tem três coisas: + +| Campo | O que é | +|---|---| +| Nome | O nome que o `dbConfig` de um campo indica para a consultar, como `cmdb` | +| Descrição | Para que serve | +| Credencial | A credencial de [Ligações > Credenciais](credentials.html), do tipo **Base de dados**, com que se liga | + +A credencial guarda tudo sobre a ligação, como antes: o tipo de base de dados (MySQL, MSSQL, PostgreSQL, Oracle ou MongoDB), +o host e a porta, o nome da base de dados, o TLS, e o utilizador e a palavra-passe, guardados cifrados ou lidos de um [cofre de segredos](secret-stores/). +Uma base de dados não tem endereço nem segredo próprios, por isso uma base de dados e um runner escolhem a sua credencial da mesma forma. + +Um campo consulta uma base de dados nomeando-a no `dbConfig`: + +```yaml +- name: city + type: enum + dbConfig: cmdb # a database of Connections > Databases + query: select name from cmdb.city +``` + +Um nome que não é uma base de dados é procurado como uma credencial do tipo base de dados, como antes da 7.5.0, por isso os formulários mais +antigos continuam a funcionar sem alterações (consulte [Bases de dados nos formulários](databases/in-forms.html)). + +--- + +## Atualizar para a 7.5.0 + +A atualização preenche **Ligações > Bases de dados** uma vez, para que os formulários que tem continuem a funcionar sem alterações. + +Cria uma base de dados para cada credencial do tipo base de dados, com o nome e a descrição da credencial, ligando-se com essa +credencial. Um formulário cujo `dbConfig` nomeia a credencial encontra agora a base de dados com o mesmo nome, que se liga com a mesma +credencial: o resultado é o mesmo. As credenciais mantêm todos os campos que têm. + +A atualização corre uma única vez: uma base de dados eliminada depois não volta a ser criada, e uma credencial de base de dados adicionada +mais tarde não recebe nenhuma base de dados até que adicione uma. + +--- + +## Credenciais em uso + +Uma credencial com que uma base de dados se liga está em uso, tal como uma com que um runner inicia sessão. + +Não pode ser eliminada nem renomeada enquanto uma base de dados a nomear, e o separador **Usado por** da sua página lista as bases de dados (consulte +[Credenciais em uso](credentials.html#credentials-in-use)). Eliminar uma base de dados deixa a sua credencial como está. + +--- + +## Quem gere as bases de dados + +As bases de dados seguem as opções de função das credenciais que nomeiam. + +A lista, a página de uma base de dados e a sua API precisam da opção de função `showSettings` ou `showConnectionsSettings`, tal como as credenciais. +Só um admin pode fazer uma base de dados ligar-se com uma credencial que só um admin pode nomear, como uma que lê a sua palavra-passe de um +cofre de segredos (consulte [Quem pode alterar uma credencial](credentials.html#who-may-change-a-credential)): os formulários que a consultam +ligar-se-iam com essa credencial, e **Testar ligação** enviaria o seu segredo para o seu servidor. Outro utilizador pode voltar a guardar uma +base de dados com a credencial que ela já nomeia. + +Uma base de dados declarada no [config seed](seed/) é só de leitura na sua página: altere-a antes no ficheiro de seed. + +--- + +## O config seed + +Um seed declara as suas bases de dados numa secção `databases:`, depois das credenciais que estas nomeiam. + +Cada item tem um `name`, uma `credential` do tipo base de dados e, opcionalmente, uma `description`. A credencial pode vir da secção +`credentials` do mesmo seed ou ser uma criada na aplicação: + +```yaml +credentials: + items: + - name: cmdb-login + credential_type: database + db_type: mysql + host: cmdb.example.com + port: 3306 + user: svc_forms + password: ${SEED_CMDB_PW} + +databases: + items: + - name: cmdb # the name a field's dbConfig gives + description: The CMDB + credential: cmdb-login # a credential of type database +``` + +Consulte o [exemplo](seed/example.html) completo e [Objetos geridos](seed/managed-objects.html) para ver como o seed gere o que declara. + +--- + +## A API REST + +Os scripts gerem as bases de dados através da [API REST](api/), em `/api/v2/database`, com as mesmas opções de função que a página. + +| Chamada | O que faz | +|---|---| +| `GET /api/v2/database` | Lista as bases de dados, cada uma com o tipo de base de dados, a base de dados, o host e a porta da sua credencial, e quantos formulários a consultam (`used_by_count`) | +| `GET /api/v2/database?name=` | Obtém a base de dados com esse nome | +| `GET /api/v2/database/` | Obtém uma base de dados | +| `POST /api/v2/database` | Adiciona uma base de dados: o seu `name`, `credential` e, opcionalmente, `description` | +| `PUT /api/v2/database/` | Altera uma base de dados | +| `DELETE /api/v2/database/` | Elimina uma base de dados; a sua credencial mantém-se | +| `POST /api/v2/database//check` | Testa a sua ligação, com a sua credencial | + +```bash +curl -X POST https://forms.example.com/api/v2/database \ + -H "Authorization: Bearer " -H "Content-Type: application/json" \ + -d '{ "name": "cmdb", "description": "The CMDB", "credential": "cmdb-login" }' +``` + +Uma `credential` que não existe, ou que não é do tipo base de dados, é recusada com `400`. Todas as alterações são escritas no registo de auditoria. diff --git a/i18n/pt/_configure/databases/database-page.md b/i18n/pt/_configure/databases/database-page.md new file mode 100644 index 0000000..c8342db --- /dev/null +++ b/i18n/pt/_configure/databases/database-page.md @@ -0,0 +1,61 @@ +--- +layout: default +title: "A página de uma base de dados" +parent: Bases de dados +nav_order: 2 +translated_from: b027ce5ca33397772148bb221bd9eaab4984f276 +--- + +# A página de uma base de dados +{: .no_toc } + +Separadores, formulários que a consultam, Testar ligação e Eliminar +{: .fs-6 .fw-300 } + +1. TOC +{:toc} + +--- + +## Separadores + +A página de uma base de dados mostra os passos da sua caixa de diálogo como separadores, mais os formulários que a consultam: + +| Separador | O que contém | +|---|---| +| Detalhes | O **Nome**, o que o `dbConfig` de um campo indica, e a **Descrição** | +| Credenciais | A **Credencial** com que se liga, uma credencial de Ligações > Credenciais do tipo **Base de dados**, que contém o seu tipo de base de dados, host, porta, base de dados, TLS e acesso | +| Usado por | Os formulários que a consultam, com a contagem no separador, consulte [Usado por](#used-by) | + +Cada separador tem o seu próprio endereço, como `/settings/databases//used-by`, por isso uma ligação ou um marcador abre-o. A pesquisa da linha +do título filtra todos os separadores de uma vez. + +No separador **Credenciais**, **Adicionar credencial** cria uma nova credencial do tipo **Base de dados** e escolhe-a. Uma palavra-passe nunca volta +a ser mostrada depois de guardada: altere-a na credencial. + +--- + +## Usado por + +O separador **Usado por** lista os formulários cujos campos consultam a base de dados, tal como a aplicação os lê dos formulários. + +| Coluna | O que mostra | +|---|---| +| Formulário | O formulário, uma linha abre-o | +| Descrição | A descrição do formulário | +| Campo | Os campos desse formulário cujo `dbConfig` nomeia a base de dados | + +Um campo conta quando o seu `dbConfig` nomeia a base de dados, ou nomeia a sua credencial, como faz um formulário escrito antes da 7.5.0. Ambos +se ligam com a mesma credencial, por isso ambos são listados. Quando não há nenhum, o separador diz **Nenhum formulário consulta esta base de dados.** + +--- + +## Testar ligação e Eliminar + +Os botões no canto superior direito atuam sobre a base de dados tal como está guardada. + +**Testar ligação** liga-se com a sua credencial e corre a consulta mínima do seu tipo de base de dados, e depois indica-o numa mensagem, +**<name> connection ok**, ou porque falhou. É o mesmo teste que o **Testar ligação** da própria credencial. + +**Eliminar** pergunta primeiro, depois elimina a base de dados e volta à lista. A sua credencial mantém-se em **Ligações > Credenciais**. +Ao lado deles, **Guardar** guarda os separadores Detalhes e Credenciais. diff --git a/i18n/pt/_configure/databases/in-forms.md b/i18n/pt/_configure/databases/in-forms.md new file mode 100644 index 0000000..bbe807c --- /dev/null +++ b/i18n/pt/_configure/databases/in-forms.md @@ -0,0 +1,77 @@ +--- +layout: default +title: Bases de dados nos formulários +parent: Bases de dados +nav_order: 3 +translated_from: 44e424afaa9938d1bcdb9277d2b7d8e5fefee64e +--- + +# Bases de dados nos formulários +{: .no_toc } + +Como o dbConfig nomeia uma base de dados, e os formulários antigos +{: .fs-6 .fw-300 } + +1. TOC +{:toc} + +--- + +## Nomear uma base de dados + +Um campo com uma `query` corre-a na base de dados que o seu `dbConfig` nomeia. + +```yaml +- name: datacenter + type: enum + dbConfig: cmdb # a database of Connections > Databases + query: select name from cmdb.datacenter +``` + +A partir da 7.5.0, o nome é procurado por esta ordem: + +| Ordem | O nome é | A consulta liga-se com | +|---|---|---| +| 1 | Uma base de dados de **Ligações > Bases de dados** | A credencial que essa base de dados nomeia | +| 2 | Senão, uma credencial do tipo **Base de dados** de **Ligações > Credenciais** | Essa credencial, como antes da 7.5.0 | + +O tipo de base de dados (MySQL, MSSQL, PostgreSQL, Oracle ou MongoDB) vem da credencial, por isso o formulário nunca o indica. Uma credencial +sem tipo é lida como MySQL. + +--- + +## Formulários escritos antes da 7.5.0 + +Todos os formulários que nomeavam uma credencial no `dbConfig` continuam a funcionar, sem alterações. + +A [atualização para a 7.5.0](../databases.html#upgrading-to-750) cria uma base de dados para cada credencial de base de dados, com o mesmo nome e +ligando-se com essa credencial, por isso o nome que um formulário indica encontra agora primeiro a base de dados, que leva ao mesmo acesso. Uma credencial +do tipo base de dados sem nenhuma base de dados com o seu nome continua a ser encontrada pelo passo 2. + +Uma base de dados e uma credencial podem partilhar um nome, como faz a atualização. A base de dados prevalece: aponte-a para outra credencial e todos +os formulários que indicam esse nome seguem-na, e é assim que um formulário passa para outro servidor sem ser editado. + +--- + +## As formas do dbConfig + +As três formas que o `dbConfig` sempre aceitou continuam a funcionar, com cada nome procurado como acima. + +| `dbConfig` | Exemplo | O que faz | +|---|---|---| +| Um nome | `dbConfig: cmdb` | Consulta essa base de dados | +| Uma lista de nomes | `dbConfig: [cmdb-eu, cmdb-us]` | Corre a consulta em cada uma e junta os resultados; os duplicados não são removidos | +| Um objeto (legado) | `dbConfig: { name: cmdb, type: mysql }` | Consulta a base de dados ou a credencial `name`; obsoleto, use só o nome | + +Uma referência a um [cofre de segredos](../secret-stores/#inline-without-a-credential-row), como `dbConfig: secret:vault:secret/cmdb/db`, não é +um nome de base de dados nem de credencial, e continua a ser lida do cofre como antes. + +--- + +## Que formulários consultam uma base de dados + +A aplicação lê os formulários para saber quais deles consultam cada base de dados. + +A coluna **Usado por** da [página de bases de dados](list.html) conta-os, e o separador **Usado por** da +[página de uma base de dados](database-page.html#used-by) lista-os com os seus campos. Um campo que nomeia antes a credencial da base de dados +também conta. Renomeie uma base de dados só depois de alterar os formulários que indicam o seu nome antigo. diff --git a/i18n/pt/_configure/databases/list.md b/i18n/pt/_configure/databases/list.md new file mode 100644 index 0000000..a82d603 --- /dev/null +++ b/i18n/pt/_configure/databases/list.md @@ -0,0 +1,64 @@ +--- +layout: default +title: A página de bases de dados +parent: Bases de dados +nav_order: 1 +translated_from: 66ffec0a34395642b0208e81078dbc725bdc7123 +--- + +# A página de bases de dados +{: .no_toc } + +A lista de bases de dados, as suas colunas, e como adicionar uma +{: .fs-6 .fw-300 } + +1. TOC +{:toc} + +--- + +## A lista + +A página em **Ligações > Bases de dados** lista todas as bases de dados com estas colunas: + +| Coluna | Significado | +|---|---| +| Nome | Como os formulários se referem a ela, com `dbConfig: ` | +| Descrição | Para que serve | +| Tipo de base de dados | O da sua credencial: MySQL, MSSQL, PostgreSQL, Oracle ou MongoDB | +| Base de dados | A base de dados que a sua credencial abre | + +**Colunas** acrescenta mais duas, desligadas por predefinição: **Host**, onde a sua credencial se liga, com a porta quando tem uma, e **Usado por**, +quantos formulários a consultam, pelo seu nome ou pelo da sua credencial (consulte [Usado por](database-page.html#used-by)). + +O tipo de base de dados, a base de dados e o host são lidos da credencial: altere-os na credencial, em +**Ligações > Credenciais**. Nenhuma coluna mostra um utilizador nem uma palavra-passe. + +--- + +## Adicionar uma base de dados + +**Adicionar base de dados** abre uma caixa de diálogo em dois passos, como a de um runner. + +| Passo | Campos | +|---|---| +| Base de dados | **Nome** e **Descrição**. O nome é obrigatório, e único | +| Credenciais | **Credencial**, obrigatória: uma credencial do tipo **Base de dados**. Só essas são propostas | + +No passo **Credenciais**, **Adicionar credencial** abre a caixa de diálogo de uma nova credencial do tipo **Base de dados** (consulte +[A página de credenciais](../credentials/list.html)) e escolhe-a depois de guardada, para que uma base de dados e o seu acesso possam ser adicionados de uma vez. + +--- + +## O menu da linha + +Uma linha abre a página própria da base de dados, e o seu menu oferece: + +| Ação | O que faz | +|---|---| +| Editar | Abre a sua página | +| Testar ligação | Liga-se com a sua credencial e corre a consulta mínima do seu tipo de base de dados, e diz se funcionou | +| Eliminar | Elimina a base de dados, depois de uma confirmação. A sua credencial mantém-se | + +Eliminar uma base de dados que os formulários ainda nomeiam faz falhar as suas consultas, a menos que fique uma credencial com o mesmo nome a que +possam recorrer (consulte [Bases de dados nos formulários](in-forms.html)). Verifique primeiro o seu separador **Usado por**. diff --git a/i18n/pt/_configure/disclaimer.md b/i18n/pt/_configure/disclaimer.md index 78b81ac..485461d 100644 --- a/i18n/pt/_configure/disclaimer.md +++ b/i18n/pt/_configure/disclaimer.md @@ -1,11 +1,11 @@ --- layout: default title: Aviso legal -nav_order: 7 +nav_order: 8 has_children: true has_toc: false permalink: /disclaimer.html -translated_from: a22b56db001904583c51e6bd28f1281737f32a32 +translated_from: ad00bcbac9d3c64c103b15d26914eec84174f6b6 --- # Aviso legal diff --git a/i18n/pt/_configure/notification-channels.md b/i18n/pt/_configure/notification-channels.md index 1f0f0f5..9428caf 100644 --- a/i18n/pt/_configure/notification-channels.md +++ b/i18n/pt/_configure/notification-channels.md @@ -1,11 +1,11 @@ --- layout: default title: Canais de notificação -nav_order: 9 +nav_order: 10 has_children: true has_toc: false permalink: /notification-channels.html -translated_from: 1488a67f6f281b0236e4bad3a8b3d0c3bb32326c +translated_from: 1756db6ff7b9197f88b34a0c089953a68493e008 --- # Canais de notificação diff --git a/i18n/pt/_configure/production/index.md b/i18n/pt/_configure/production/index.md index 6264d7e..3168373 100644 --- a/i18n/pt/_configure/production/index.md +++ b/i18n/pt/_configure/production/index.md @@ -1,11 +1,11 @@ --- layout: default title: Em produção -nav_order: 12 +nav_order: 13 has_children: true has_toc: false permalink: /production/ -translated_from: 2d7f4be84a76837fae34c1b414a229448bfae4ea +translated_from: 9f501893a2c4476707ac2f11f25e67998200e9e7 --- # Em produção diff --git a/i18n/pt/_configure/rte/index.md b/i18n/pt/_configure/rte/index.md index 7efa1dc..ab04eeb 100644 --- a/i18n/pt/_configure/rte/index.md +++ b/i18n/pt/_configure/rte/index.md @@ -1,11 +1,11 @@ --- layout: default title: RTE -nav_order: 10 +nav_order: 11 has_children: true has_toc: false permalink: /rte/ -translated_from: 2c3f3f81ad8faaf18eac56f18782ef5f78111b04 +translated_from: 75a4facc8ad51d9d74b8fccfd2bbfd7ba48b17f9 --- # Ambientes de execução (RTE) diff --git a/i18n/pt/_configure/runners.md b/i18n/pt/_configure/runners.md index 639e113..ef4e56b 100644 --- a/i18n/pt/_configure/runners.md +++ b/i18n/pt/_configure/runners.md @@ -1,11 +1,11 @@ --- layout: default title: Runners -nav_order: 11 +nav_order: 12 has_children: true has_toc: false permalink: /runners.html -translated_from: 339eda183d7748fa923090d9f8e26e2f112b1352 +translated_from: e6663cf2e7dc14a1559383c7f49fd968a4cbf635 --- # Runners diff --git a/i18n/pt/_configure/secret-stores/index.md b/i18n/pt/_configure/secret-stores/index.md index 24b5b98..55ad29b 100644 --- a/i18n/pt/_configure/secret-stores/index.md +++ b/i18n/pt/_configure/secret-stores/index.md @@ -1,11 +1,11 @@ --- layout: default title: Cofres de segredos -nav_order: 13 +nav_order: 14 has_children: true has_toc: false permalink: /secret-stores/ -translated_from: 595f94a84c4e8182b1b79289eb309a814dec1287 +translated_from: c7e5d9fb5e640896bd51e3fa20d76be092857ce2 --- # Cofres de segredos @@ -95,6 +95,9 @@ fn.fnCredentials('vault:secret/myapp/prod') // the store named `vault` dbConfig: secret:vault:secret/cmdb/db ``` +A partir da 7.5.0, um `dbConfig` nomeia primeiro uma [base de dados](../databases.html); uma referência como esta não é uma base de dados, por isso +continua a ser lida do cofre. Uma base de dados também pode ler o seu acesso de um cofre, através de uma credencial do tipo base de dados que use um. + Sem linha de credencial, um segredo de base de dados precisa de pelo menos um `db_type` e um host, por exemplo: ```json diff --git a/i18n/pt/_configure/security/index.md b/i18n/pt/_configure/security/index.md index a66ee79..7b8ded6 100644 --- a/i18n/pt/_configure/security/index.md +++ b/i18n/pt/_configure/security/index.md @@ -1,11 +1,11 @@ --- layout: default title: Segurança -nav_order: 14 +nav_order: 15 has_children: true has_toc: false permalink: /security/ -translated_from: f2b18fd1638cb4ccb2401652eafb82e6ce0e82eb +translated_from: e299ab0a4ffb1c12441a3b3fec6eaaef4a19de79 --- # Segurança diff --git a/i18n/pt/_configure/seed/example.md b/i18n/pt/_configure/seed/example.md index 0a86d4b..9071263 100644 --- a/i18n/pt/_configure/seed/example.md +++ b/i18n/pt/_configure/seed/example.md @@ -3,7 +3,7 @@ layout: default title: Exemplo parent: Config seed nav_order: 1 -translated_from: f085641a12234a5485ea59e73e76c29e7452d5e9 +translated_from: cf1f2b0122ca5cd2dfcc411e4ed20fb683b079bf --- # Exemplo @@ -72,6 +72,12 @@ credentials: user: svc_forms # leave user and password out for a relay password: ${SEED_SMTP_PW} +databases: # from 7.5.0 + items: + - name: production-db # the name a field's dbConfig gives + description: The CMDB + credential: production-db # a credential of the credentials section, of type database + repositories: prune: true items: @@ -209,3 +215,6 @@ validação do seed. Um RTE em modo base de dados pode registar-se a si próprio antes de o seed ser aplicado. Um runner RTE do seed cujo `uri` é o endereço em que um RTE destes se registou **adota** essa linha: fica com o nome e os campos declarados, e o worker deixa de o remover quando o RTE deixa de responder, em vez de haver um segundo runner para o mesmo RTE. + +A partir da 7.5.0, a secção `databases` declara as [bases de dados](../databases.html) que os formulários consultam. Um item tem um `name`, uma +`credential` do tipo base de dados e uma `description` opcional; o seed aplica-o depois das credenciais, e recusa uma credencial de outro tipo. diff --git a/i18n/pt/_configure/seed/index.md b/i18n/pt/_configure/seed/index.md index 07d6fec..8b04ee9 100644 --- a/i18n/pt/_configure/seed/index.md +++ b/i18n/pt/_configure/seed/index.md @@ -5,7 +5,7 @@ nav_order: 4 has_children: true has_toc: false permalink: /seed/ -translated_from: 030ff83b1d7c3920600b7e0668b05ab24b949b67 +translated_from: 8f8eb798f4ada177abf5210049a523f7f2f4265b --- # Config seed @@ -33,6 +33,7 @@ declara objetos que antes só existiam na base de dados: | `runners` | Onde as tarefas correm: RTE, AWX / AAP / Ascender, Semaphore, Rundeck, Jenkins | | `secret_stores` | Cofres de segredos (HashiCorp Vault, ...) | | `credentials` | Credenciais | +| `databases` | As bases de dados que os formulários consultam, cada uma com a sua credencial, a partir da 7.5.0 | | `oauth2` | Fornecedores SSO: Entra ID e OIDC | | `repositories` | Repositórios git | | `syslog_servers` | Os servidores syslog que recebem o registo do servidor e as entradas de auditoria | diff --git a/i18n/pt/_configure/users-and-groups.md b/i18n/pt/_configure/users-and-groups.md index 2b9134c..2fade6d 100644 --- a/i18n/pt/_configure/users-and-groups.md +++ b/i18n/pt/_configure/users-and-groups.md @@ -1,11 +1,11 @@ --- layout: default title: Utilizadores e grupos -nav_order: 15 +nav_order: 16 has_children: true has_toc: false permalink: /users-and-groups.html -translated_from: 8ed4dc089c64e091636c29884af1cd1002eb40aa +translated_from: 07178b6b66a60d91e5a8ff3c417da3771730bc5e --- # Utilizadores e grupos diff --git a/i18n/pt/_reference/faq.md b/i18n/pt/_reference/faq.md index bd92a9c..ee81e58 100644 --- a/i18n/pt/_reference/faq.md +++ b/i18n/pt/_reference/faq.md @@ -2,7 +2,7 @@ layout: default title: FAQ nav_order: 2 -translated_from: 6616eaf626411a615cb68d8cc4f2a43401fe21d9 +translated_from: 487a25c7f3b24b3a0c0d4df08c858a52d48f8556 --- # Perguntas frequentes @@ -171,11 +171,11 @@ A aplicação web do cliente reavalia os campos a cada 100 ms; com os processado > Uma referência a outro campo enum devolve os valores selecionados, **e não** a lista pendente completa. Use a propriedade `placeholderColumn` ou a notação de ponto, como `$(city.name)`. > **Novo na v4.0.20**: definir placeholderColumn como "*" devolve o registo completo em vez de uma única coluna. +Os exemplos consultam `CONN1`, uma [base de dados](databases.html) de Ligações > Bases de dados (a partir da 7.5.0) ou uma credencial do tipo base de dados. + ```yaml - type: enum - dbConfig: - name: CONN1 - type: mysql + dbConfig: CONN1 query: select name from cmdb.city name: city_name label: Select a city @@ -184,9 +184,7 @@ A aplicação web do cliente reavalia os campos a cada 100 ms; com os processado model: cmdb.city group: CMDB - type: enum - dbConfig: - name: CONN1 - type: mysql + dbConfig: CONN1 query: select datacenter.name from cmdb.datacenter,cmdb.city where datacenter.city_id=city.id and city.name='$(city_name)' name: datacenter_name @@ -201,9 +199,7 @@ A aplicação web do cliente reavalia os campos a cada 100 ms; com os processado # or use the placeholderColumn property - type: enum - dbConfig: - name: CONN1 - type: mysql + dbConfig: CONN1 query: select id,name,description from cmdb.city name: city label: Select a city @@ -218,9 +214,7 @@ A aplicação web do cliente reavalia os campos a cada 100 ms; com os processado - name - description - type: enum - dbConfig: - name: CONN1 - type: mysql + dbConfig: CONN1 query: select name, capacity_pct from cmdb.datacenter where datacenter.city_id=$(city) # this cascaded dropdown will react using "id" as placeholder # or "query":"select name from cmdb.datacenter where datacenter.city_id=$(city.id)", diff --git a/i18n/zh/_build_forms/expressions/placeholders.md b/i18n/zh/_build_forms/expressions/placeholders.md index 3826b75..0622d5e 100644 --- a/i18n/zh/_build_forms/expressions/placeholders.md +++ b/i18n/zh/_build_forms/expressions/placeholders.md @@ -3,7 +3,7 @@ layout: default title: 占位符 parent: 表达式 nav_order: 0.5 -translated_from: bd63e437a4f77c707a1bf8d8ee99b1516063b62a +translated_from: 7b1ef975e0d5d92c446f050ffda02ee4acfa97aa --- # 占位符 @@ -31,7 +31,7 @@ translated_from: bd63e437a4f77c707a1bf8d8ee99b1516063b62a values: [Amsterdam, Brussels] - name: datacenter type: enum - dbConfig: { name: CMDB, type: mysql } + dbConfig: CMDB # a database of Connections > Databases query: select name from cmdb.datacenter where city='$(city)' ``` @@ -73,7 +73,7 @@ expression: $(__user__.groups) ```yaml - name: city type: enum - dbConfig: { name: CMDB, type: mysql } + dbConfig: CMDB query: select id, name from cmdb.city valueColumn: name placeholderColumn: id # $(city) gives the id; $(city.name) still gives the name diff --git a/i18n/zh/_build_forms/formfields/list.md b/i18n/zh/_build_forms/formfields/list.md index 81615c3..6d34beb 100644 --- a/i18n/zh/_build_forms/formfields/list.md +++ b/i18n/zh/_build_forms/formfields/list.md @@ -3,7 +3,7 @@ layout: default title: List parent: 表单字段 nav_order: 13 -translated_from: b6209effaf1cc9783a27c36669004a239751fb3e +translated_from: c454e7962323f4d82488bbdd30f92a7619162c32 --- # List 字段 @@ -285,6 +285,9 @@ list 字段提供以下功能: query: SELECT hostname, role FROM servers WHERE active = 1 ``` +`dbConfig` 指定 **连接 > 数据库** 中的 [数据库](../databases.html)(从 7.5.0 起),否则和以前一样指定类型为数据库的 +凭据(参见 [表单中的数据库](../databases/in-forms.html))。 + #### 来自本地表达式( `runLocal` ) 由本地表达式在浏览器中计算出的行: diff --git a/i18n/zh/_build_forms/formfields/yaml.md b/i18n/zh/_build_forms/formfields/yaml.md index d81c764..a81e8df 100644 --- a/i18n/zh/_build_forms/formfields/yaml.md +++ b/i18n/zh/_build_forms/formfields/yaml.md @@ -3,7 +3,7 @@ layout: default title: YAML parent: 表单字段 nav_order: 14 -translated_from: c7439c165a54cf525a91d0458a268a66ee8a136f +translated_from: 8dde3e82c2a53e38adc729f5a8f3764b182718c7 --- # YAML 字段 @@ -152,9 +152,7 @@ translated_from: c7439c165a54cf525a91d0458a268a66ee8a136f label: VLAN # filter available VLANs based on the parent's selected region query: "select id,name from vlans where region='$(__parent__.region)'" - dbConfig: - name: MYDB - type: mysql + dbConfig: MYDB # a database of Connections > Databases valueColumn: id placeholderColumn: name diff --git a/i18n/zh/_configure/credentials.md b/i18n/zh/_configure/credentials.md index cc3e504..3daf5f8 100644 --- a/i18n/zh/_configure/credentials.md +++ b/i18n/zh/_configure/credentials.md @@ -5,7 +5,7 @@ nav_order: 6 has_children: true has_toc: false permalink: /credentials.html -translated_from: 08110077a1cf59a4a52e078fc2ebc252f7cae48d +translated_from: 0c8fddace3f97bb7d5a3a2642e3fccc296680454 --- # 凭据 @@ -40,6 +40,9 @@ translated_from: 08110077a1cf59a4a52e078fc2ebc252f7cae48d AnsibleForms 数据库中并用 `ENCRYPTION_SECRET` 加密,要么在每次使用凭据时从 [密钥库](secret-stores/) 读取。 +从 7.5.0 起,表单查询 **连接 > 数据库** 中的 [数据库](databases.html),该数据库引用它用于连接的、类型为 +**数据库** 的凭据;在 `dbConfig` 中直接指定凭据的表单仍和以前一样有效。 + --- ## 谁可以修改凭据 @@ -69,6 +72,6 @@ AnsibleForms 数据库中并用 `ENCRYPTION_SECRET` 加密,要么在每次使 ## 正在使用的凭据 -仍被记录引用的凭据不能删除或重命名,否则这些记录将指向不存在的对象。 +仍被记录引用的凭据(从 7.5.0 起也包括 [数据库](databases.html))不能删除或重命名,否则这些记录将指向不存在的对象。 拒绝消息会说明有多少条记录在使用它;[其页面](credentials/credential-page.html) 的 **使用者** 选项卡会列出这些记录。 请先将它们指向另一个凭据,然后再删除或重命名该凭据。 diff --git a/i18n/zh/_configure/credentials/credential-page.md b/i18n/zh/_configure/credentials/credential-page.md index 825a363..e8bc313 100644 --- a/i18n/zh/_configure/credentials/credential-page.md +++ b/i18n/zh/_configure/credentials/credential-page.md @@ -3,7 +3,7 @@ layout: default title: 单个凭据的页面 parent: 凭据 nav_order: 3 -translated_from: 0269b5c0d313622bea6c910b96231f41ffd852d7 +translated_from: 204eca949763c8c23625369f1d8d8d0d06545c87 --- # 单个凭据的页面 @@ -20,7 +20,7 @@ translated_from: 0269b5c0d313622bea6c910b96231f41ffd852d7 | 类型 | 凭据的用途。 | | 登录 | 其类型的所有字段,与对话框的 **登录** 步骤相同:用户、密码,以及登录目标(主机和端口、数据库、邮件服务器、目录的服务器、租户或颁发者、服务器地址及其 TLS)。CyberArk 凭据还包括 AppID、客户端证书和密钥。 | | 存储 | 数据库或密钥库,以及密钥库和引用。不适用于 CyberArk 和 HashiCorp Vault。 | -| 使用者 | 引用此凭据的所有对象:密钥库、通知通道、仓库、LDAP 目录、SSO 提供商、运行器、聊天助手、表单以及设计器中的工作流。点击某一行即可打开它。 | +| 使用者 | 引用此凭据的所有对象:密钥库、通知通道、仓库、LDAP 目录、SSO 提供商、运行器、[数据库](../databases.html)(从 7.5.0 起)、聊天助手、表单以及设计器中的工作流。点击某一行即可打开它。 | 密码在 **登录** 选项卡中输入,保存后永远不会再显示:留空则保留已保存的密码。对于 CyberArk 凭据,将客户端密钥留空即可保留已保存的密钥。右上角有 **测试连接**(仅限数据库凭据)、 diff --git a/i18n/zh/_configure/credentials/types.md b/i18n/zh/_configure/credentials/types.md index 8c929df..be63dbb 100644 --- a/i18n/zh/_configure/credentials/types.md +++ b/i18n/zh/_configure/credentials/types.md @@ -3,7 +3,7 @@ layout: default title: 凭据类型 parent: 凭据 nav_order: 1 -translated_from: 1f21f8fc1ae73953922d8c9f21de6db05b3b1a87 +translated_from: 2782b0144b1442eceb8684fb1407827cef5fde8f --- # 凭据类型 @@ -27,7 +27,7 @@ translated_from: 1f21f8fc1ae73953922d8c9f21de6db05b3b1a87 | SSH | 用于 SSH 连接服务器的用户和密码,以及主机和端口 | Playbook,通过表单的 `credentials`、`ansibleCredentials` 或凭据字段,以及工作流节点的登录 | | Git | 用于 git 仓库的用户名和密码或令牌 | [仓库](../repositories/authentication.html) | | API | 用于 REST API 的用户名和密码或令牌 | [REST 表达式](../expressions/credentials.html)、Telegram 机器人令牌、webhook 的 bearer 令牌、聊天助手的 API 密钥 | -| 数据库 | 数据库登录,包括其类型、主机、端口和数据库名称 | 表单查询(`dbConfig`)和 `fnCredentials`;可以测试 | +| 数据库 | 数据库登录,包括其类型、主机、端口和数据库名称 | 表单查询的 [数据库](../databases.html)(`dbConfig`,从 7.5.0 起),或直接由表单的 `dbConfig` 引用;`fnCredentials`;可以测试 | | CyberArk | CyberArk Central Credential Provider(CCP)的地址及其 TLS,以及 CyberArk 密钥库登录所用的 AppID、客户端证书和密钥 | [CyberArk](../secret-stores/cyberark.html) 密钥库 | | SMTP | 邮件服务器、其端口和 TLS,以及登录信息(中继无需) | 邮件 [通知通道](../notification-channels.html) | | LDAP | 目录的服务器、端口、TLS 和证书,以及绑定 DN 和密码 | [LDAP 目录](../authentication/ldap.html) | @@ -39,7 +39,8 @@ translated_from: 1f21f8fc1ae73953922d8c9f21de6db05b3b1a87 | Jenkins | Jenkins 的用户、其 API 令牌和地址 | Jenkins 运行器 | | HashiCorp Vault | Vault 密钥库登录所用的令牌和地址 | [HashiCorp Vault](../secret-stores/hashicorp-vault.html) 密钥库 | -数据库凭据的类型可以是 MySQL、MSSQL、PostgreSQL、Oracle 或 MongoDB。 +数据库凭据的类型可以是 MySQL、MSSQL、PostgreSQL、Oracle 或 MongoDB。从 7.5.0 起,它由 +[连接 > 数据库](../databases.html) 中的数据库选择,升级到 7.5.0 时会为每个这样的凭据创建一个同名的数据库。 在 API 和 [配置种子](../seed/) 中,类型为 `userpass`、`ssh`、`git`、`api`、`database`、`cyberark`、`smtp`、 `ldap`、`entraid`、`oidc`、`rte`、`awx`、`aap`、`ascender`、`semaphore`、`rundeck`、`jenkins` 和 `vault`。从 6 升级时, diff --git a/i18n/zh/_configure/customization/index.md b/i18n/zh/_configure/customization/index.md index 981d122..2b1aaea 100644 --- a/i18n/zh/_configure/customization/index.md +++ b/i18n/zh/_configure/customization/index.md @@ -1,11 +1,11 @@ --- layout: default title: 环境变量 -nav_order: 8 +nav_order: 9 has_children: true has_toc: false permalink: /customization/ -translated_from: fd6e83f3550f59aa576c8addaf28bfa6115b96a0 +translated_from: e0bc1d7c5bd2df4a3f9036a2d9413a276b228156 --- # 环境变量 diff --git a/i18n/zh/_configure/databases.md b/i18n/zh/_configure/databases.md new file mode 100644 index 0000000..1cf6de4 --- /dev/null +++ b/i18n/zh/_configure/databases.md @@ -0,0 +1,148 @@ +--- +layout: default +title: 数据库 +nav_order: 7 +has_children: true +has_toc: false +permalink: /databases.html +translated_from: 7c14f8dd95d2314974c54a3f2c5aba279410d822 +--- + +# 数据库 +{: .no_toc } + +表单查询的数据库,每个数据库都通过一个数据库凭据连接 +{: .fs-6 .fw-300 } + +1. TOC +{:toc} + +--- + +面向管理员:为表单查询的数据库命名,选择每个数据库用于连接的凭据,并测试它们。 + +--- + +## 本节内容 + +| 页面 | 内容 | +|---|---| +| [数据库页面](databases/list.html) | 数据库列表、其各列,以及添加数据库的对话框 | +| [单个数据库的页面](databases/database-page.html) | 数据库的各个选项卡、查询它的表单、测试连接和删除 | +| [表单中的数据库](databases/in-forms.html) | 字段的 `dbConfig` 如何指定数据库,以及 7.5.0 之前编写的表单 | + +--- + +## 工作原理 + +从 7.5.0 起,**数据库** 是一个独立的连接,在 **连接 > 数据库** 下添加,位于 **密钥库** 和 **运行器** 之间。 +它包含三项: + +| 字段 | 含义 | +|---|---| +| 名称 | 字段的 `dbConfig` 用来查询它的名称,例如 `cmdb` | +| 描述 | 它的用途 | +| 凭据 | 它用于连接的 [连接 > 凭据](credentials.html) 中类型为 **数据库** 的凭据 | + +与连接有关的一切仍和以前一样保存在凭据中:数据库类型(MySQL、MSSQL、PostgreSQL、Oracle 或 MongoDB)、 +主机和端口、数据库名称、TLS,以及用户和密码,它们以加密形式保存,或从 [密钥库](secret-stores/) 读取。 +数据库本身不保存地址,也不保存密钥,因此数据库和运行器以同样的方式选择凭据。 + +字段通过在 `dbConfig` 中指定数据库来查询它: + +```yaml +- name: city + type: enum + dbConfig: cmdb # a database of Connections > Databases + query: select name from cmdb.city +``` + +不是数据库的名称会像 7.5.0 之前一样,作为类型为数据库的凭据来查找,因此旧表单无需修改即可继续 +工作(参见 [表单中的数据库](databases/in-forms.html))。 + +--- + +## 升级到 7.5.0 + +升级会一次性填充 **连接 > 数据库**,因此现有表单无需修改即可继续工作。 + +它为每个类型为数据库的凭据创建一个数据库,使用该凭据的名称和描述,并通过该凭据连接。`dbConfig` 中指定该凭据的 +表单现在会找到同名的数据库,而该数据库通过同一个凭据连接:结果相同。凭据保留其所有字段。 + +升级只运行一次:之后删除的数据库不会再次创建,之后添加的数据库凭据在你自己添加数据库之前 +没有对应的数据库。 + +--- + +## 正在使用的凭据 + +数据库用于连接的凭据处于使用中,就像运行器用于登录的凭据一样。 + +只要有数据库引用它,就不能删除或重命名,其页面的 **使用者** 选项卡会列出这些数据库(参见 +[正在使用的凭据](credentials.html#credentials-in-use))。删除数据库时,其凭据保持不变。 + +--- + +## 谁可以管理数据库 + +数据库遵循其所引用凭据的角色选项。 + +列表、数据库的页面及其 API 需要 `showSettings` 或 `showConnectionsSettings` 角色选项,与凭据相同。 +只有管理员才能让数据库使用只有管理员可以引用的凭据连接,例如从密钥库读取密码的凭据(参见 +[谁可以修改凭据](credentials.html#who-may-change-a-credential)):查询它的表单会使用该凭据连接,而 +**测试连接** 会把它的密钥发送到其服务器。其他用户仍可以使用它已引用的凭据再次保存数据库。 + +在 [配置种子](seed/) 中声明的数据库在其页面上为只读:请改为在种子文件中修改。 + +--- + +## 配置种子 + +种子在 `databases:` 部分中声明其数据库,位于它们所引用的凭据之后。 + +每一项有一个 `name`、一个类型为数据库的 `credential`,以及可选的 `description`。凭据可以来自同一种子的 +`credentials` 部分,也可以是在应用中创建的凭据: + +```yaml +credentials: + items: + - name: cmdb-login + credential_type: database + db_type: mysql + host: cmdb.example.com + port: 3306 + user: svc_forms + password: ${SEED_CMDB_PW} + +databases: + items: + - name: cmdb # the name a field's dbConfig gives + description: The CMDB + credential: cmdb-login # a credential of type database +``` + +完整内容参见 [示例](seed/example.html),种子如何管理其声明的对象参见 [托管对象](seed/managed-objects.html)。 + +--- + +## REST API + +脚本通过 [REST API](api/) 在 `/api/v2/database` 下管理数据库,所需角色选项与页面相同。 + +| 调用 | 作用 | +|---|---| +| `GET /api/v2/database` | 列出数据库,每个都带有其凭据的数据库类型、数据库、主机和端口,以及查询它的表单数量(`used_by_count`) | +| `GET /api/v2/database?name=` | 获取该名称的数据库 | +| `GET /api/v2/database/` | 获取一个数据库 | +| `POST /api/v2/database` | 添加数据库:其 `name`、`credential` 以及可选的 `description` | +| `PUT /api/v2/database/` | 修改数据库 | +| `DELETE /api/v2/database/` | 删除数据库;其凭据保留 | +| `POST /api/v2/database//check` | 使用其凭据测试连接 | + +```bash +curl -X POST https://forms.example.com/api/v2/database \ + -H "Authorization: Bearer " -H "Content-Type: application/json" \ + -d '{ "name": "cmdb", "description": "The CMDB", "credential": "cmdb-login" }' +``` + +不存在或类型不是数据库的 `credential` 会以 `400` 被拒绝。每次修改都会写入审计日志。 diff --git a/i18n/zh/_configure/databases/database-page.md b/i18n/zh/_configure/databases/database-page.md new file mode 100644 index 0000000..8e91934 --- /dev/null +++ b/i18n/zh/_configure/databases/database-page.md @@ -0,0 +1,61 @@ +--- +layout: default +title: 单个数据库的页面 +parent: 数据库 +nav_order: 2 +translated_from: b027ce5ca33397772148bb221bd9eaab4984f276 +--- + +# 单个数据库的页面 +{: .no_toc } + +数据库的各个选项卡、查询它的表单、测试连接和删除 +{: .fs-6 .fw-300 } + +1. TOC +{:toc} + +--- + +## 选项卡 + +数据库的页面将其对话框的各个步骤显示为选项卡,并额外显示查询它的表单: + +| 选项卡 | 内容 | +|---|---| +| 详情 | **名称**,即字段的 `dbConfig` 给出的名称,以及 **描述** | +| 凭据 | 它用于连接的 **凭据**,即 连接 > 凭据 中类型为 **数据库** 的凭据,保存其数据库类型、主机、端口、数据库、TLS 和登录信息 | +| 使用者 | 查询它的表单,选项卡上显示数量,参见 [使用者](#used-by) | + +每个选项卡都有自己的地址,例如 `/settings/databases//used-by`,因此链接或书签可以直接打开它。标题行的 +搜索会同时筛选所有选项卡。 + +在 **凭据** 选项卡上,**添加凭据** 会创建一个类型为 **数据库** 的新凭据并选中它。密码一旦保存就不会再 +显示:请在凭据中修改。 + +--- + +## 使用者 + +**使用者** 选项卡列出其字段查询该数据库的表单,即应用从表单中读取到的内容。 + +| 列 | 显示内容 | +|---|---| +| 表单 | 表单,点击某一行即可打开它 | +| 描述 | 表单的描述 | +| 字段 | 该表单中 `dbConfig` 指定该数据库的字段 | + +当字段的 `dbConfig` 指定该数据库,或像 7.5.0 之前编写的表单那样指定其凭据时,该字段就会被计入。两者 +通过同一个凭据连接,因此都会列出。没有时,选项卡显示 **没有表单查询此数据库。** + +--- + +## 测试连接和删除 + +右上角的按钮作用于已保存状态的数据库。 + +**测试连接** 使用其凭据连接,运行其数据库类型最简单的查询,然后在消息中给出结果: +**<name> connection ok**,或失败的原因。它与凭据本身的 **测试连接** 是同一个测试。 + +**删除** 会先确认,然后删除数据库并返回列表。其凭据保留在 **连接 > 凭据** 下。 +旁边的 **保存** 用于保存详情和凭据选项卡。 diff --git a/i18n/zh/_configure/databases/in-forms.md b/i18n/zh/_configure/databases/in-forms.md new file mode 100644 index 0000000..b3e2e9c --- /dev/null +++ b/i18n/zh/_configure/databases/in-forms.md @@ -0,0 +1,76 @@ +--- +layout: default +title: 表单中的数据库 +parent: 数据库 +nav_order: 3 +translated_from: 44e424afaa9938d1bcdb9277d2b7d8e5fefee64e +--- + +# 表单中的数据库 +{: .no_toc } + +字段的 dbConfig 如何指定数据库,以及旧表单如何继续工作 +{: .fs-6 .fw-300 } + +1. TOC +{:toc} + +--- + +## 指定数据库 + +带有 `query` 的字段会在其 `dbConfig` 指定的数据库上运行该查询。 + +```yaml +- name: datacenter + type: enum + dbConfig: cmdb # a database of Connections > Databases + query: select name from cmdb.datacenter +``` + +从 7.5.0 起,名称按以下顺序查找: + +| 顺序 | 该名称是 | 查询使用的连接 | +|---|---|---| +| 1 | **连接 > 数据库** 中的数据库 | 该数据库引用的凭据 | +| 2 | 否则为 **连接 > 凭据** 中类型为 **数据库** 的凭据 | 该凭据,与 7.5.0 之前相同 | + +数据库类型(MySQL、MSSQL、PostgreSQL、Oracle 或 MongoDB)来自凭据,因此表单从不指定它。没有类型的凭据 +按 MySQL 读取。 + +--- + +## 7.5.0 之前编写的表单 + +所有在 `dbConfig` 中指定凭据的表单都无需修改即可继续工作。 + +[升级到 7.5.0](../databases.html#upgrading-to-750) 会为每个数据库凭据创建一个同名、并通过该凭据连接的数据库, +因此表单给出的名称现在会先找到该数据库,最终使用同一个登录信息。没有同名数据库的、类型为数据库的凭据 +仍会在第 2 步中找到。 + +数据库和凭据可以同名,升级就是这样做的。此时数据库优先:将它指向另一个凭据,所有给出该名称的 +表单都会随之改变,这样无需编辑表单就能把它迁移到另一台服务器。 + +--- + +## dbConfig 的写法 + +`dbConfig` 一直接受的三种写法仍然有效,每个名称都按上述方式查找。 + +| `dbConfig` | 示例 | 作用 | +|---|---|---| +| 一个名称 | `dbConfig: cmdb` | 查询该数据库 | +| 名称列表 | `dbConfig: [cmdb-eu, cmdb-us]` | 在每个数据库上运行查询并合并结果;不会去除重复项 | +| 对象(旧写法) | `dbConfig: { name: cmdb, type: mysql }` | 查询数据库或凭据 `name`;已弃用,请只使用名称 | + +[密钥库](../secret-stores/#inline-without-a-credential-row) 引用,例如 `dbConfig: secret:vault:secret/cmdb/db`,既不是 +数据库名称也不是凭据名称,仍和以前一样从密钥库读取。 + +--- + +## 哪些表单查询某个数据库 + +应用会读取表单,以确定哪些表单查询每个数据库。 + +[数据库页面](list.html) 的 **使用者** 列统计它们,[单个数据库的页面](database-page.html#used-by) 的 **使用者** 选项卡 +列出它们及其字段。指定该数据库凭据而非数据库本身的字段也会计入。请先修改给出旧名称的表单,再重命名数据库。 diff --git a/i18n/zh/_configure/databases/list.md b/i18n/zh/_configure/databases/list.md new file mode 100644 index 0000000..b070b74 --- /dev/null +++ b/i18n/zh/_configure/databases/list.md @@ -0,0 +1,64 @@ +--- +layout: default +title: 数据库页面 +parent: 数据库 +nav_order: 1 +translated_from: 66ffec0a34395642b0208e81078dbc725bdc7123 +--- + +# 数据库页面 +{: .no_toc } + +数据库列表、其各列,以及添加数据库的对话框 +{: .fs-6 .fw-300 } + +1. TOC +{:toc} + +--- + +## 列表 + +**连接 > 数据库** 下的页面列出所有数据库,包含以下各列: + +| 列 | 含义 | +|---|---| +| 名称 | 表单通过 `dbConfig: ` 引用它的名称 | +| 描述 | 它的用途 | +| 数据库类型 | 其凭据的类型:MySQL、MSSQL、PostgreSQL、Oracle 或 MongoDB | +| 数据库 | 其凭据打开的数据库 | + +**列** 可以再添加两列,默认关闭:**主机**,即其凭据连接的位置,有端口时附带端口;以及 **使用者**, +即按其名称或其凭据名称查询它的表单数量(参见 [使用者](database-page.html#used-by))。 + +数据库类型、数据库和主机从凭据读取:请在 **连接 > 凭据** 下的凭据中修改它们。 +没有任何列显示用户或密码。 + +--- + +## 添加数据库 + +**添加数据库** 会打开一个两步的对话框,与运行器的对话框相同。 + +| 步骤 | 字段 | +|---|---| +| 数据库 | **名称** 和 **描述**。名称为必填项,且必须唯一 | +| 凭据 | **凭据**,必填:类型为 **数据库** 的凭据。只提供这类凭据 | + +在 **凭据** 步骤中,**添加凭据** 会打开一个类型为 **数据库** 的新凭据的对话框(参见 +[凭据页面](../credentials/list.html)),保存后即选中它,因此可以一次添加数据库及其登录信息。 + +--- + +## 行菜单 + +点击某一行会打开数据库自己的页面,其菜单提供: + +| 操作 | 作用 | +|---|---| +| 编辑 | 打开其页面 | +| 测试连接 | 使用其凭据连接,运行其数据库类型最简单的查询,并说明是否成功 | +| 删除 | 确认后删除数据库。其凭据保留 | + +删除仍被表单引用的数据库会使这些表单的查询失败,除非还留有同名的凭据可供回退 +(参见 [表单中的数据库](in-forms.html))。请先查看其 **使用者** 选项卡。 diff --git a/i18n/zh/_configure/disclaimer.md b/i18n/zh/_configure/disclaimer.md index d93e1a8..3f9bf03 100644 --- a/i18n/zh/_configure/disclaimer.md +++ b/i18n/zh/_configure/disclaimer.md @@ -1,11 +1,11 @@ --- layout: default title: 免责声明 -nav_order: 7 +nav_order: 8 has_children: true has_toc: false permalink: /disclaimer.html -translated_from: a22b56db001904583c51e6bd28f1281737f32a32 +translated_from: ad00bcbac9d3c64c103b15d26914eec84174f6b6 --- # 免责声明 diff --git a/i18n/zh/_configure/notification-channels.md b/i18n/zh/_configure/notification-channels.md index df038d1..e23d7e4 100644 --- a/i18n/zh/_configure/notification-channels.md +++ b/i18n/zh/_configure/notification-channels.md @@ -1,11 +1,11 @@ --- layout: default title: 通知通道 -nav_order: 9 +nav_order: 10 has_children: true has_toc: false permalink: /notification-channels.html -translated_from: 1488a67f6f281b0236e4bad3a8b3d0c3bb32326c +translated_from: 1756db6ff7b9197f88b34a0c089953a68493e008 --- # 通知通道 diff --git a/i18n/zh/_configure/production/index.md b/i18n/zh/_configure/production/index.md index 38c6436..5a7b08a 100644 --- a/i18n/zh/_configure/production/index.md +++ b/i18n/zh/_configure/production/index.md @@ -1,11 +1,11 @@ --- layout: default title: 生产环境运行 -nav_order: 12 +nav_order: 13 has_children: true has_toc: false permalink: /production/ -translated_from: 2d7f4be84a76837fae34c1b414a229448bfae4ea +translated_from: 9f501893a2c4476707ac2f11f25e67998200e9e7 --- # 生产环境运行 diff --git a/i18n/zh/_configure/rte/index.md b/i18n/zh/_configure/rte/index.md index 7657674..e79d8e7 100644 --- a/i18n/zh/_configure/rte/index.md +++ b/i18n/zh/_configure/rte/index.md @@ -1,11 +1,11 @@ --- layout: default title: RTE -nav_order: 10 +nav_order: 11 has_children: true has_toc: false permalink: /rte/ -translated_from: 2c3f3f81ad8faaf18eac56f18782ef5f78111b04 +translated_from: 75a4facc8ad51d9d74b8fccfd2bbfd7ba48b17f9 --- # 运行时环境(RTE) diff --git a/i18n/zh/_configure/runners.md b/i18n/zh/_configure/runners.md index 6f3fe6f..4ab24d1 100644 --- a/i18n/zh/_configure/runners.md +++ b/i18n/zh/_configure/runners.md @@ -1,11 +1,11 @@ --- layout: default title: 运行器 -nav_order: 11 +nav_order: 12 has_children: true has_toc: false permalink: /runners.html -translated_from: 339eda183d7748fa923090d9f8e26e2f112b1352 +translated_from: e6663cf2e7dc14a1559383c7f49fd968a4cbf635 --- # 运行器 diff --git a/i18n/zh/_configure/secret-stores/index.md b/i18n/zh/_configure/secret-stores/index.md index b209a90..95a0a55 100644 --- a/i18n/zh/_configure/secret-stores/index.md +++ b/i18n/zh/_configure/secret-stores/index.md @@ -1,11 +1,11 @@ --- layout: default title: 密钥库 -nav_order: 13 +nav_order: 14 has_children: true has_toc: false permalink: /secret-stores/ -translated_from: 595f94a84c4e8182b1b79289eb309a814dec1287 +translated_from: c7e5d9fb5e640896bd51e3fa20d76be092857ce2 --- # 密钥库 @@ -95,6 +95,9 @@ fn.fnCredentials('vault:secret/myapp/prod') // the store named `vault` dbConfig: secret:vault:secret/cmdb/db ``` +从 7.5.0 起,`dbConfig` 首先指定 [数据库](../databases.html);像这样的引用不是数据库,因此仍从密钥库 +读取。数据库也可以通过使用密钥库的、类型为数据库的凭据,从密钥库读取其登录信息。 + 没有凭据行时,数据库密钥至少需要 `db_type` 和主机,例如: ```json diff --git a/i18n/zh/_configure/security/index.md b/i18n/zh/_configure/security/index.md index 2efc7fd..0953374 100644 --- a/i18n/zh/_configure/security/index.md +++ b/i18n/zh/_configure/security/index.md @@ -1,11 +1,11 @@ --- layout: default title: 安全 -nav_order: 14 +nav_order: 15 has_children: true has_toc: false permalink: /security/ -translated_from: f2b18fd1638cb4ccb2401652eafb82e6ce0e82eb +translated_from: e299ab0a4ffb1c12441a3b3fec6eaaef4a19de79 --- # 安全 diff --git a/i18n/zh/_configure/seed/example.md b/i18n/zh/_configure/seed/example.md index ccfa635..577dc2e 100644 --- a/i18n/zh/_configure/seed/example.md +++ b/i18n/zh/_configure/seed/example.md @@ -3,7 +3,7 @@ layout: default title: 示例 parent: 配置种子 nav_order: 1 -translated_from: f085641a12234a5485ea59e73e76c29e7452d5e9 +translated_from: cf1f2b0122ca5cd2dfcc411e4ed20fb683b079bf --- # 示例 @@ -72,6 +72,12 @@ credentials: user: svc_forms # leave user and password out for a relay password: ${SEED_SMTP_PW} +databases: # from 7.5.0 + items: + - name: production-db # the name a field's dbConfig gives + description: The CMDB + credential: production-db # a credential of the credentials section, of type database + repositories: prune: true items: @@ -209,3 +215,6 @@ chat: # the chat assistant's model provider (6.5) 数据库模式的 RTE 可能会在种子应用之前自行注册。当种子中 RTE 运行器的 `uri` 与这样一个 RTE 注册时使用的地址相同时,它会 **接管** 那一行:它采用声明的名称和字段,RTE 不再应答时 worker 也不会再删除它, 从而不会为同一个 RTE 出现第二个运行器。 + +从 7.5.0 起,`databases` 部分声明表单查询的 [数据库](../databases.html)。每一项有一个 `name`、一个类型为数据库的 +`credential` 和可选的 `description`;种子在凭据之后应用它,并拒绝其他类型的凭据。 diff --git a/i18n/zh/_configure/seed/index.md b/i18n/zh/_configure/seed/index.md index cf97e1d..f972c37 100644 --- a/i18n/zh/_configure/seed/index.md +++ b/i18n/zh/_configure/seed/index.md @@ -5,7 +5,7 @@ nav_order: 4 has_children: true has_toc: false permalink: /seed/ -translated_from: 030ff83b1d7c3920600b7e0668b05ab24b949b67 +translated_from: 8f8eb798f4ada177abf5210049a523f7f2f4265b --- # 配置种子 @@ -33,6 +33,7 @@ translated_from: 030ff83b1d7c3920600b7e0668b05ab24b949b67 | `runners` | 作业的运行位置:RTE、AWX / AAP / Ascender、Semaphore、Rundeck、Jenkins | | `secret_stores` | 密钥库(HashiCorp Vault 等) | | `credentials` | 凭据 | +| `databases` | 表单查询的数据库及其凭据,从 7.5.0 起 | | `oauth2` | SSO 提供商:Entra ID 和 OIDC | | `repositories` | Git 仓库 | | `syslog_servers` | 接收服务器日志和审计条目的 syslog 服务器 | diff --git a/i18n/zh/_configure/users-and-groups.md b/i18n/zh/_configure/users-and-groups.md index 9ddf998..20615a7 100644 --- a/i18n/zh/_configure/users-and-groups.md +++ b/i18n/zh/_configure/users-and-groups.md @@ -1,11 +1,11 @@ --- layout: default title: 用户和组 -nav_order: 15 +nav_order: 16 has_children: true has_toc: false permalink: /users-and-groups.html -translated_from: 8ed4dc089c64e091636c29884af1cd1002eb40aa +translated_from: 07178b6b66a60d91e5a8ff3c417da3771730bc5e --- # 用户和组 diff --git a/i18n/zh/_reference/faq.md b/i18n/zh/_reference/faq.md index c0b0f67..6ca8787 100644 --- a/i18n/zh/_reference/faq.md +++ b/i18n/zh/_reference/faq.md @@ -2,7 +2,7 @@ layout: default title: 常见问题 nav_order: 2 -translated_from: 6616eaf626411a615cb68d8cc4f2a43401fe21d9 +translated_from: 487a25c7f3b24b3a0c0d4df08c858a52d48f8556 --- # 常见问题 @@ -171,11 +171,11 @@ expression: $(__user__.roles) > 对另一个 enum 字段的引用返回的是所选的值,**而不是** 完整的下拉列表。请使用 `placeholderColumn` 属性或 `$(city.name)` 这样的点号写法。 > **v4.0.20 新增**:把 placeholderColumn 设为 "*" 会输出整条记录,而不是单独一列。 +示例查询 `CONN1`,它是 连接 > 数据库 中的 [数据库](databases.html)(从 7.5.0 起),或类型为数据库的凭据。 + ```yaml - type: enum - dbConfig: - name: CONN1 - type: mysql + dbConfig: CONN1 query: select name from cmdb.city name: city_name label: Select a city @@ -184,9 +184,7 @@ expression: $(__user__.roles) model: cmdb.city group: CMDB - type: enum - dbConfig: - name: CONN1 - type: mysql + dbConfig: CONN1 query: select datacenter.name from cmdb.datacenter,cmdb.city where datacenter.city_id=city.id and city.name='$(city_name)' name: datacenter_name @@ -201,9 +199,7 @@ expression: $(__user__.roles) # or use the placeholderColumn property - type: enum - dbConfig: - name: CONN1 - type: mysql + dbConfig: CONN1 query: select id,name,description from cmdb.city name: city label: Select a city @@ -218,9 +214,7 @@ expression: $(__user__.roles) - name - description - type: enum - dbConfig: - name: CONN1 - type: mysql + dbConfig: CONN1 query: select name, capacity_pct from cmdb.datacenter where datacenter.city_id=$(city) # this cascaded dropdown will react using "id" as placeholder # or "query":"select name from cmdb.datacenter where datacenter.city_id=$(city.id)", diff --git a/source/_build_forms/expressions/placeholders.md b/source/_build_forms/expressions/placeholders.md index bd63e43..7b1ef97 100644 --- a/source/_build_forms/expressions/placeholders.md +++ b/source/_build_forms/expressions/placeholders.md @@ -30,7 +30,7 @@ value, and is evaluated again each time that value changes. This is how cascaded values: [Amsterdam, Brussels] - name: datacenter type: enum - dbConfig: { name: CMDB, type: mysql } + dbConfig: CMDB # a database of Connections > Databases query: select name from cmdb.datacenter where city='$(city)' ``` @@ -72,7 +72,7 @@ Setting `placeholderColumn: "*"` on an enum makes `$(field)` give the whole sele ```yaml - name: city type: enum - dbConfig: { name: CMDB, type: mysql } + dbConfig: CMDB query: select id, name from cmdb.city valueColumn: name placeholderColumn: id # $(city) gives the id; $(city.name) still gives the name diff --git a/source/_build_forms/formfields/list.md b/source/_build_forms/formfields/list.md index b6209ef..c454e79 100644 --- a/source/_build_forms/formfields/list.md +++ b/source/_build_forms/formfields/list.md @@ -284,6 +284,9 @@ Rows loaded from a database query: query: SELECT hostname, role FROM servers WHERE active = 1 ``` +`dbConfig` names a [database](../databases.html) of **Connections > Databases** (from 7.5.0), or else a credential of type database, +as before (see [Databases in forms](../databases/in-forms.html)). + #### From a local expression (`runLocal`) Rows computed in the browser by a local expression: diff --git a/source/_build_forms/formfields/yaml.md b/source/_build_forms/formfields/yaml.md index c7439c1..8dde3e8 100644 --- a/source/_build_forms/formfields/yaml.md +++ b/source/_build_forms/formfields/yaml.md @@ -151,9 +151,7 @@ Reference it with the standard `$(...)` expression syntax in the field definitio label: VLAN # filter available VLANs based on the parent's selected region query: "select id,name from vlans where region='$(__parent__.region)'" - dbConfig: - name: MYDB - type: mysql + dbConfig: MYDB # a database of Connections > Databases valueColumn: id placeholderColumn: name diff --git a/source/_configure/credentials.md b/source/_configure/credentials.md index 0811007..0c8fdda 100644 --- a/source/_configure/credentials.md +++ b/source/_configure/credentials.md @@ -39,6 +39,9 @@ to it by its name, so the password itself never appears in a form. Its user and AnsibleForms database, encrypted with `ENCRYPTION_SECRET`, or read from a [secret store](secret-stores/) each time the credential is used. +From 7.5.0 forms query a [database](databases.html) of **Connections > Databases**, which names the credential of type +**Database** it connects with; a form that names the credential itself in `dbConfig` still works, as before. + --- ## Who may change a credential @@ -68,6 +71,7 @@ keep those users away from secrets they could not otherwise read: ## Credentials in use -A credential that records still name cannot be deleted or renamed, as they would be left pointing at nothing. +A credential that records still name, a [database](databases.html) among them from 7.5.0, cannot be deleted or renamed, as they +would be left pointing at nothing. The refusal names how many records use it; the **Used by** tab of [its page](credentials/credential-page.html) lists them. Point them at another credential first, then delete or rename it. diff --git a/source/_configure/credentials/credential-page.md b/source/_configure/credentials/credential-page.md index 0269b5c..204eca9 100644 --- a/source/_configure/credentials/credential-page.md +++ b/source/_configure/credentials/credential-page.md @@ -19,7 +19,7 @@ A credential's page shows the steps of its dialog as tabs, plus what uses it: | Type | What the credential is for. | | Login | Every field of its type, as in the dialog's **Login** step: the user, the password, and where it logs in (host and port, the database, the mail server, the directory's servers, the tenant or issuer, the server's address and its TLS). A CyberArk credential's AppID, client certificate and key. | | Store | Database or Secret store, and the store and reference. Not for CyberArk nor HashiCorp Vault. | -| Used by | Everything that names this credential: secret stores, notification channels, repositories, LDAP directories, SSO providers, runners, the chat assistant, forms and the designer's workflows. A row opens it. | +| Used by | Everything that names this credential: secret stores, notification channels, repositories, LDAP directories, SSO providers, runners, [databases](../databases.html) (from 7.5.0), the chat assistant, forms and the designer's workflows. A row opens it. | The password is typed in the **Login** tab, and is never shown again once saved: left empty, the stored one stays. For a CyberArk credential, leave the client key empty to keep the stored one. Top right are **Test connection** (database credentials only), diff --git a/source/_configure/credentials/types.md b/source/_configure/credentials/types.md index 1f21f8f..2782b01 100644 --- a/source/_configure/credentials/types.md +++ b/source/_configure/credentials/types.md @@ -26,7 +26,7 @@ The type says what a credential is for. It decides which fields the dialog asks | SSH | A user and password for SSH to a server, with its host and port | Playbooks, through a form's `credentials`, `ansibleCredentials` or a credential field, and a workflow node's login | | Git | A user and password or token for git repositories | [Repositories](../repositories/authentication.html) | | API | A user and password or token for a REST API | [REST expressions](../expressions/credentials.html), a Telegram bot token, a webhook's bearer token, the chat assistant's API key | -| Database | A database login, with its type, host, port and database name | Form queries (`dbConfig`) and `fnCredentials`; it can be tested | +| Database | A database login, with its type, host, port and database name | A [database](../databases.html) that forms query (`dbConfig`), from 7.5.0, or a form's `dbConfig` directly; `fnCredentials`; it can be tested | | CyberArk | The address of the CyberArk Central Credential Provider (CCP) and its TLS, and the AppID, client certificate and key a CyberArk store logs in with | A [CyberArk](../secret-stores/cyberark.html) secret store | | SMTP | A mail server, its port and TLS, and its login (none for a relay) | A mail [notification channel](../notification-channels.html) | | LDAP | A directory's servers, port, TLS and certificates, and its bind DN and password | An [LDAP directory](../authentication/ldap.html) | @@ -38,7 +38,8 @@ The type says what a credential is for. It decides which fields the dialog asks | Jenkins | A user, its API token and the address of a Jenkins | A Jenkins runner | | HashiCorp Vault | The token and address a Vault store logs in with | A [HashiCorp Vault](../secret-stores/hashicorp-vault.html) secret store | -A database credential can be of type MySQL, MSSQL, PostgreSQL, Oracle or MongoDB. +A database credential can be of type MySQL, MSSQL, PostgreSQL, Oracle or MongoDB. From 7.5.0 it is picked by a database of +[Connections > Databases](../databases.html), and the upgrade to 7.5.0 makes one database for each, with the same name. In the API and the [config seed](../seed/), the types are `userpass`, `ssh`, `git`, `api`, `database`, `cyberark`, `smtp`, `ldap`, `entraid`, `oidc`, `rte`, `awx`, `aap`, `ascender`, `semaphore`, `rundeck`, `jenkins` and `vault`. The upgrade from 6 diff --git a/source/_configure/customization/index.md b/source/_configure/customization/index.md index fd6e83f..e0bc1d7 100644 --- a/source/_configure/customization/index.md +++ b/source/_configure/customization/index.md @@ -1,7 +1,7 @@ --- layout: default title: Environment Variables -nav_order: 8 +nav_order: 9 has_children: true has_toc: false permalink: /customization/ diff --git a/source/_configure/databases.md b/source/_configure/databases.md new file mode 100644 index 0000000..7c14f8d --- /dev/null +++ b/source/_configure/databases.md @@ -0,0 +1,149 @@ +--- +layout: default +title: Databases +nav_order: 7 +has_children: true +has_toc: false +permalink: /databases.html +--- + +# Databases +{: .no_toc } + +The databases forms query, each connecting with a database credential +{: .fs-6 .fw-300 } + +1. TOC +{:toc} + +--- + +For administrators: name the databases your forms query, pick the credential each connects with, and test them. + +--- + +## In this section + +| Page | What it covers | +|---|---| +| [The databases page](databases/list.html) | The list of databases, its columns, and the dialog that adds one | +| [A database's page](databases/database-page.html) | A database's tabs, the forms that query it, Test connection and Delete | +| [Databases in forms](databases/in-forms.html) | How a field's `dbConfig` names a database, and the forms written before 7.5.0 | + +--- + +## How it works + +From 7.5.0 a **database** is a connection of its own, added under **Connections > Databases**, between **Secret stores** and **Runners**. +It has three things: + +| Field | What it is | +|---|---| +| Name | The name a field's `dbConfig` gives to query it, such as `cmdb` | +| Description | What it is for | +| Credential | The credential of [Connections > Credentials](credentials.html), of type **Database**, it connects with | + +The credential keeps everything about the connection, as before: the database type (MySQL, MSSQL, PostgreSQL, Oracle or MongoDB), +the host and port, the database name, TLS, and the user and password, kept encrypted or read from a [secret store](secret-stores/). +A database holds no address and no secret of its own, so a database and a runner pick their credential the same way. + +A field queries a database by naming it in `dbConfig`: + +```yaml +- name: city + type: enum + dbConfig: cmdb # a database of Connections > Databases + query: select name from cmdb.city +``` + +A name that is no database is looked up as a credential of type database, as before 7.5.0, so older forms keep working +unchanged (see [Databases in forms](databases/in-forms.html)). + +--- + +## Upgrading to 7.5.0 + +The upgrade fills **Connections > Databases** once, so the forms you have keep working without a change. + +It makes one database for each credential of type database, with the credential's name and description, connecting with that +credential. A form whose `dbConfig` names the credential now finds the database of the same name, which connects with the same +credential: the result is the same. Credentials keep every field they have. + +The upgrade runs once only: a database deleted afterwards is not made again, and a database credential added later gets no database +until you add one. + +--- + +## Credentials in use + +A credential that a database connects with is in use, as one a runner signs in with. + +It cannot be deleted or renamed while a database names it, and the **Used by** tab of its page lists the databases (see +[Credentials in use](credentials.html#credentials-in-use)). Deleting a database leaves its credential as it is. + +--- + +## Who manages databases + +The databases follow the role options of the credentials they name. + +The list, a database's page and its API need the `showSettings` or the `showConnectionsSettings` role option, as the credentials do. +Only an admin can make a database connect with a credential that only an admin may name, such as one that reads its password from a +secret store (see [Who may change a credential](credentials.html#who-may-change-a-credential)): the forms that query it would connect +with that credential, and **Test connection** would send its secret to its server. Another user may save a database again with the +credential it already names. + +A database declared in the [config seed](seed/) is read only on its page: change it in the seed file instead. + +--- + +## The config seed + +A seed declares its databases in a `databases:` section, after the credentials they name. + +Each item has a `name`, a `credential` of type database, and optionally a `description`. The credential can come from the +`credentials` section of the same seed or be one made in the app: + +```yaml +credentials: + items: + - name: cmdb-login + credential_type: database + db_type: mysql + host: cmdb.example.com + port: 3306 + user: svc_forms + password: ${SEED_CMDB_PW} + +databases: + items: + - name: cmdb # the name a field's dbConfig gives + description: The CMDB + credential: cmdb-login # a credential of type database +``` + +See the full [example](seed/example.html) and [Managed objects](seed/managed-objects.html) for how the seed owns what it declares. + +--- + +## The REST API + +Scripts manage the databases through the [REST API](api/), under `/api/v2/database`, with the same role options as the page. + +| Call | What it does | +|---|---| +| `GET /api/v2/database` | Lists the databases, each with its credential's database type, database, host and port, and how many forms query it (`used_by_count`) | +| `GET /api/v2/database?name=` | Gets the database of that name | +| `GET /api/v2/database/` | Gets one database | +| `POST /api/v2/database` | Adds a database: its `name`, `credential` and optionally `description` | +| `PUT /api/v2/database/` | Changes a database | +| `DELETE /api/v2/database/` | Deletes a database; its credential stays | +| `POST /api/v2/database//check` | Tests its connection, with its credential | + +```bash +curl -X POST https://forms.example.com/api/v2/database \ + -H "Authorization: Bearer " -H "Content-Type: application/json" \ + -d '{ "name": "cmdb", "description": "The CMDB", "credential": "cmdb-login" }' +``` + +A `credential` that does not exist, or is not of type database, is refused with `400`. Every change is written to the audit log. diff --git a/source/_configure/databases/database-page.md b/source/_configure/databases/database-page.md new file mode 100644 index 0000000..b027ce5 --- /dev/null +++ b/source/_configure/databases/database-page.md @@ -0,0 +1,60 @@ +--- +layout: default +title: "A database's page" +parent: Databases +nav_order: 2 +--- + +# A database's page +{: .no_toc } + +A database's tabs, the forms that query it, Test connection and Delete +{: .fs-6 .fw-300 } + +1. TOC +{:toc} + +--- + +## Tabs + +A database's page shows the steps of its dialog as tabs, plus the forms that query it: + +| Tab | What it holds | +|---|---| +| Details | The **Name**, the one a field's `dbConfig` gives, and the **Description** | +| Credentials | The **Credential** it connects with, a credential of Connections > Credentials of type **Database**, which holds its database type, host, port, database, TLS and login | +| Used by | The forms that query it, with the count on the tab, see [Used by](#used-by) | + +Each tab has its own address, such as `/settings/databases//used-by`, so a link or a bookmark opens it. The search of the title +line narrows every tab at once. + +On the **Credentials** tab, **Add credential** makes a new credential of type **Database** and chooses it. A password is never shown +again once saved: change it on the credential. + +--- + +## Used by + +The **Used by** tab lists the forms whose fields query the database, as the app reads them from the forms. + +| Column | What it shows | +|---|---| +| Form | The form, a row opens it | +| Description | The form's description | +| Field | The fields of that form whose `dbConfig` names the database | + +A field counts when its `dbConfig` names the database, or names its credential, as a form written before 7.5.0 does. Both +connect with the same credential, so both are listed. When there is none, the tab says **No form queries this database.** + +--- + +## Test connection and Delete + +The buttons top right act on the database as it is saved. + +**Test connection** connects with its credential and runs the least query of its database type, then says so in a message, +**<name> connection ok**, or why it failed. It is the same test as the **Test connection** of the credential itself. + +**Delete** asks first, then deletes the database and goes back to the list. Its credential stays under **Connections > Credentials**. +Next to them, **Save** saves the Details and Credentials tabs. diff --git a/source/_configure/databases/in-forms.md b/source/_configure/databases/in-forms.md new file mode 100644 index 0000000..44e424a --- /dev/null +++ b/source/_configure/databases/in-forms.md @@ -0,0 +1,76 @@ +--- +layout: default +title: Databases in forms +parent: Databases +nav_order: 3 +--- + +# Databases in forms +{: .no_toc } + +How a field's dbConfig names a database, and older forms keep working +{: .fs-6 .fw-300 } + +1. TOC +{:toc} + +--- + +## Naming a database + +A field with a `query` runs it on the database its `dbConfig` names. + +```yaml +- name: datacenter + type: enum + dbConfig: cmdb # a database of Connections > Databases + query: select name from cmdb.datacenter +``` + +From 7.5.0 the name is looked up in this order: + +| Order | The name is | The query connects with | +|---|---|---| +| 1 | A database of **Connections > Databases** | The credential that database names | +| 2 | Else a credential of type **Database** of **Connections > Credentials** | That credential, as before 7.5.0 | + +The database type (MySQL, MSSQL, PostgreSQL, Oracle or MongoDB) comes from the credential, so the form never gives it. A credential +without one is read as MySQL. + +--- + +## Forms written before 7.5.0 + +Every form that named a credential in `dbConfig` keeps working, without a change. + +The [upgrade to 7.5.0](../databases.html#upgrading-to-750) makes a database for each database credential, with the same name and +connecting with that credential, so the name a form gives now finds the database first, which leads to the same login. A credential +of type database with no database of its name is still found by step 2. + +A database and a credential can share a name, as the upgrade does it. The database wins: point it at another credential and every +form that gives that name follows, which is how a form moves to another server without being edited. + +--- + +## The forms of dbConfig + +The three forms `dbConfig` has always taken still work, each name looked up as above. + +| `dbConfig` | Example | What it does | +|---|---|---| +| A name | `dbConfig: cmdb` | Queries that database | +| A list of names | `dbConfig: [cmdb-eu, cmdb-us]` | Runs the query on each and joins the results; doubles are not removed | +| An object (legacy) | `dbConfig: { name: cmdb, type: mysql }` | Queries the database or credential `name`; deprecated, use the name alone | + +A [secret store](../secret-stores/#inline-without-a-credential-row) reference, such as `dbConfig: secret:vault:secret/cmdb/db`, is no +database and no credential name, and is still read from the store as before. + +--- + +## Which forms query a database + +The app reads the forms to tell which of them query each database. + +The **Used by** column of [the databases page](list.html) counts them, and the **Used by** tab of +[a database's page](database-page.html#used-by) lists them with their fields. A field that names the database's credential instead +counts too. Rename a database only after changing the forms that give its old name. diff --git a/source/_configure/databases/list.md b/source/_configure/databases/list.md new file mode 100644 index 0000000..66ffec0 --- /dev/null +++ b/source/_configure/databases/list.md @@ -0,0 +1,63 @@ +--- +layout: default +title: The databases page +parent: Databases +nav_order: 1 +--- + +# The databases page +{: .no_toc } + +The list of databases, its columns, and the dialog that adds one +{: .fs-6 .fw-300 } + +1. TOC +{:toc} + +--- + +## The list + +The page under **Connections > Databases** lists every database with these columns: + +| Column | Meaning | +|---|---| +| Name | How forms refer to it, with `dbConfig: ` | +| Description | What it is for | +| Database type | Its credential's: MySQL, MSSQL, PostgreSQL, Oracle or MongoDB | +| Database | The database its credential opens | + +**Columns** adds two more, off by default: **Host**, where its credential connects, with its port when it has one, and **Used by**, +how many forms query it, by its name or by its credential's (see [Used by](database-page.html#used-by)). + +The database type, the database and the host are read from the credential: change them on the credential, under +**Connections > Credentials**. No column shows a user or a password. + +--- + +## Adding a database + +**Add database** opens a dialog in two steps, as a runner's does. + +| Step | Fields | +|---|---| +| Database | **Name** and **Description**. The name is required, and unique | +| Credentials | **Credential**, required: a credential of type **Database**. Only those are offered | + +On the **Credentials** step, **Add credential** opens the dialog of a new credential of type **Database** (see +[The credentials page](../credentials/list.html)) and chooses it once saved, so a database and its login can be added in one go. + +--- + +## The row menu + +A row opens the database's own page, and its menu offers: + +| Action | What it does | +|---|---| +| Edit | Opens its page | +| Test connection | Connects with its credential and runs the least query of its database type, and says whether it worked | +| Delete | Deletes the database, after a confirmation. Its credential stays | + +Deleting a database that forms still name makes their queries fail, unless a credential of the same name is left for them to fall back to +(see [Databases in forms](in-forms.html)). Check its **Used by** tab first. diff --git a/source/_configure/disclaimer.md b/source/_configure/disclaimer.md index a22b56d..ad00bcb 100644 --- a/source/_configure/disclaimer.md +++ b/source/_configure/disclaimer.md @@ -1,7 +1,7 @@ --- layout: default title: Disclaimer -nav_order: 7 +nav_order: 8 has_children: true has_toc: false permalink: /disclaimer.html diff --git a/source/_configure/notification-channels.md b/source/_configure/notification-channels.md index 1488a67..1756db6 100644 --- a/source/_configure/notification-channels.md +++ b/source/_configure/notification-channels.md @@ -1,7 +1,7 @@ --- layout: default title: Notification channels -nav_order: 9 +nav_order: 10 has_children: true has_toc: false permalink: /notification-channels.html diff --git a/source/_configure/production/index.md b/source/_configure/production/index.md index 2d7f4be..9f50189 100644 --- a/source/_configure/production/index.md +++ b/source/_configure/production/index.md @@ -1,7 +1,7 @@ --- layout: default title: Running in production -nav_order: 12 +nav_order: 13 has_children: true has_toc: false permalink: /production/ diff --git a/source/_configure/rte/index.md b/source/_configure/rte/index.md index 2c3f3f8..75a4fac 100644 --- a/source/_configure/rte/index.md +++ b/source/_configure/rte/index.md @@ -1,7 +1,7 @@ --- layout: default title: RTE -nav_order: 10 +nav_order: 11 has_children: true has_toc: false permalink: /rte/ diff --git a/source/_configure/runners.md b/source/_configure/runners.md index 339eda1..e6663cf 100644 --- a/source/_configure/runners.md +++ b/source/_configure/runners.md @@ -1,7 +1,7 @@ --- layout: default title: Runners -nav_order: 11 +nav_order: 12 has_children: true has_toc: false permalink: /runners.html diff --git a/source/_configure/secret-stores/index.md b/source/_configure/secret-stores/index.md index 595f94a..c7e5d9f 100644 --- a/source/_configure/secret-stores/index.md +++ b/source/_configure/secret-stores/index.md @@ -1,7 +1,7 @@ --- layout: default title: Secret stores -nav_order: 13 +nav_order: 14 has_children: true has_toc: false permalink: /secret-stores/ @@ -94,6 +94,9 @@ fn.fnCredentials('vault:secret/myapp/prod') // the store named `vault` dbConfig: secret:vault:secret/cmdb/db ``` +From 7.5.0 a `dbConfig` names a [database](../databases.html) first; a reference like this one is no database, so it is still read +from the store. A database can also read its login from a store, through a credential of type database that uses one. + Without a credential row, a database secret needs at least a `db_type` and a host, for example: ```json diff --git a/source/_configure/security/index.md b/source/_configure/security/index.md index f2b18fd..e299ab0 100644 --- a/source/_configure/security/index.md +++ b/source/_configure/security/index.md @@ -1,7 +1,7 @@ --- layout: default title: Security -nav_order: 14 +nav_order: 15 has_children: true has_toc: false permalink: /security/ diff --git a/source/_configure/seed/example.md b/source/_configure/seed/example.md index f085641..cf1f2b0 100644 --- a/source/_configure/seed/example.md +++ b/source/_configure/seed/example.md @@ -71,6 +71,12 @@ credentials: user: svc_forms # leave user and password out for a relay password: ${SEED_SMTP_PW} +databases: # from 7.5.0 + items: + - name: production-db # the name a field's dbConfig gives + description: The CMDB + credential: production-db # a credential of the credentials section, of type database + repositories: prune: true items: @@ -208,3 +214,6 @@ validation. An RTE in database mode may register itself before the seed is applied. A seeded RTE runner whose `uri` is the address such an RTE registered at **adopts** that row: it takes the declared name and fields, and the worker no longer removes it when the RTE stops answering, instead of a second runner for the same RTE. + +From 7.5.0 the `databases` section declares the [databases](../databases.html) forms query. An item has a `name`, a `credential` of +type database and an optional `description`; the seed applies it after the credentials, and refuses a credential of another type. diff --git a/source/_configure/seed/index.md b/source/_configure/seed/index.md index 030ff83..8f8eb79 100644 --- a/source/_configure/seed/index.md +++ b/source/_configure/seed/index.md @@ -32,6 +32,7 @@ declares objects that previously existed only in the database: | `runners` | Where jobs run: RTEs, AWX / AAP / Ascender, Semaphore, Rundeck, Jenkins | | `secret_stores` | Secret stores (HashiCorp Vault, ...) | | `credentials` | Credentials | +| `databases` | The databases forms query, each with its credential, from 7.5.0 | | `oauth2` | SSO providers: Entra ID and OIDC | | `repositories` | Git repositories | | `syslog_servers` | The syslog servers that get the server log and the audit entries | diff --git a/source/_configure/users-and-groups.md b/source/_configure/users-and-groups.md index 8ed4dc0..07178b6 100644 --- a/source/_configure/users-and-groups.md +++ b/source/_configure/users-and-groups.md @@ -1,7 +1,7 @@ --- layout: default title: Users and groups -nav_order: 15 +nav_order: 16 has_children: true has_toc: false permalink: /users-and-groups.html diff --git a/source/_reference/faq.md b/source/_reference/faq.md index 6616eaf..487a25c 100644 --- a/source/_reference/faq.md +++ b/source/_reference/faq.md @@ -170,11 +170,11 @@ The client web application re-evaluates fields every 100 ms; with current proces > A reference to another enum field returns the selected values, **not** the full dropdown list. Use the `placeholderColumn` property or dot notation such as `$(city.name)`. > **New in v4.0.20**: setting placeholderColumn to "*" outputs the entire record instead of a single column. +The examples query `CONN1`, a [database](databases.html) of Connections > Databases (from 7.5.0) or a credential of type database. + ```yaml - type: enum - dbConfig: - name: CONN1 - type: mysql + dbConfig: CONN1 query: select name from cmdb.city name: city_name label: Select a city @@ -183,9 +183,7 @@ The client web application re-evaluates fields every 100 ms; with current proces model: cmdb.city group: CMDB - type: enum - dbConfig: - name: CONN1 - type: mysql + dbConfig: CONN1 query: select datacenter.name from cmdb.datacenter,cmdb.city where datacenter.city_id=city.id and city.name='$(city_name)' name: datacenter_name @@ -200,9 +198,7 @@ The client web application re-evaluates fields every 100 ms; with current proces # or use the placeholderColumn property - type: enum - dbConfig: - name: CONN1 - type: mysql + dbConfig: CONN1 query: select id,name,description from cmdb.city name: city label: Select a city @@ -217,9 +213,7 @@ The client web application re-evaluates fields every 100 ms; with current proces - name - description - type: enum - dbConfig: - name: CONN1 - type: mysql + dbConfig: CONN1 query: select name, capacity_pct from cmdb.datacenter where datacenter.city_id=$(city) # this cascaded dropdown will react using "id" as placeholder # or "query":"select name from cmdb.datacenter where datacenter.city_id=$(city.id)",