Formulieren

Definieer de formulieren die je gebruikers invullen


Voor formulierauteurs: hoe formulieren in YAML worden geschreven, waar ze vandaan worden geladen en de eigenschappen van elk formuliertype.

Formulieren vormen de kern van AnsibleForms. Elk formulier is een webinterface die invoer van de gebruiker verzamelt en met die gegevens een Ansible-playbook uitvoert, een sjabloon van AWX, AAP of Ascender, een sjabloon van Semaphore, een job van Rundeck of Jenkins, of een workflow.

Formulieren worden gedefinieerd in YAML-bestanden in de formulierenmap. Elk YAML-bestand bevat één formulier of een lijst met formulieren, en je kunt submappen gebruiken om ze te ordenen.

VIDEO: Je eerste formulier maken


De opbouw van een formulier

Elk formulier in AnsibleForms wordt geconfigureerd met een reeks eigenschappen. Gemeenschappelijke eigenschappen somt de eigenschappen op die voor alle formuliertypen gelden; de pagina’s per type beschrijven de extra eigenschappen.


Hoe formulieren worden geladen

AnsibleForms laadt formulieren vanaf de volgende locaties:

  1. UIT REPOSITORIES : alle repositories waarbij de schakelaar “Gebruiken voor formulieren?” aanstaat (meerdere repositories worden ondersteund)
    • Formulieren uit alle ingeschakelde repositories worden automatisch samengevoegd.
    • In elke repository wordt eerst gezocht naar een submap forms/.
    • Bestaat er geen submap forms/, dan wordt de root van de repository gebruikt.
    • Formulieren die in de ontwerper zijn gemaakt en nog niet zijn gepusht, worden bewaard in een stagingmap (FORMS_STAGING_PATH) en samen met de andere geladen.
  2. UIT DE LOKALE MAP : de lokale map forms/ (FORMS_FOLDER_PATH), wanneer bij geen enkele repository “Gebruiken voor formulieren?” aanstaat

Let op: staat “Gebruiken voor formulieren?” bij meerdere repositories aan, dan worden al hun formulieren samengevoegd. Formuliernamen moeten over alle repositories heen uniek zijn om conflicten te voorkomen.


Waar een formulier draait

Het type van een formulier bepaalt op wat voor runner zijn job draait: een RTE voor ansible, een AWX-runner voor awx, aap en ascender, en een runner van het eigen type voor semaphore, rundeck en jenkins.

  • runner: <name> op het formulier kiest op naam een runner van dat type; zonder die sleutel draait de job op de standaardrunner van het type.
  • Een runner die onder Verbindingen > Runners is uitgeschakeld, laat de job mislukken, of het formulier hem nu noemt of hij de standaard is. De job valt nooit terug op een andere runner.
  • Wanneer een van de rollen van de gebruiker runners opsomt in config.yaml, mag de job alleen draaien op een runner die zo’n rol opsomt; anders wordt hij geweigerd. Rollen zonder die lijst beperken het niet, en een admin wordt nooit beperkt.

In deze sectie

De volgende pagina’s beschrijven de eigenschappen van formulieren in detail:

Pagina Wat er aan bod komt
Gemeenschappelijke eigenschappen Eigenschappen die voor alle formuliertypen gelden (name, description, help, type, fields)
Ansible-formulieren Eigenschappen specifiek voor type: ansible
AWX-formulieren Eigenschappen specifiek voor type: awx
Semaphore-formulieren Eigenschappen specifiek voor type: semaphore, dat een sjabloon van Semaphore uitvoert
Rundeck-formulieren Eigenschappen specifiek voor type: rundeck, dat een job van Rundeck uitvoert
Jenkins-formulieren Eigenschappen specifiek voor type: jenkins, dat een job van Jenkins bouwt
Multistep-formulieren Eigenschappen specifiek voor type: multistep, verouderd ten gunste van workflow
Workflowformulieren Eigenschappen specifiek voor type: workflow, dat een workflow uitvoert
Wizard De invoer van een formulier over meerdere pagina’s verdelen (werkt bovenop elk uitvoerbaar formuliertype)
Subformulier Subformulieren gebruiken alleen de gemeenschappelijke eigenschappen
Goedkeuringspunten Een job stilzetten tot hij is goedgekeurd (approval)
Meldingen E-mails en kanaalberichten versturen bij jobstatussen of gebeurtenissen (notifications)
Acties bij jobstatus Iets doen op het formulier wanneer een job van status verandert (onSubmit, onSuccess, …)