updated doc

This commit is contained in:
levasseur
2021-11-26 11:01:54 +01:00
parent c71b22f326
commit e9c5cea0f3
2 changed files with 53 additions and 23 deletions

View File

@@ -7,16 +7,16 @@ using Debian GNU/Linux, Devuan and different flavors of Ubuntu.
## Table of content ## Table of content
- [init.sh](#initsh) - [init.sh](#initsh)
- [1. Getting started](#1-getting-started) - [1. Getting started](#1-getting-started)
- [2. Design](#2-design) - [2. Why init.sh?](#2-why-initsh)
- [2.1. Command line](#21-command-line) - [3. Design](#3-design)
- [2.2. Loading order and process](#22-loading-order-and-process) - [3.1. Command line](#31-command-line)
- [2.3. Configuration files](#23-configuration-files) - [3.2. Loading order and process](#32-loading-order-and-process)
- [2.3.1. Main configuration file](#231-main-configuration-file) - [3.4. Naming conventions](#34-naming-conventions)
- [2.3.2. Automatically loaded configuration files](#232-automatically-loaded-configuration-files) - [3.5. Basic module structure](#35-basic-module-structure)
- [2.4. Naming conventions](#24-naming-conventions) - [4. Error code table](#4-error-code-table)
- [2.5. Basic module structure](#25-basic-module-structure) - [5. Contact and more information](#5-contact-and-more-information)
- [3. Error code table](#3-error-code-table) - [5.1. How to contribute?](#51-how-to-contribute)
- [4. Contact and more information](#4-contact-and-more-information) - [5.2. Website and maintainor](#52-website-and-maintainor)
## 1. Getting started ## 1. Getting started
You should consider reading that document entirely before use. If you need You should consider reading that document entirely before use. If you need
@@ -26,7 +26,23 @@ to create additional modules to meet your needs, consider reading the
Please also consider that your needs might meet the needs of someone else, thus Please also consider that your needs might meet the needs of someone else, thus
it would be a good idea to submit your module to init.sh source base. it would be a good idea to submit your module to init.sh source base.
## 2. Design ## 2. Why init.sh?
Short answer: why not?
Long answer: Even if I vallue tools like Puppet or Ansible, I always thought
that such great and complex systems are very nice for big infrastructures. But,
on a much smaller scale, or if you need something fast to deploy and adapt to
your needs, such big tools are somehow overkill.
I wanted something simple and as universal as possible to manage many different
unique servers in my small local foundations. I started with a lot of long
hardcoded monolitic scripts where I had to rewritte many things on every new
infrastructures I wanted to manage. As it was a fastidious job, I started to
rewritte and redesign everything with a common architecture and code, modular
and easily adaptative. As I don't know any tools in that market scale, I decided
to publish.
## 3. Design
**init.sh** relies on three different elements to work: **init.sh** relies on three different elements to work:
- the ```init.sh``` script, which provide a simple framework and libraries to do - the ```init.sh``` script, which provide a simple framework and libraries to do
@@ -40,7 +56,7 @@ Additionally, some module might be run regularly, so it could be integrated in a
cron-like service using the provided cron mode with the benefits of ```init.sh``` cron-like service using the provided cron mode with the benefits of ```init.sh```
structure and libraries. structure and libraries.
### 2.1. Command line ### 3.1. Command line
The **init.sh** script allows some command line parameters and some environment The **init.sh** script allows some command line parameters and some environment
variables to change its behavior. variables to change its behavior.
@@ -87,7 +103,7 @@ list and their version.
The options cannot be concatenated like most of Unix binaries allows. For The options cannot be concatenated like most of Unix binaries allows. For
example you cannot write ```-rR```, you have to write ```-r -R```. example you cannot write ```-rR```, you have to write ```-r -R```.
### 2.2. Loading order and process ### 3.2. Loading order and process
The first thing the script do is loading its libraries contained in the "*lib*" The first thing the script do is loading its libraries contained in the "*lib*"
directory. Any file situated in that directory ending with the .sh extension directory. Any file situated in that directory ending with the .sh extension
@@ -121,8 +137,8 @@ Without the ```--keep-going``` option, any error will immediately stop execution
Some errors that could make the script impossible to execute will stop Some errors that could make the script impossible to execute will stop
execution, even if the ```--keep-going``` option is provided. execution, even if the ```--keep-going``` option is provided.
### 2.3. Configuration files ### 3.3. Configuration files
#### 2.3.1. Main configuration file #### 3.3.1. Main configuration file
The main configuration file can be two different files. Either it's completely The main configuration file can be two different files. Either it's completely
generic and will be named **init.conf.sh** in the ```conf``` directory, either generic and will be named **init.conf.sh** in the ```conf``` directory, either
@@ -146,7 +162,7 @@ so you can declare something on your organization configuration file and
supersede it in your host configuration file. The only limit will be Bash supersede it in your host configuration file. The only limit will be Bash
capabilities in terms of variable manipulation. capabilities in terms of variable manipulation.
#### 2.3.2. Automatically loaded configuration files #### 3.3.2. Automatically loaded configuration files
Those file are basically the system dependent part that assure compatibility Those file are basically the system dependent part that assure compatibility
with different Linux distributions. Some of those files are shipped with with different Linux distributions. Some of those files are shipped with
init.sh but you can add what you want to improve possibilities or to add support init.sh but you can add what you want to improve possibilities or to add support
@@ -172,7 +188,7 @@ The configuration files are loaded if exists in the following order:
The loading of those files, if one exists, cannot be avoided. They all must be The loading of those files, if one exists, cannot be avoided. They all must be
located in the ```conf/auto``` directory of the init.sh tree. located in the ```conf/auto``` directory of the init.sh tree.
### 2.4. Naming conventions ### 3.4. Naming conventions
Because of internal mechanics, the dash character is forbidden in module names. Because of internal mechanics, the dash character is forbidden in module names.
Thus, Bash language also forbid that character in variable name. Thus, Bash language also forbid that character in variable name.
@@ -191,7 +207,7 @@ Any submitted module to the central repository will have module name in lower
case with underscore to separate words and ease reading, and variable name upper case with underscore to separate words and ease reading, and variable name upper
case with the same underscore as word separator. case with the same underscore as word separator.
### 2.5. Basic module structure ### 3.5. Basic module structure
Please note that modules are not supposed to contain any specific code for a Please note that modules are not supposed to contain any specific code for a
platform or a distribution, even if nothing block you doing so. It is highly platform or a distribution, even if nothing block you doing so. It is highly
@@ -263,7 +279,7 @@ be executed in cron mode. Check [cron documentation](./doc/cron.md) for more
details. details.
## 3. Error code table ## 4. Error code table
The following table is giving a list of error code with explanation: The following table is giving a list of error code with explanation:
@@ -298,8 +314,22 @@ you in the debugging process. If you find a bug outside modules or in the basic
provided module, please contact the author. Of course, if you also have a patch, provided module, please contact the author. Of course, if you also have a patch,
your mail will be even more welcomed! your mail will be even more welcomed!
## 4. Contact and more information ## 5. Contact and more information
### 5.1. How to contribute?
If you want to contribute, the best is to use git and push your changes in a
branch you made for that purpose. If you want to submit a patch, you can send it
by mail to the maintainor of init.sh.
You can improve anything you want, but keep in mind init.sh have to stay small
and simple. If your idea cannot be written using Bash scripting, maybe that
means you're going to far in the improvement.
Code written in Python or Perl might be accepted as long as it's not mobilizing
a lot of dependencies (forget big framework). Core script will remain in Bash
whatever the evolutions of init.sh will be.
### 5.2. Website and maintainor
Everything except configuration files are licensed under BSD-3 license. Please Everything except configuration files are licensed under BSD-3 license. Please
check license file. check license file.

View File

@@ -354,8 +354,8 @@ outside of the integrated package manager mechanisms as their functionnalities
depends on variables managed by their respective package manager functions. depends on variables managed by their respective package manager functions.
The following table resume those function sorted with their respective caller: The following table resume those function sorted with their respective caller:
| Pre/post functions | Caller | Package triger | Required var | Description | | Pre/post functions | Caller | Required var | Package triger | Description |
|:-------------------|:--------|:---------------|:-------------|:--------------| |:-------------------|:--------|:-------------|:---------------|:--------------|
| ```exec_preinst``` | ```pkginst``` | ```GET_INTALLLIST``` | ```preinst_@pkgname@``` | ```GET_INTALLLIST``` variable defines the command that allows us to obtain the list of package that will be installed with ```@pkg@``` as a substitute to the list given as ```pkginst``` parameters. | | ```exec_preinst``` | ```pkginst``` | ```GET_INTALLLIST``` | ```preinst_@pkgname@``` | ```GET_INTALLLIST``` variable defines the command that allows us to obtain the list of package that will be installed with ```@pkg@``` as a substitute to the list given as ```pkginst``` parameters. |
| ```exec_postinst``` | ```pkginst``` | ```POSTINSTLIST``` | ```postinst_@pkgname@``` | ```POSTINSTLIST``` is generated by ```exec_preinst``` and destroyed after ```exec_postinst``` execution. | | ```exec_postinst``` | ```pkginst``` | ```POSTINSTLIST``` | ```postinst_@pkgname@``` | ```POSTINSTLIST``` is generated by ```exec_preinst``` and destroyed after ```exec_postinst``` execution. |
| ```exec_preupgd``` | ```pkgupgd``` | ```GET_UPGRADELIST``` | ```preupgd_@pkgname@``` | ```GET_UPGRADELIST``` variable defines the command that allows us to obtain the list of package that will be installed. | | ```exec_preupgd``` | ```pkgupgd``` | ```GET_UPGRADELIST``` | ```preupgd_@pkgname@``` | ```GET_UPGRADELIST``` variable defines the command that allows us to obtain the list of package that will be installed. |