From cb9b534669a35d40eb9f6dd0b3888249ca45ba6c Mon Sep 17 00:00:00 2001 From: gwen Date: Mon, 1 Dec 2025 18:16:24 +0100 Subject: [PATCH] configuration and user data file in preliminary --- docs/tutorial/family.rst | 96 ++++++++++-------- .../tutorial/images/firefox_manual_family.png | Bin 0 -> 32322 bytes docs/tutorial/preliminary.rst | 23 +++++ 3 files changed, 74 insertions(+), 45 deletions(-) create mode 100644 docs/tutorial/images/firefox_manual_family.png diff --git a/docs/tutorial/family.rst b/docs/tutorial/family.rst index debe5723e..251b12e22 100644 --- a/docs/tutorial/family.rst +++ b/docs/tutorial/family.rst @@ -19,7 +19,7 @@ Group variables inside families Of course, you can also decide to copy/paste or download the tutorial files contents while following the tutorial steps. If you want to follow this tutorial with the help of the corresponding :tutorial:`Rougail-tutorials git repository `, - this workshop page corresponds to the tags :tutorial:`v1.1_020 ` in the repository: + this workshop page corresponds to the tags :tutorial:`v1.1_020 ` in the repository: FIXME: END TAG :: @@ -58,10 +58,7 @@ In short, let's describe our `proxy_mode` variable like this: Proxy mode's settings Now we will define new variables, and other structure definitions. - - For the sake of clarity, we will put the structure definitions in separate files. - Please have a look at the :ref:`file naming and organizing convention `. Here we made a :file:`firefox/00-proxy.yml` structure file and we're gonna make @@ -89,7 +86,7 @@ Let's create a family named `manual` which obviously corresponds to the proxy's type: family We can see that we have defined a :term:`family` here, and this family is *empty* -(that is the family which is a container variable contains no variable yet). +which means that this family is a container variable that contains no variable yet. .. warning:: @@ -98,13 +95,26 @@ We can see that we have defined a :term:`family` here, and this family is *empty We have to force the family type inference. It's because we don't have set any :term:`variable` inside yet. When we will have a variable inside of this family, - we will make a YAML block (that is, we just indent the lines) and the Rougail's type inference engine will implicitely infer the variable's container as a family type. + we will make a YAML block (to create a block in YAML, you just need to indent the lines) and the Rougail's type inference engine will implicitely infer the variable's container as a family type. -.. type-along:: A family inside a family +Or a sub family +---------------- + +.. type-along:: For those who follow the tutorial with the help of the git repository + + Now you need to checkout the `v1.1_021` version:: + + git checkout v1.1_021 + +.. glossary:: + + sub family + + A sub family is a family inside a family. Creating a family hierarchy of family container types is very easy, here is an example: -.. extinclude:: https://forge.cloud.silique.fr/stove/rougail-tutorials/raw/tag/v1.1_011/firefox/10-manual.yml +.. extinclude:: https://forge.cloud.silique.fr/stove/rougail-tutorials/raw/tag/v1.1_021/firefox/10-manual.yml :language: yaml :caption: A rougail structure description file with a hierarchy. :name: RougailFirstFamilyHierarchy @@ -119,15 +129,26 @@ Creating a family hierarchy of family container types is very easy, here is an e description: HTTP Proxy type: family -Here the `http_proxy` family lives inside the `manual` family. +:tutorial:`Download this file from the rougail-tutorials git repository ` + +Note that the `http_proxy` family lives inside the `manual` family. Putting a variable inside of a family or a sub family ----------------------------------------------------------- +----------------------------------------------------------- + +.. type-along:: For those who follow the tutorial with the help of the git repository + + Now you need to checkout the `v1.1_022` version:: + + git checkout v1.1_022 + + +We are going to put a variable inside of a family or a sub family Let's create a variable in the `http_proxy` family. This time, the type of this new variable is a `domainname` type: -.. extinclude:: https://forge.cloud.silique.fr/stove/rougail-tutorials/raw/tag/v1.1_012/firefox/10-manual.yml +.. extinclude:: https://forge.cloud.silique.fr/stove/rougail-tutorials/raw/tag/v1.1_022/firefox/10-manual.yml :language: yaml :caption: An `address` variable in the `http_proxy` family :name: RougailVariableInSubFamily @@ -146,9 +167,11 @@ This time, the type of this new variable is a `domainname` type: description: HTTP address type: domainname -Now that the :confval:`address` variable is declarde, the :term:`operator` can set :term:`a value ` to the :confval:`address` variable +:tutorial:`Download this file from the rougail-tutorials git repository ` -So we have now an :confval:`address` variable: +Now that the :confval:`address` variable is declared, the :term:`operator` can set :term:`a value ` to it. + +In short, let's describe our `address` variable like this: .. confval:: address :type: `domainname` @@ -159,14 +182,17 @@ So we have now an :confval:`address` variable: .. note:: We encountered here a new type of variable there: the `domainname` type. There are a bunch of types available in Rougail. -Assigning a user value ------------------------------------- +We have reached the definition of the address in the `http_proxy` family; there will be other variables to define in this family. + +.. image:: images/firefox_manual_family.png + +.. type-along:: Assigning a user value Now we need to set a value ​​for the :confval:`address` variable, otherwise we will get an error if we try to access this variable: .. raw:: html - :url: https://forge.cloud.silique.fr/stove/rougail-tutorials/src/tag/v1.1_012/config/01/output_ro.html + :url: https://forge.cloud.silique.fr/stove/rougail-tutorials/raw/tag/v1.1_022/config/01/output_ro.html :class: error-box .. @@ -175,30 +201,13 @@ otherwise we will get an error if we try to access this variable: ┗━━ - manual.http_proxy.address (HTTP address) -Because the :term:`mandatory` variable attribute is infered by default for this variable. - -.. type-along:: user data files are where the user values lives - -And we need to set the values ​​in separate files too, called `user data files`. - -.. glossary:: - - user data file - - A user data file is a file where only :term:`user datas` are set. - - A user file is a file where there are only user datas in it, users can set values, called user values -- - that is variable's values that have been set by an :term:`operator`\ . - - see also :term:`user datas` - .. type-along:: let's set user values in a user data file Here is a user data file sample: -.. extinclude:: https://forge.cloud.silique.fr/stove/rougail-tutorials/raw/tag/v1.1_012/config/03/config.yml +.. extinclude:: https://forge.cloud.silique.fr/stove/rougail-tutorials/raw/tag/v1.1_022/config/03/config.yml :language: yaml - :caption: A user file named :file:`config/config.yaml` with a value set for the `address` variable + :caption: A user file named :file:`config/03/config.yml` with a value set for the `address` variable :name: RougailAddresseVariableUserValue .. @@ -208,14 +217,9 @@ Here is a user data file sample: http_proxy: address: example.net -.. glossary:: +Let's validate the consitency of the :term:`configuration`: - configuration - - We call configuration the whole system structure and user values, - and when we speak of consistency, it is in relation to this whole set. - -Let's validate the consitency of the configuration: +FIXME: RAW HTML HERE .. code-block:: text :class: terminal @@ -224,8 +228,10 @@ Let's validate the consitency of the configuration: Everything is OK: +FIXME : l'ouput ne sort pas (erreur 404) + .. raw:: html - :url: https://forge.cloud.silique.fr/stove/rougail-tutorials/raw/tag/v1.1_012/config/03/output_rw.html + :url: https://forge.cloud.silique.fr/stove/rougail-tutorials/raw/tag/v1.1_022/config/03/output_rw.html :class: output .. @@ -272,7 +278,7 @@ This is where the ability to parameterize our variable comes in. params: allow_ip: true -.. extinclude:: https://forge.cloud.silique.fr/stove/rougail-tutorials/raw/tag/v1.1_024/firefox/10-manual.yml +.. extinclude:: https://forge.cloud.silique.fr/stove/rougail-tutorials/raw/tag/v1.1_034/firefox/10-manual.yml :language: yaml :caption: The `address` has a parameter set in the :file:`firefox/10-manual.yml` structure file :name: RougailAddressParameter @@ -312,7 +318,7 @@ Let's create a `port` variable in the `http_proxy` family: Here is the new :file:`firefox/10-manual.yml` structure file: -.. extinclude:: https://forge.cloud.silique.fr/stove/rougail-tutorials/raw/tag/v1.1_012/firefox/10-manual.yml +.. extinclude:: https://forge.cloud.silique.fr/stove/rougail-tutorials/raw/tag/v1.1_022/firefox/10-manual.yml :language: yaml :caption: A rougail structure description file with a hierarchy. :name: RogailPortVariable diff --git a/docs/tutorial/images/firefox_manual_family.png b/docs/tutorial/images/firefox_manual_family.png new file mode 100644 index 0000000000000000000000000000000000000000..049d267c2e450f1a3acce94d598fbf7fb7044855 GIT binary patch literal 32322 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 Xa(e^?At>9QuA4NdgM_@ZUyf@xR{7~= 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 literal 0 HcmV?d00001 diff --git a/docs/tutorial/preliminary.rst b/docs/tutorial/preliminary.rst index 8d30c027c..1b3c4b2c4 100644 --- a/docs/tutorial/preliminary.rst +++ b/docs/tutorial/preliminary.rst @@ -365,6 +365,28 @@ It can come from an integrator's setting or from an operator's setting. Most of the time, the integrator and the operator are one and the same person, here we are talking about roles and not necessarily about people. +.. type-along:: user data files are where the user values live + +We need to set the values ​​in separate files, called `user data files`. + +.. glossary:: + + user data file + + A user data file is a file where only :term:`user datas` are set. + + A user file is a file where there are only user datas in it, users can set values, called user values -- + that is variable's values that have been set by an :term:`operator`\ . + + see also :term:`user datas` + +.. glossary:: + + configuration + + We call configuration the whole system structure and user values, + and when we speak of consistency, it is in relation to this whole set. + .. keypoints:: Key points progress **Keywords** @@ -376,4 +398,5 @@ here we are talking about roles and not necessarily about people. - a variable's default value - a variable's user value - the :term:`integrator` and :term:`operator` roles + - a :term:`configuration`