configuration and user data file in preliminary
This commit is contained in:
parent
50bf8e696d
commit
cb9b534669
3 changed files with 74 additions and 45 deletions
|
|
@ -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.
|
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 <src/branch/1.1>`,
|
If you want to follow this tutorial with the help of the corresponding :tutorial:`Rougail-tutorials git repository <src/branch/1.1>`,
|
||||||
this workshop page corresponds to the tags :tutorial:`v1.1_020 <src/tag/v1.1_020>` in the repository:
|
this workshop page corresponds to the tags :tutorial:`v1.1_020 <src/tag/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
|
Proxy mode's settings
|
||||||
|
|
||||||
Now we will define new variables, and other structure definitions.
|
Now we will define new variables, and other structure definitions.
|
||||||
|
|
||||||
|
|
||||||
For the sake of clarity, we will put the structure definitions in separate files.
|
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 <namingconvention>`.
|
Please have a look at the :ref:`file naming and organizing convention <namingconvention>`.
|
||||||
|
|
||||||
Here we made a :file:`firefox/00-proxy.yml` structure file and we're gonna make
|
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
|
type: family
|
||||||
|
|
||||||
We can see that we have defined a :term:`family` here, and this family is *empty*
|
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::
|
.. 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.
|
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,
|
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:
|
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
|
:language: yaml
|
||||||
:caption: A rougail structure description file with a hierarchy.
|
:caption: A rougail structure description file with a hierarchy.
|
||||||
:name: RougailFirstFamilyHierarchy
|
:name: RougailFirstFamilyHierarchy
|
||||||
|
|
@ -119,15 +129,26 @@ Creating a family hierarchy of family container types is very easy, here is an e
|
||||||
description: HTTP Proxy
|
description: HTTP Proxy
|
||||||
type: family
|
type: family
|
||||||
|
|
||||||
Here the `http_proxy` family lives inside the `manual` family.
|
:tutorial:`Download this file from the rougail-tutorials git repository <src/tag/v1.1_021/firefox/00-proxy.yml>`
|
||||||
|
|
||||||
|
Note that the `http_proxy` family lives inside the `manual` family.
|
||||||
|
|
||||||
Putting a variable inside of a family or a sub 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.
|
Let's create a variable in the `http_proxy` family.
|
||||||
This time, the type of this new variable is a `domainname` type:
|
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
|
:language: yaml
|
||||||
:caption: An `address` variable in the `http_proxy` family
|
:caption: An `address` variable in the `http_proxy` family
|
||||||
:name: RougailVariableInSubFamily
|
:name: RougailVariableInSubFamily
|
||||||
|
|
@ -146,9 +167,11 @@ This time, the type of this new variable is a `domainname` type:
|
||||||
description: HTTP address
|
description: HTTP address
|
||||||
type: domainname
|
type: domainname
|
||||||
|
|
||||||
Now that the :confval:`address` variable is declarde, the :term:`operator` can set :term:`a value <value>` to the :confval:`address` variable
|
:tutorial:`Download this file from the rougail-tutorials git repository <src/tag/v1.1_022/firefox/10-manual.yml>`
|
||||||
|
|
||||||
So we have now an :confval:`address` variable:
|
Now that the :confval:`address` variable is declared, the :term:`operator` can set :term:`a value <value>` to it.
|
||||||
|
|
||||||
|
In short, let's describe our `address` variable like this:
|
||||||
|
|
||||||
.. confval:: address
|
.. confval:: address
|
||||||
:type: `domainname`
|
: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.
|
.. note:: We encountered here a new type of variable there: the `domainname` type.
|
||||||
There are a bunch of types available in Rougail.
|
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,
|
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:
|
otherwise we will get an error if we try to access this variable:
|
||||||
|
|
||||||
.. raw:: html
|
.. 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
|
:class: error-box
|
||||||
|
|
||||||
..
|
..
|
||||||
|
|
@ -175,30 +201,13 @@ otherwise we will get an error if we try to access this variable:
|
||||||
<span style="color: #ff0000">┗━━ </span> - manual.http_proxy.address (HTTP address)
|
<span style="color: #ff0000">┗━━ </span> - manual.http_proxy.address (HTTP address)
|
||||||
</pre>
|
</pre>
|
||||||
|
|
||||||
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
|
.. type-along:: let's set user values in a user data file
|
||||||
|
|
||||||
Here is a user data file sample:
|
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
|
: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
|
:name: RougailAddresseVariableUserValue
|
||||||
|
|
||||||
..
|
..
|
||||||
|
|
@ -208,14 +217,9 @@ Here is a user data file sample:
|
||||||
http_proxy:
|
http_proxy:
|
||||||
address: example.net
|
address: example.net
|
||||||
|
|
||||||
.. glossary::
|
Let's validate the consitency of the :term:`configuration`:
|
||||||
|
|
||||||
configuration
|
FIXME: RAW HTML HERE
|
||||||
|
|
||||||
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:
|
|
||||||
|
|
||||||
.. code-block:: text
|
.. code-block:: text
|
||||||
:class: terminal
|
:class: terminal
|
||||||
|
|
@ -224,8 +228,10 @@ Let's validate the consitency of the configuration:
|
||||||
|
|
||||||
Everything is OK:
|
Everything is OK:
|
||||||
|
|
||||||
|
FIXME : l'ouput ne sort pas (erreur 404)
|
||||||
|
|
||||||
.. raw:: html
|
.. 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
|
:class: output
|
||||||
|
|
||||||
..
|
..
|
||||||
|
|
@ -272,7 +278,7 @@ This is where the ability to parameterize our variable comes in.
|
||||||
params:
|
params:
|
||||||
allow_ip: true
|
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
|
:language: yaml
|
||||||
:caption: The `address` has a parameter set in the :file:`firefox/10-manual.yml` structure file
|
:caption: The `address` has a parameter set in the :file:`firefox/10-manual.yml` structure file
|
||||||
:name: RougailAddressParameter
|
: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:
|
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
|
:language: yaml
|
||||||
:caption: A rougail structure description file with a hierarchy.
|
:caption: A rougail structure description file with a hierarchy.
|
||||||
:name: RogailPortVariable
|
:name: RogailPortVariable
|
||||||
|
|
|
||||||
BIN
docs/tutorial/images/firefox_manual_family.png
Normal file
BIN
docs/tutorial/images/firefox_manual_family.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 32 KiB |
|
|
@ -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,
|
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.
|
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
|
.. keypoints:: Key points progress
|
||||||
|
|
||||||
**Keywords**
|
**Keywords**
|
||||||
|
|
@ -376,4 +398,5 @@ here we are talking about roles and not necessarily about people.
|
||||||
- a variable's default value
|
- a variable's default value
|
||||||
- a variable's user value
|
- a variable's user value
|
||||||
- the :term:`integrator` and :term:`operator` roles
|
- the :term:`integrator` and :term:`operator` roles
|
||||||
|
- a :term:`configuration`
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue