update cli
This commit is contained in:
parent
887f5794af
commit
4585d1aa66
3 changed files with 235 additions and 6 deletions
84
docs/cli.rst
84
docs/cli.rst
|
|
@ -3,6 +3,14 @@
|
||||||
The Rougail Command Line Interface
|
The Rougail Command Line Interface
|
||||||
========================================
|
========================================
|
||||||
|
|
||||||
|
Les help
|
||||||
|
------------
|
||||||
|
|
||||||
|
::
|
||||||
|
|
||||||
|
rougail -u yaml -h
|
||||||
|
|
||||||
|
|
||||||
Standard usage
|
Standard usage
|
||||||
-----------------
|
-----------------
|
||||||
|
|
||||||
|
|
@ -37,6 +45,35 @@ Standard usage
|
||||||
"port": "8888"
|
"port": "8888"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
CLI root
|
||||||
|
-------------
|
||||||
|
|
||||||
|
::
|
||||||
|
|
||||||
|
(.venv) ubuntu@monessai:~/workplace/rougail-tutorials$ env ROUGAIL_MANUAL.USE_FOR_HTTPS=true rougail -m firefox/ --cli.root manual.https_proxy -u yaml environment -yf ^Cnfig/01/config.yml --cli.read_write
|
||||||
|
(.venv) ubuntu@monessai:~/workplace/rougail-tutorials$ cat config/01/config.yml
|
||||||
|
---
|
||||||
|
proxy_mode: Manual proxy configuration
|
||||||
|
manual:
|
||||||
|
http_proxy:
|
||||||
|
address: http.proxy.net
|
||||||
|
port: 3128
|
||||||
|
use_for_https: false
|
||||||
|
https_proxy:
|
||||||
|
address: https.proxy.net
|
||||||
|
(.venv) ubuntu@monessai:~/workplace/rougail-tutorials$ rougail -m firefox/ --cli.root manual.https_proxy -u yaml -yf config/01/config.yml
|
||||||
|
[WARNING]: Deprecation warnings can be disabled by setting `deprecation_warnings=False` in ansible.cfg.
|
||||||
|
[DEPRECATION WARNING]: Importing 'to_bytes' from 'ansible.module_utils._text' is deprecated. This feature will be removed from ansible-core version 2.24. Use ansible.module_utils.common.text.converters instead.
|
||||||
|
╭────────────── Caption ───────────────╮
|
||||||
|
│ Variable Default value │
|
||||||
|
│ Modified value │
|
||||||
|
│ (⏳ Original default value) │
|
||||||
|
╰──────────────────────────────────────╯
|
||||||
|
Variables:
|
||||||
|
┣━━ 📓 HTTPS address: https.proxy.net ◀ loaded from the YAML file "config/01/config.yml" (⏳ https.proxy.net ◀ loaded from the YAML file "config/01/config.yml" ⏳ http.proxy.net)
|
||||||
|
┗━━ 📓 HTTPS port: 3128
|
||||||
|
|
||||||
|
|
||||||
Invalid user data error
|
Invalid user data error
|
||||||
-----------------------------
|
-----------------------------
|
||||||
|
|
||||||
|
|
@ -55,4 +92,51 @@ https://forge.cloud.silique.fr/stove/rougail-tutorials/src/commit/v1.1_050/READM
|
||||||
when an unknown (or disabled or hidden) variable is declared in the :term:`user data file <user data>`
|
when an unknown (or disabled or hidden) variable is declared in the :term:`user data file <user data>`
|
||||||
then it appears in the output as an error instead of a warning.
|
then it appears in the output as an error instead of a warning.
|
||||||
|
|
||||||
|
Le output doc
|
||||||
|
----------------
|
||||||
|
|
||||||
|
::
|
||||||
|
|
||||||
|
rougail -m structure.yml -o doc --doc.output_format github > README.md
|
||||||
|
|
||||||
|
|
||||||
|
Le formatter
|
||||||
|
----------------
|
||||||
|
|
||||||
|
::
|
||||||
|
|
||||||
|
<gnunux> on va maintenant vérifier le formatage du fichier
|
||||||
|
<gnunux> rougail -o formatter -m structure.yml > a.yml; mv a.yml structure.yml
|
||||||
|
|
||||||
|
Les namespaces
|
||||||
|
-----------------
|
||||||
|
|
||||||
|
::
|
||||||
|
|
||||||
|
rougail -m structure.yml -u yaml -yf userdata.yml -s intranet -xn hosts -xd 0 hosts.yml
|
||||||
|
|
||||||
|
|
||||||
|
::
|
||||||
|
|
||||||
|
rougail -m structure.yml -u yaml -yf userdata.yml -s intranet -xn hosts orem srem prom -xd 0 hosts.yml -xd 1 packages/OREM -xd 2 packages/SREM -xd 3 packages/SREP
|
||||||
|
|
||||||
|
L'export ansible
|
||||||
|
-------------------
|
||||||
|
|
||||||
|
rougail -m structure.yml -u yaml -yf userdata.yml -s intranet -xn hosts -xd 0 hosts.yml -o ansible > ansible.json
|
||||||
|
|
||||||
|
|
||||||
|
::
|
||||||
|
|
||||||
|
ansible-inventory -i $(which rougail) --list
|
||||||
|
|
||||||
|
<gnunux> voir si ansible liste bien ton inventaire :)
|
||||||
|
|
||||||
|
::
|
||||||
|
|
||||||
|
ansible-inventory -i $(which rougail) --host tutu.fr
|
||||||
|
|
||||||
|
::
|
||||||
|
|
||||||
|
ansible-playbook -i $(which rougail) install.yml
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,16 +1,17 @@
|
||||||
rougail==1.2.0a59
|
rougail==1.2.0a63
|
||||||
rougail-cli==0.2.0a42
|
rougail-cli==0.2.0a42
|
||||||
rougail-output-ansible==0.2.0a24
|
rougail-output-ansible==0.2.0a24
|
||||||
rougail-output-display==0.2.0a29
|
rougail-output-display==0.2.0a30
|
||||||
rougail-output-doc==0.2.0a45
|
rougail-output-doc==0.2.0a46
|
||||||
rougail-output-formatter==0.1.0a24
|
rougail-output-formatter==0.1.0a24
|
||||||
rougail-output-json==0.2.0a18
|
rougail-output-json==0.2.0a18
|
||||||
rougail-output-table==0.1.0a2
|
rougail-output-table==0.1.0a2
|
||||||
|
rougail-structural-bitwarden==0.1.0a6
|
||||||
rougail-user-data-ansible==0.1.0a5
|
rougail-user-data-ansible==0.1.0a5
|
||||||
rougail-user-data-bitwarden==0.1.0a30
|
rougail-user-data-bitwarden==0.1.0a30
|
||||||
rougail-user-data-commandline==0.1.0a5
|
rougail-user-data-commandline==0.1.0a5
|
||||||
rougail-user-data-environment==0.1.0a18
|
rougail-user-data-environment==0.1.0a18
|
||||||
rougail-user-data-questionary==0.1.0a4
|
rougail-user-data-questionary==0.1.0a4
|
||||||
rougail-user-data-yaml==0.2.0a19
|
rougail-user-data-yaml==0.2.0a19
|
||||||
tiramisu==5.2.0a25
|
tiramisu==5.2.0a26
|
||||||
tiramisu-cmdline-parser==0.7.0a5
|
tiramisu-cmdline-parser==0.7.0a5
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,12 @@ Playing with Jinja
|
||||||
Up to now, our only way of dynamically (that is, during the runtime) calculating
|
Up to now, our only way of dynamically (that is, during the runtime) calculating
|
||||||
a value is to point on another variable's value. But this is not the only way.
|
a value is to point on another variable's value. But this is not the only way.
|
||||||
|
|
||||||
|
We will learn how to insert `Jinja templating language <https://jinja.palletsprojects.com/en/stable/>`_ into our structure files.
|
||||||
|
Please note that we do not intend to template our YAML files.
|
||||||
|
That is a completely different activity.
|
||||||
|
We will simply insert YAML code to calculate variable, property, or parameter values.
|
||||||
|
|
||||||
|
|
||||||
.. prerequisites:: Prerequisites
|
.. prerequisites:: Prerequisites
|
||||||
|
|
||||||
- We assume that Rougail's library is :ref:`installed <installation>` on your computer.
|
- We assume that Rougail's library is :ref:`installed <installation>` on your computer.
|
||||||
|
|
@ -29,7 +35,145 @@ Playing with Jinja
|
||||||
A conditional hidden family with Jinja
|
A conditional hidden family with Jinja
|
||||||
---------------------------------------
|
---------------------------------------
|
||||||
|
|
||||||
GWEN
|
Let's show add some jinja code in our structure file:
|
||||||
|
|
||||||
|
.. extinclude:: https://forge.cloud.silique.fr/stove/rougail-tutorials/raw/commit/v1.1_070/firefox/20-manual.yml
|
||||||
|
:language: yaml
|
||||||
|
:caption: The :file:`firefox/20-manual.yml` structure file with some `jinja` code in the `hidden` property
|
||||||
|
|
||||||
|
..
|
||||||
|
%YAML 1.2
|
||||||
|
---
|
||||||
|
version: 1.1
|
||||||
|
|
||||||
|
manual:
|
||||||
|
|
||||||
|
use_for_https: true # Also use this proxy for HTTPS
|
||||||
|
|
||||||
|
'{{ identifier }}_proxy':
|
||||||
|
description: '{{ identifier }} Proxy'
|
||||||
|
hidden:
|
||||||
|
jinja: |-
|
||||||
|
{% if _.use_for_https %}
|
||||||
|
HTTPS is same has HTTP
|
||||||
|
{% endif %}
|
||||||
|
dynamic:
|
||||||
|
- HTTPS
|
||||||
|
- SOCKS
|
||||||
|
|
||||||
|
address:
|
||||||
|
description: '{{ identifier }} address'
|
||||||
|
default:
|
||||||
|
variable: __.http_proxy.address
|
||||||
|
|
||||||
|
port:
|
||||||
|
description: '{{ identifier }} port'
|
||||||
|
default:
|
||||||
|
variable: __.http_proxy.port
|
||||||
|
|
||||||
|
version:
|
||||||
|
description: SOCKS host version used by proxy
|
||||||
|
choices:
|
||||||
|
- v4
|
||||||
|
- v5
|
||||||
|
default: v5
|
||||||
|
disabled:
|
||||||
|
type: identifier
|
||||||
|
when: HTTPS
|
||||||
|
...
|
||||||
|
|
||||||
|
|
||||||
|
If we set the `use_for_https` to `false`:
|
||||||
|
|
||||||
|
.. extinclude:: https://forge.cloud.silique.fr/stove/rougail-tutorials/raw/commit/v1.1_070/config/01/config.yml
|
||||||
|
:language: yaml
|
||||||
|
:caption: FIXME
|
||||||
|
|
||||||
|
..
|
||||||
|
---
|
||||||
|
proxy_mode: Manual proxy configuration
|
||||||
|
manual:
|
||||||
|
http_proxy:
|
||||||
|
address: http.proxy.net
|
||||||
|
port: 3128
|
||||||
|
use_for_https: false
|
||||||
|
https_proxy:
|
||||||
|
address: https.proxy.net
|
||||||
|
|
||||||
|
Nothing special appears when we launch the Rougail CLI:
|
||||||
|
|
||||||
|
.. raw:: html
|
||||||
|
:url: https://forge.cloud.silique.fr/stove/rougail-tutorials/raw/commit/v1.1_070/config/01/cmd_ro.txt
|
||||||
|
:class: terminal
|
||||||
|
|
||||||
|
..
|
||||||
|
rougail -m firefox/ -u yaml -yf config/01/config.The
|
||||||
|
|
||||||
|
---
|
||||||
|
..
|
||||||
|
env ROUGAIL_MANUAL.USE_FOR_HTTPS=true
|
||||||
|
|
||||||
|
::
|
||||||
|
|
||||||
|
rougail -m firefox/ -u yaml -yf config/01/config.yml --cli.root manual.https_proxy
|
||||||
|
|
||||||
|
we have a warning:
|
||||||
|
|
||||||
|
::
|
||||||
|
|
||||||
|
🔔 Warning
|
||||||
|
┗━━ Manual proxy configuration
|
||||||
|
┗━━ HTTPS Proxy
|
||||||
|
┗━━ HTTPS address: 🔔 family "HTTPS Proxy" has property hidden, so
|
||||||
|
cannot access to "HTTPS address", it will be ignored when loading
|
||||||
|
from the YAML file "config/01/config.yml"
|
||||||
|
|
||||||
|
╭────────────── Caption ──────────────╮
|
||||||
|
│ Unmodifiable variable Default value │
|
||||||
|
╰─────────────────────────────────────╯
|
||||||
|
Variables:
|
||||||
|
┣━━ 📓 HTTPS address: http.proxy.net
|
||||||
|
┗━━ 📓 HTTPS port: 3128
|
||||||
|
|
||||||
|
|
||||||
|
It is interesting here to launch the Rougail CLI in the :term:`read write mode`:
|
||||||
|
|
||||||
|
..
|
||||||
|
env ROUGAIL_MANUAL.USE_FOR_HTTPS=true
|
||||||
|
|
||||||
|
::
|
||||||
|
|
||||||
|
rougail -m firefox/ --cli.root manual.https_proxy -u yaml environment -yf config/01/config.yml --cli.read_write
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
ERROR: cannot access to optiondescription "HTTPS Proxy"
|
||||||
|
because has property "hidden"
|
||||||
|
(HTTPS is same has HTTP)
|
||||||
|
|
||||||
|
|
||||||
|
yml standard output:
|
||||||
|
|
||||||
|
.. raw:: html
|
||||||
|
:url: https://forge.cloud.silique.fr/stove/rougail-tutorials/raw/commit/v1.1_070/config/01/output_ro.html
|
||||||
|
:class: output
|
||||||
|
|
||||||
|
..
|
||||||
|
Variables:
|
||||||
|
┣━━ 📓 Configure Proxy Access to the Internet: Manual proxy configuration ◀ loaded from the YAML file "config/01/config.yml" (⏳ No proxy)
|
||||||
|
┗━━ 📂 Manual proxy configuration
|
||||||
|
┣━━ 📂 HTTP Proxy
|
||||||
|
┃ ┣━━ 📓 HTTP address: http.proxy.net ◀ loaded from the YAML file "config/01/config.yml"
|
||||||
|
┃ ┗━━ 📓 HTTP Port: 3128 ◀ loaded from the YAML file "config/01/config.yml" (⏳ 8080)
|
||||||
|
┣━━ 📓 Also use this proxy for HTTPS: false ◀ loaded from the YAML file "config/01/config.yml" (⏳ true)
|
||||||
|
┣━━ 📂 HTTPS Proxy
|
||||||
|
┃ ┣━━ 📓 HTTPS address: https.proxy.net ◀ loaded from the YAML file "config/01/config.yml" (⏳ http.proxy.net)
|
||||||
|
┃ ┗━━ 📓 HTTPS port: 3128
|
||||||
|
┗━━ 📂 SOCKS Proxy
|
||||||
|
┣━━ 📓 SOCKS address: http.proxy.net
|
||||||
|
┣━━ 📓 SOCKS port: 3128
|
||||||
|
┗━━ 📓 SOCKS host version used by proxy: v5
|
||||||
|
|
||||||
|
|
||||||
We can hide or disable some variables or families with other techniques than
|
We can hide or disable some variables or families with other techniques than
|
||||||
pointing on a variable's value.
|
pointing on a variable's value.
|
||||||
|
|
@ -175,7 +319,7 @@ The default values can be calculated too.
|
||||||
Using jinja in a dynamic family declaration
|
Using jinja in a dynamic family declaration
|
||||||
-----------------------------------------------
|
-----------------------------------------------
|
||||||
|
|
||||||
Let's come back to the previous section's :ref:`dynamic family example <conditional_hidden_family>`\ .
|
Let's come back to the previous section's FIXME `dynamic family example <conditional_hidden_family>`
|
||||||
|
|
||||||
In a dynamic family, as seen before, you have the possibility to name your identifier. In the classic declaration,
|
In a dynamic family, as seen before, you have the possibility to name your identifier. In the classic declaration,
|
||||||
the identifier's variable is named "identifier" by default. Sounds logical:
|
the identifier's variable is named "identifier" by default. Sounds logical:
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue