bump to version 0.99.18

This commit is contained in:
fatalerrors
2022-06-24 17:52:17 +02:00
parent e8c6f46572
commit da37fd3bae
52 changed files with 1268 additions and 435 deletions

176
README.md
View File

@@ -1,8 +1,8 @@
# init.sh # init.sh
**init.sh** is an automated configurator for system administrators. It's fully **init.sh** is an automated configuratinon software for system administrators.
written using Bash scripting and aims to be platform independent. Nevertheless, It's fully written using Bash scripting and aims to be platform independent.
its requirements turn it naturally to Linux systems. It has long been tested Nevertheless, its requirements turn it naturally to Linux systems. It has long
using Debian GNU/Linux, Devuan and different flavors of Ubuntu. been tested using Debian GNU/Linux, Devuan and different flavors of Ubuntu.
## Table of content ## Table of content
- [init.sh](#initsh) - [init.sh](#initsh)
@@ -33,26 +33,27 @@ Short answer: why not?
Long answer: Even if I value tools like Puppet or Ansible, I always thought that Long answer: Even if I value tools like Puppet or Ansible, I always thought that
such great and complex systems are very nice for big infrastructures. But, on a such great and complex systems are very nice for big infrastructures. But, on a
much smaller scale like small business, or if you need something fast to deploy much smaller scale like small business, or if you require something fast to
and easy to adapt to your needs, such great tools are somehow overkill. deploy and easy to adapt to your needs, such great tools are somehow
overkilling.
I wanted something simple and as universal as possible to manage many different I wanted something simple and as universal as possible to manage many unique
unique servers in my small local foundations. I started with a lot of long servers in my small local foundations. I started with a lot of long hard-coded
hardcoded monolitic scripts where I had to rewritte many things on every new monolithic scripts where I had to rewrite many things on every new
infrastructures I wanted to manage. As it was a fastidious job, I started to 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 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 and easily adaptive. As I don't know any tools in that market scale, I decided
to publish and share that work, in the hope it can be usefull. to publish and share that work, in the hope it can be useful.
## 3. Design ## 3. Design
**init.sh** relies on three different elements to work: **init.sh** relies on three different elements to work:
- the ```init.sh``` script and libraries, which provide a simple framework to do - The ```init.sh``` script and libraries, which provide a simple framework to do
simple tasks and embed system dependent tools to provide system independent simple tasks and embed system dependent tools to provide system independent
function calls. function calls.
- modules that actually do the job, as possible on a system independent way - Modules that actually do the job, as possible on a system independent way
through the use of the framework and consisting of very small and simple tasks. through the use of the framework, and consisting of very small and simple tasks.
- multilevel configuration files, being simply Bash variables declaration. - Multilevel configuration files, being simply Bash variables declaration.
Additionally, some module might be run regularly, so it could be integrated in a 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```
@@ -75,7 +76,7 @@ separated module name. If that option is provided, the module list is mandatory.
- **-c, --check-only**: Do not launch any actions, only the checks are launched. - **-c, --check-only**: Do not launch any actions, only the checks are launched.
In that situation, no change should be done to the system. In that situation, no change should be done to the system.
- **-j, --jump**: Jump the checks and goes directly to system transformation. - **-j, --jump**: Jump the checks and goes directly to system transformation.
That option should only be run after successful checks (e.g. after using the That option should only be run after successful checks (e.g., after using the
\--check-only option). \--check-only option).
- **-k, --keep-going**: The scripts will try to continue even if errors occurs. - **-k, --keep-going**: The scripts will try to continue even if errors occurs.
Thus, some unrecoverable errors might stop the script anyway if it's not Thus, some unrecoverable errors might stop the script anyway if it's not
@@ -85,14 +86,14 @@ results.
that failed. that failed.
- **-R, --no-root-check**: Disable checks on root rights (or the 0 UID). - **-R, --no-root-check**: Disable checks on root rights (or the 0 UID).
- **-D, --no-deps**: Disable module dependencies checks. - **-D, --no-deps**: Disable module dependencies checks.
- **-P, --no-proxy**: Do not hot apply proxy setting to the running system even - **-P, --no-proxy**: Do not hot apply proxy setting to the running system, even
if system proxy is set in configuration files. if system proxy is set in configuration files.
- **-h, --help**: Display information on command line usage. - **-h, --help**: Display information on command line usage.
- **-s, --shell**: Launch a shell with entire script's environment for - **-s, --shell**: Launch a shell with entire script's environment for
debugging purpose. No action or modification is made to the system unless you debugging purpose. No action or modification is made to the system unless you
launch commands manually doing some. launch commands manually doing some.
- **--chroot \<path\>**: Allows you to apply init.sh test or modification on a non - **--chroot \<path\>**: Allows you to apply init.sh test or modification on a
running system, mounted in the given path. non-running system, mounted in the given path.
- **--cron**: execute init.sh in cron mode. Check [cron subsystem - **--cron**: execute init.sh in cron mode. Check [cron subsystem
documentation](./doc/cron.md) documentation](./doc/cron.md)
for more details. for more details.
@@ -103,7 +104,7 @@ be customized using the ```LOGFILE``` environment variable.
list and their version. 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```.
### 3.2. Loading order and process ### 3.2. Loading order and process
@@ -111,40 +112,38 @@ 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
will be loaded in alphabetical order. For that reason, error management will be loaded in alphabetical order. For that reason, error management
functions are placed in a file called aaa_error.sh, so it can be loaded first functions are placed in a file called aaa_error.sh, so it can be loaded first
and catch errors that could occur while loading other library files. In the and catch errors that could occur while loading other library files.
opposite the zzz_main_fct.sh file have to be loaded last, because it's widely
using previously declared libraries.
After that, a basic command line parameter treatment is done. That allows the After that, a basic command line parameter treatment will be done. That allows
use of ```--version``` and ```--help``` options in user space. Those options the use of ```--version``` and ```--help``` options in user space. Those options
display information and don't require any superuser rights and exit at that display information and don't require any superuser rights, and exit at that
point of execution. Everything after that will require administrator rights and point of execution. Everything after that will require administrator rights and
the script will exit with error at that point if not superuser, unless the the script will exit with error at that point if not superuser, unless the
```--no-root-check``` option have been given. ```--no-root-check``` option was given.
Next will be the log file creation and the loading of configuration files. Next will be the log file creation and the loading of configuration files.
Configuration files exists in two distinct categories. First system dependant Configuration files exist in two distinct categories. First system dependent
configuration will be loaded automatically depending on your platform, then configuration will be loaded automatically depending on your platform, then
your own configuration. At this point a deeper analysis of command line option your own configuration. At this point, a deeper analysis of command line option
will be done, triggering errors in case of inconsistency or incompatible will be done, triggering errors in case of inconsistency or incompatible
options. options.
After that all the configured modules with the ```$MODULE_LIST``` variable are After that, all the configured modules with the ```$MODULE_LIST``` variable are
loaded to be availble for execution. Note that even function that might not be loaded to be available for execution. Note that even function that might not be
used will be loaded. At this point everything that will be necessary for checks used will be loaded. At this point, everything that will be necessary for checks
and modification will be available in the scripts execution environment. If the and modification will be available in the scripts' execution environment. If the
```--shell``` command line option is given, the subshell is loaded just after ```--shell``` command line option was given, the sub-shell is loaded just after
this point. this point.
Finally, checking processes are launched in their declaration order (cf. Finally, checking processes are launched in their declaration order (cf.
configuration file). A module depency check is made prior to the module specific configuration file). A module dependency check is made prior to the module specific
checks unless the ```--no-deps``` option is given or if a manual module list checks unless the ```--no-deps``` option was given or if a manual module list
have been transmited. If no error occurs and after a confirmation prompt, final was transmitted. If no error occurs and after a confirmation prompt, final
treatment processes, those that actually makes changes, are launched. treatment processes, those that actually makes changes, are launched.
Without the ```--keep-going``` option, any error will immediately stop execution. 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 was provided.
### 3.3. Configuration files ### 3.3. Configuration files
#### 3.3.1. Main configuration file #### 3.3.1. Main configuration file
@@ -162,21 +161,21 @@ your use case.
After a module version upgrade, you should check again headers as variable name After a module version upgrade, you should check again headers as variable name
or structure might change. A variable can also be deleted, new variables could or structure might change. A variable can also be deleted, new variables could
appears, and so on. appear, and so on.
It is heavily recommended to use includes technique to shorten your It is heavily recommended to use includes technique to shorten your
configuration file and make a file for your organization and another one configuration file and make a file for your organization and another one
for the Linux distribution you use. Remember that the declaration order matters, for the Linux distribution you use. Remember that the declaration order matters,
so you can declare something on your organization configuration file and so you can declare something in 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.
#### 3.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 files 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
for a new distribution. init.sh understand the following possibilities in terms support for a new distribution. init.sh understand the following possibilities
of OS detection: in terms of OS detection:
| Name | Variable | Description | | Name | Variable | Description |
|:------------|:---------------|:----------------------------------------------| |:------------|:---------------|:----------------------------------------------|
@@ -185,14 +184,14 @@ of OS detection:
| **version** | ```SYS_VER``` | Version of the distribution. If you run a rolling release and no version is provided by your */etc/os-release* file, the main version of the Linux kernel will be used (e.g. 5.4 for any version of 5.4.x kernel branch). | | **version** | ```SYS_VER``` | Version of the distribution. If you run a rolling release and no version is provided by your */etc/os-release* file, the main version of the Linux kernel will be used (e.g. 5.4 for any version of 5.4.x kernel branch). |
| **codename**| ```SYS_CODE``` | If your distribution provide a version codename, it will be set with it, elsewhere it will remain unset. | | **codename**| ```SYS_CODE``` | If your distribution provide a version codename, it will be set with it, elsewhere it will remain unset. |
The configuration files are loaded if exists in the following order: The configuration files loads if exists in the following order:
1. arch.conf.sh 1. arch.conf.sh
2. distro.conf.sh 2. distro.conf.sh
3. distro-arch.conf.sh 3. distro-arch.conf.sh
4. distro-version.conf.sh 4. distro-version.conf.sh
5. distro-codename.conf.sh (only if ```$SYS_CODE``` is defined) 5. distro-codename.conf.sh (only if ```$SYS_CODE``` defined)
6. distro-version-arch.conf.sh 6. distro-version-arch.conf.sh
7. distro-codename-arch.conf.sh (only if ```$SYS_CODE``` is defined) 7. distro-codename-arch.conf.sh (only if ```$SYS_CODE``` defined)
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.
@@ -203,10 +202,10 @@ 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.
Another limit is, even if digits are allowed in module names and variable, they Another limit is, even if digits are allowed in module names and variable, they
can't be used as a leading character or worse the full name being only made of can't be used as a leading character or worse the full name only made of digits.
digits. You can use as many digits you want in names, but with at least a You can use as many digits you want in names, but with at least a leading
leading alphabetical (or underscore) character, whatever the case of that alphabetical (or underscore) character, whatever the case of that character will
character will be. be.
You can use upper case and lower case as you wish, with underscore character, You can use upper case and lower case as you wish, with underscore character,
even as leading character. Any other special character than alphanumerical or even as leading character. Any other special character than alphanumerical or
@@ -236,30 +235,30 @@ sed -e "s/@template@/module_name/g" -e "/^# .*/d" -e "s/^##/# /" template > \
Versioning modules is up to you, but the recommended behavior follows some Versioning modules is up to you, but the recommended behavior follows some
standard rules, not artificially increasing version numbers in a stupid fight of standard rules, not artificially increasing version numbers in a stupid fight of
who will have the biggest like Google or Firefox. Considering a numbering as who will have the biggest, like Google or Firefox. Considering a numbering as
x.y.z: x.y.z:
- x might be incremented in case of major change, rewriting or different - x might increment in case of major change, rewriting or different approach on
approach on the way to have the job done, the used variable could massively the way to have the job done, the used variable could massively change and
change and jeoppardy compatibility; jeopardy compatibility;
- y might be incremented in case of simple functionality addition or basic - y might increment in case of simple functionality addition or basic
improvements, existing variable might not change, but new ones could appear; improvements, existing variable might not change, but new ones could appear;
- z might be incremented only when correcting problems and/or bugs (+n fix ⇒ +n - z might increment only when correcting problems and/or bugs (+n fix ⇒ +n to
to increment), variable should not change unless this is the only way to fix a increment), variable should not change unless this is the only way to fix a
problem. problem.
Unless only configuration files have been changed, any change in the code Unless only configuration files has changed, any change in the code implies an
implies an increment of a version number in the code **and** a git commit. increment of a version number in the code **and** a "git" commit.
```shell ```shell
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
# Description @template@ module # Description @template@ module
# Copyright (c) Year Your Name <your.mail@host.tld> # Copyright (c) Year Your Name <your.mail@host.tld>
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
# <Licence header compatible with BSD-3 licence, you want to use> # <License header compatible with BSD-3 license, you want to use>
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
# Variable list: # Variable list:
# * <VARNAME>: role explaination # * <VARNAME>: role explanation
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
# Module version # Module version
@@ -280,13 +279,13 @@ precheck_@template@()
: # Code : # Code
} }
# Optionnaly, cron mode code # Optionnally, cron mode code
cron_@template@() cron_@template@()
{ {
: # Code : # Code
} }
# Any public fonction have to be exported # Any public function have to be exported
export -f @template@ export -f @template@
export -f precheck_@template@ export -f precheck_@template@
@@ -294,17 +293,17 @@ export -f precheck_@template@
export -f cron_@template@ export -f cron_@template@
``` ```
Unexported template function will work but won't be available in the integrated Unexported template function will not work as any module execute in a sub-shell
debugging shell (see ```--shell``` option), so it's not encouraged. in order to protect ```init.sh``` script environment.
The optionnal ```cron_@template@``` function allows you to define code that will The optional ```cron_@template@``` function allows you to define code that will
be executed in cron mode. Check [cron documentation](./doc/cron.md) for more be executed in cron mode. Check [cron documentation](./doc/cron.md) for more
details. details.
## 4. 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 codes with explanation:
| Code | Meaning | | Code | Meaning |
|:----------|:------------------------------------------------------------| |:----------|:------------------------------------------------------------|
@@ -344,55 +343,56 @@ how to solve problems.
## 5. Contact and more information ## 5. Contact and more information
### 5.1. New users ### 5.1. New users
As this project is very new and as I have no idea of who will use it, if you do This project is very new in terms of publication, and I have no idea of who will
so, I'll be very happy if you simply mail me to let me know, especially if you use it, if any does. If you use (or plan to use) ```init.sh```, I'll be very
don't plan to contribute. happy if you simply mail me to let me know, especially if you don't plan to
contribute. If you plan to contribute, I'll be twice happier for sure!
### 5.2. Bugs ### 5.2. Bugs
**init.sh** have no bug tracker yet. For now, if you find a bug, please submit a **init.sh** have no bug tracker yet. For now, if you find a bug, please submit a
bug report to the maintenor mentionned at the end of that document. A bug report bug report to the maintainer mentioned at the end of that document. A bug report
may contain the command line parameters where the bug happens, OS details, may contain the command line parameters where the bug happens, OS details,
the module that trigger it if any, and the log file containing the error. the module that trigger it, if any, and the log file containing the error.
Please check the to do list before sending any report as the problem might Please check the to-do list before sending any report, as the problem might
already be known. already be known.
### 5.3. How to contribute? ### 5.3. How to contribute?
You are free to improve and contribute as you wish. If you have no idea what to You are free to improve and contribute as you wish. If you have no idea what to
do or want some direction, you can check the [to do list](./doc/todo.md), do or want some direction, you can check the [to-do list](./doc/todo.md),
containing desired future improvements. Make sure you always have the latest containing desired future improvements. Make sure you always have the latest
development version before starting your work. development version before starting your work.
It's heavily recommended to use git to obtain latest copy of init.sh tree. Make It's heavily recommended to use git to obtain the latest copy of init.sh tree.
sure your git is configured for contribution. Please contact me to obtain push Make sure your git configuration is correct in order to contribute. Please
authorisations, or, if you want to submit a patch, you can send it by mail to contact me to obtain push authorizations, or, if you want to submit a patch, you
the maintainor of init.sh. can send it by mail to the maintainer of init.sh.
You can improve anything you want, but keep in mind init.sh have to stay small 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 and simple. If your idea cannot be written using Bash scripting, maybe that
means you're going to far in the improvement. means you're going too far in the improvement.
Code written in Python or Perl might be accepted as long as it's not mobilizing Code written in Python or Perl might be accepted as long as it's not mobilizing
a lot of dependencies (forget big framework). Anything that need installing a lot of dependencies (forget big framework). Anything that need the
packages not provided in minimal Debian installation will be rejected. Anyway, installation of packages not provided in minimal Debian installation will be
core scripts will remain in Bash whatever the evolutions of ```init.sh``` will rejected in the libraries. For module, the KISS philosophy is the one promoted.
be. Anyway, core scripts will remain in Bash whatever the evolutions of
```init.sh``` will be.
If you want to make a financial contribution, please contact me by mail. If you want to make a financial contribution, please contact me by mail.
### 5.4. License, website and maintainor ### 5.4. License, website, and maintainer
Everything except configuration files is licensed under BSD-3 license. Please Everything except configuration files is licensed under BSD-3 license. Please
check license file allong this one. check license file allong this one.
Please check [https://www.geoffray-levasseur.org/init](https://www.geoffray-levasseur.org/init). Please check [https://www.geoffray-levasseur.org/init](https://www.geoffray-levasseur.org/init).
Please note that this website is still under construction and needs some more Note that this website is still under construction and needs some more care.
care.
You can mail author to fatalerrors \<at\> geoffray-levasseur \<dot\> org. You can mail author to fatalerrors \<at\> geoffray-levasseur \<dot\> org.
----------------------------------------------------------------------------- -----------------------------------------------------------------------------
Documentation (c) 2019-2021 Geoffray Levasseur. Documentation (c) 2019-2022 Geoffray Levasseur.
This file is distributed under3-clause BSD license. The complete license This file is distributed under3-clause BSD license. The complete license
agreement can be obtained at: https://opensource.org/licenses/BSD-3-Clause agreement can be obtained at: https://opensource.org/licenses/BSD-3-Clause

View File

@@ -1,2 +1,5 @@
# Very simple bash RC for interactive script debugging # Very simple bash RC for interactive script debugging
export HISTSIZE=5000
export HISTIGNORE="&:[bf]g:exit"
PS1='(init.sh) \u@\h:\w\$ ' PS1='(init.sh) \u@\h:\w\$ '

50
conf/apagado.conf.sh Normal file
View File

@@ -0,0 +1,50 @@
# Fichier de configuration principal
# ------------------------------------------------------------------------------
# -------------------- Importation de paramêtres globaux -----------------------
# ------------------------------------------------------------------------------
# Importe les paramètres pour le lan E-3S
. $MYPATH/conf/includes/e3s.conf.sh
# Importe la sélection de paquets par défaut
. $MYPATH/conf/includes/pkgsel.base.conf.sh
# Les paramètres précédemment importés sont surchargeable après cette ligne
# ------------------------------------------------------------------------------
# ------------------------------ General Section -------------------------------
# ------------------------------------------------------------------------------
# User of the machine (must exists)
MAINUSER=root
# Authentication: use LDAP+Kerberos ?
WITH_LDAP_KERB=no
# Network
IPV4_IFACES="ens192"
NET4_MODE_ens192="static"
NET4_IP_ens192="192.168.111.210/24"
NET4_GW_ens192="192.168.111.254"
NET4_NS_ens192="192.168.111.254"
NET4_NS_SEARCH_ens192=$REALM
IPV6_IFACES=""
# Mode d'installation :
# * dev : installe les paquets un par un avec apt (lent)
# * full : envoie d'un seul coup la liste de tous les paquets à apt (rapide)
INTALL_MODE=full
# Paquets additionnels
PKGSEL="$PKGSEL unbound"
# ------------------------------------------------------------------------------
# -------------------------- Section modules d'init ----------------------------
# ------------------------------------------------------------------------------
# Liste des modules à executer (surchargeable en ligne de commande)
MODULE_LIST="conf_ntp upgrade_dist authnz conf_locale conf_ssh \
install_pkg install_profile conf_network"

59
conf/croscat.conf.sh Normal file
View File

@@ -0,0 +1,59 @@
# Fichier de configuration principal
# ------------------------------------------------------------------------------
# -------------------- Importation de paramêtres globaux -----------------------
# ------------------------------------------------------------------------------
# Importe les paramètres geoffray-levasseur.org
. $MYPATH/conf/includes/tetalab.conf.sh
# Importe la sélection de paquets par défaut
. $MYPATH/conf/includes/pkgsel.base.conf.sh
# Les paramètres précédemment importés sont surchargeable après cette ligne
# ------------------------------------------------------------------------------
# ------------------------------ General Section -------------------------------
# ------------------------------------------------------------------------------
# User of the machine (must exists)
MAINUSER=root
# Authentication: use LDAP+Kerberos ?
WITH_LDAP_KERB=no
# Users to create, add or remove
REMOVE_USERS=fatal
# Network
IPV4_IFACES="eth0"
NET4_MODE_eth0="static"
NET4_IP_eth0="192.168.107.50/24"
NET4_GW_eth0="192.168.107.1"
NET4_NS_eth0="192.168.107.10"
NET4_NS_SEARCH_eth0=$REALM
IPV6_IFACES="eth0"
NET6_MODE_eth0="static"
NET6_IP_eth0="2a03:7220:8085:6b01::32/64"
NET6_GW_eth0="2a03:7220:8085:6b01::1"
NET6_NS_eth0="2a03:7220:8085:6b01::a"
NET6_NS_SEARCH_eth0=$REALM
# Mode d'installation :
# * dev : installe les paquets un par un avec apt (lent)
# * full : envoie d'un seul coup la liste de tous les paquets à apt (rapide)
INTALL_MODE=full
# Paquets additionnels
PKGSEL="$PKGSEL nfs-common munin apache2"
# ------------------------------------------------------------------------------
# -------------------------- Section modules d'init ----------------------------
# ------------------------------------------------------------------------------
# Liste des modules à executer (surchargeable en ligne de commande)
MODULE_LIST="conf_ntp upgrade_dist authnz conf_locale conf_ssh \
install_pkg install_profile patch_snmp conf_network"

View File

@@ -4,41 +4,44 @@ export CONF_DISK="sdc sdd"
export DISK_PART_sdc="512M 1G 0" export DISK_PART_sdc="512M 1G 0"
export DISK_TYPE_sdc1="raid" export DISK_TYPE_sdc1="raid"
export DISK_TYPE_sdc2="ext4" export DISK_TYPE_sdc2="ext4"
export DISK_MP_sdc2="/somewhere/here" export DISK_MOUNTPOINT_sdc2="/somewhere/here"
export DISK_TYPE_sdc3="raid" export DISK_TYPE_sdc3="raid"
export DISK_PART_sdd=$DISK_PART_sdc export DISK_PART_sdd=$DISK_PART_sdc
export DISK_TYPE_sdd1=$DISK_TYPE_sdc1 export DISK_TYPE_sdd1=$DISK_TYPE_sdc1
export DISK_TYPE_sdd2=$DISK_TYPE_sdc2 export DISK_TYPE_sdd2=$DISK_TYPE_sdc2
export DISK_MD_sdd2="/somewhere/else" export DISK_MOUNTPOINT_sdd2="/somewhere/else"
export DISK_TYPE_sdd3=$DISK_TYPE_sdc3 export DISK_TYPE_sdd3=$DISK_TYPE_sdc3
# RAID exemple # RAID exemple
export CONF_RAID="md0 md1" export CONF_RAID="md0 md1"
export RAID_DISKS_md0="sdc0 sdd0" export RAID_DISKS_md0="sdc0 sdd0"
# equivalent to raid1, could be raid0, raid10, raid5, raid6, maybe more:
export RAID_TYPE_md0="mirror"
export RAID_FORMAT_md0="ext4" export RAID_FORMAT_md0="ext4"
export RAID_MP_md0="/raid/is" export RAID_MOUNTPOINT_md0="/raid/is"
export RAID_DISKS_md1="sdc2 sdd2" export RAID_DISKS_md1="sdc2 sdd2"
export RAID_TYPE_md1="mirror"
export RAID_FORMAT_md1="xfs" export RAID_FORMAT_md1="xfs"
export RAID_MP_md1="/raid/other" export RAID_MP_md1="/raid/other"
# ZFS exemple # ZFS exemple
export ZPOOL_LIST="calcul local" export ZPOOL_LIST="calcul local"
export ZPOOL_OPTIONS_calcul="mirror" export ZPOOL_TYPE_calcul="mirror"
export ZPOOL_MP_calcul="/local" export ZPOOL_MOUNTPOINT_calcul="/local"
export ZPOOL_DRV_calcul="sdc sdd" export ZPOOL_DISKS_calcul="sdc sdd"
export ZPOOL_FS_calcul="vm debian data" export ZPOOL_FS_calcul="vm debian data"
export ZPOOL_MP_calcul_vm="/local/vm" # We could avoid that declaration export ZPOOL_MOUNTPOUNT_calcul_vm="/local/vm" # We could avoid that declaration
export ZPOOL_MP_calcul_debian="/usr/local" export ZPOOL_MOUNTPOINT_calcul_debian="/usr/local"
export ZPOOL_MP_calcul_data="/data" export ZPOOL_MOUNTPOINT_calcul_data="/data"
export ZPOOL_OPTIONS_local="raidz1" export ZPOOL_OPTIONS_local="raidz1"
export ZPOOL_MP_local="/share" export ZPOOL_MOUNTPOINT_local="/share"
export ZPOOL_DRV_local="sdc sdd sde" export ZPOOL_DISKS_local="sdc sdd sde"
export ZPOOL_FS_local="video music books" export ZPOOL_FS_local="video music books"
#export ZPOOL_MP_local_video="/share/video" # Uneeded as it's ZFS default behavour #export ZPOOL_MOUNTPOINT_local_video="/share/video" # Uneeded as it's ZFS default behavour
#export ZPOOL_MP_local_music="/share/music" #export ZPOOL_MOUNTPOINT_local_music="/share/music"
#export ZPOOL_MP_local_books="/share/books" #export ZPOOL_MOUNTPOINT_local_books="/share/books"

59
conf/etna.conf.sh Normal file
View File

@@ -0,0 +1,59 @@
# Fichier de configuration principal
# ------------------------------------------------------------------------------
# -------------------- Importation de paramêtres globaux -----------------------
# ------------------------------------------------------------------------------
# Importe les paramètres geoffray-levasseur.org
. $MYPATH/conf/includes/tetalab.conf.sh
# Importe la sélection de paquets par défaut
. $MYPATH/conf/includes/pkgsel.base.conf.sh
# Les paramètres précédemment importés sont surchargeable après cette ligne
# ------------------------------------------------------------------------------
# ------------------------------ General Section -------------------------------
# ------------------------------------------------------------------------------
# User of the machine (must exists)
MAINUSER=root
# Authentication: use LDAP+Kerberos ?
WITH_LDAP_KERB=no
# Users to create, add or remove
REMOVE_USERS=fatal
# Network
IPV4_IFACES="eth0"
NET4_MODE_eth0="static"
NET4_IP_eth0="10.0.254.10/24"
NET4_GW_eth0="10.0.254.254"
NET4_NS_eth0="10.0.254.250"
NET4_NS_SEARCH_eth0=$REALM
#IPV6_IFACES="eth0"
NET6_MODE_eth0="static"
NET6_IP_eth0="2a03:7220:8085:6b01::a/64"
NET6_GW_eth0="2a03:7220:8085:6b01::1"
NET6_NS_eth0="2a03:7220:8085:6b01::a"
NET6_NS_SEARCH_eth0=$REALM
# Mode d'installation :
# * dev : installe les paquets un par un avec apt (lent)
# * full : envoie d'un seul coup la liste de tous les paquets à apt (rapide)
INTALL_MODE=full
# Paquets additionnels
PKGSEL="$PKGSEL iptables fail2ban curl nfs-common"
# ------------------------------------------------------------------------------
# -------------------------- Section modules d'init ----------------------------
# ------------------------------------------------------------------------------
# Liste des modules à executer (surchargeable en ligne de commande)
MODULE_LIST="conf_ntp upgrade_dist authnz conf_locale conf_ssh \
install_pkg install_profile patch_snmp conf_network"

22
conf/includes/e3s.conf.sh Normal file
View File

@@ -0,0 +1,22 @@
# Domaine geoffray-levasseur.org
export REALM="e-3s.lan"
# Proxy apt-cacher-ng
#export PROXY_APT="balut.$REALM"
#export PROXY_APT_PORT="3142"
# Available languanges and system language
export LOCALESET="en_US.UTF-8 fr_FR.UTF-8"
export SYSLOCALE="fr_FR.UTF-8"
# Default Shell, for new users
export DEFAULT_SHELL="/bin/bash"
# User created by installer, unneeded
export REMOVE_USERS="geoffray"
# NTP server list
export NTP_SERVERS="cloud.e-3s.lan"
# SSH
export SSHD_PERMITROOT_RANGE="192.168.111.0/24"

View File

@@ -37,7 +37,7 @@ export MK_URL="https://nagios.geoffray-levasseur.org/check_mk/check_mk/agents/ch
export MK_SERVER_IP="192.168.1.201" export MK_SERVER_IP="192.168.1.201"
# Samba # Samba
export SMBSRV="silay" export SMBSRV="silay.$REALM"
# Syslog # Syslog
export SYSLOG_SRV="biliran.$REALM" export SYSLOG_SRV="biliran.$REALM"

View File

@@ -15,8 +15,12 @@ export SYSLOCALE="fr_FR.UTF-8"
export DEFAULT_SHELL="/bin/bash" export DEFAULT_SHELL="/bin/bash"
# Configuration du disque de calcul : zfs, ext4 et xfs accepté # Configuration du disque de calcul : zfs, ext4 et xfs accepté
export CALCTYPE="zfs" # se conformer à la réécriture en cours
export CALCMOUNTPOINT="/calcul/$HOSTNAME" #export CALCTYPE="zfs"
#export CALCMOUNTPOINT="/calcul/$HOSTNAME"
# SSH
export SSHD_PERMITROOT_RANGE="10.3.0.0/16"
# Liste des serveurs NTP # Liste des serveurs NTP
export NTP_SERVERS="ntp1.$REALM ntp2.$REALM" export NTP_SERVERS="ntp1.$REALM ntp2.$REALM"

View File

@@ -0,0 +1,19 @@
# Genral use variables
# Domaine Mixart Myrys
export REALM="tetalab.local"
# Conf_ntp variables
export NTP_SERVERS="ntp1.$REALM"
# Upgrade_dist variables
#export PROXYAPT="acng.$REALM"
#export PROXYAPTPORT="3142"
# Authnz variables
export DEFAULT_SHELL="/bin/bash"
# Conf_locales viriables
export LOCALESET="en_US.UTF-8 fr_FR.UTF-8"
export SYSLOCALE="fr_FR.UTF-8"
export SSHD_PERMITROOT_RANGE="192.168.107.0/24"

59
conf/ischia.conf.sh Normal file
View File

@@ -0,0 +1,59 @@
# Fichier de configuration principal
# ------------------------------------------------------------------------------
# -------------------- Importation de paramêtres globaux -----------------------
# ------------------------------------------------------------------------------
# Importe les paramètres geoffray-levasseur.org
. $MYPATH/conf/includes/tetalab.conf.sh
# Importe la sélection de paquets par défaut
. $MYPATH/conf/includes/pkgsel.base.conf.sh
# Les paramètres précédemment importés sont surchargeable après cette ligne
# ------------------------------------------------------------------------------
# ------------------------------ General Section -------------------------------
# ------------------------------------------------------------------------------
# User of the machine (must exists)
MAINUSER=root
# Authentication: use LDAP+Kerberos ?
WITH_LDAP_KERB=no
# Users to create, add or remove
REMOVE_USERS=fatal
# Network
IPV4_IFACES="eth0"
NET4_MODE_eth0="static"
NET4_IP_eth0="192.168.107.25/24"
NET4_GW_eth0="192.168.107.1"
NET4_NS_eth0="192.168.107.10"
NET4_NS_SEARCH_eth0=$REALM
IPV6_IFACES="eth0"
NET6_MODE_eth0="static"
NET6_IP_eth0="2a03:7220:8085:6b01::19/64"
NET6_GW_eth0="2a03:7220:8085:6b01::1"
NET6_NS_eth0="2a03:7220:8085:6b01::a"
NET6_NS_SEARCH_eth0=$REALM
# Mode d'installation :
# * dev : installe les paquets un par un avec apt (lent)
# * full : envoie d'un seul coup la liste de tous les paquets à apt (rapide)
INTALL_MODE=full
# Paquets additionnels
PKGSEL="$PKGSEL nfs-kernel-server"
# ------------------------------------------------------------------------------
# -------------------------- Section modules d'init ----------------------------
# ------------------------------------------------------------------------------
# Liste des modules à executer (surchargeable en ligne de commande)
MODULE_LIST="conf_ntp upgrade_dist authnz conf_locale conf_ssh \
install_pkg install_profile patch_snmp conf_network"

64
conf/kanaga.conf.sh Normal file
View File

@@ -0,0 +1,64 @@
# Fichier de configuration principal
# ------------------------------------------------------------------------------
# -------------------- Importation de paramêtres globaux -----------------------
# ------------------------------------------------------------------------------
# Importe les paramètres mixart-myrys.org
. $MYPATH/conf/includes/mam.conf.sh
# Importe la sélection de paquets par défaut
. $MYPATH/conf/includes/pkgsel.base.conf.sh
# Les paramètres précédemment importés sont surchargeable après cette ligne
# ------------------------------------------------------------------------------
# ------------------------------ General Section -------------------------------
# ------------------------------------------------------------------------------
# User of the machine (must exists)
MAINUSER=root
# Authentication: use LDAP+Kerberos ?
WITH_LDAP_KERB=no
# Users to create, add or remove
#LOCAL_USERS="$MAINUSER"
#REMOTE_USERS="kroot"
REMOVE_USERS=fatal
# Network
IPV4_IFACES="eth0 eth1"
NET4_MODE_eth0="static"
NET4_IP_eth0="10.0.254.50/16"
NET4_MODE_eth1="static"
NET4_IP_eth1="10.0.254.50/24"
NET4_GW_eth1="10.0.254.254"
NET4_NS_eth1="10.0.254.250 10.0.254.251"
NET4_NS_SEARCH_eth1=$REALM
IPV6_IFACES="eth1"
NET6_MODE_eth1="static"
NET6_IP_eth1="2a03:7220:8081:2ff::32/64"
NET6_GW_eth1="2a03:7220:8081:2ff::fd"
NET6_NS_eth1="2a03:7220:8081:2ff::fa 2a03:7220:8081:2ff::fb"
NET6_NS_SEARCH_eth1=$REALM
# Mode d'installation :
# * dev : installe les paquets un par un avec apt (lent)
# * full : envoie d'un seul coup la liste de tous les paquets à apt (rapide)
INTALL_MODE=full
# Paquets additionnels
PKGSEL="$PKGSEL python-virtualenv python-pip"
# ------------------------------------------------------------------------------
# -------------------------- Section modules d'init ----------------------------
# ------------------------------------------------------------------------------
# Liste des modules à executer (surchargeable en ligne de commande)
MODULE_LIST="conf_ntp upgrade_dist conf_ceph authnz conf_locale conf_ssh \
install_pkg install_profile patch_snmp install_mkagent conf_syslog conf_network"

44
conf/kos.conf.sh Normal file
View File

@@ -0,0 +1,44 @@
# Fichier de configuration principal
# ------------------------------------------------------------------------------
# -------------------- Importation de paramêtres globaux -----------------------
# ------------------------------------------------------------------------------
# Importe les paramètres geoffray-levasseur.org
. $MYPATH/conf/includes/tetalab.conf.sh
# Importe la sélection de paquets par défaut
. $MYPATH/conf/includes/pkgsel.base.conf.sh
# Les paramètres précédemment importés sont surchargeable après cette ligne
# ------------------------------------------------------------------------------
# ------------------------------ General Section -------------------------------
# ------------------------------------------------------------------------------
# User of the machine (must exists)
MAINUSER=root
# Authentication: use LDAP+Kerberos ?
WITH_LDAP_KERB=no
# Users to create, add or remove
REMOVE_USERS=fatal
# Mode d'installation :
# * dev : installe les paquets un par un avec apt (lent)
# * full : envoie d'un seul coup la liste de tous les paquets à apt (rapide)
INTALL_MODE=full
# Paquets additionnels
PKGSEL="$PKGSEL nfs-kernel-server tftp-hpa-server isc-dhcp-server"
PKGS_RMLIST=""
PKGS_BLACKLIST=""
# ------------------------------------------------------------------------------
# -------------------------- Section modules d'init ----------------------------
# ------------------------------------------------------------------------------
# Liste des modules à executer (surchargeable en ligne de commande)
MODULE_LIST="conf_ntp upgrade_dist authnz conf_locale conf_ssh \
install_pkg install_profile"

View File

@@ -31,21 +31,21 @@ WITH_LDAP_KERB=no
REMOVE_USERS=fatal REMOVE_USERS=fatal
# Network # Network
IPV4_IFACES="eth0 eth1" IPV4_IFACES="eth0"
NET4_MODE_eth0="static" NET4_MODE_eth0="static"
NET4_IP_eth0="192.168.1./24" NET4_IP_eth0="192.168.1.241/24"
NET4_GW_eth0="192.168.1.230" NET4_GW_eth0="192.168.1.230"
NET4_NS_eth0="192.168.1.205 192.168.1.206" NET4_NS_eth0="192.168.1.205 192.168.1.206"
NET4_NS_SEARCH_eth0=$REALM NET4_NS_SEARCH_eth0=$REALM
NET4_MODE_eth1="static" NET4_MODE_eth1="static"
NET4_IP_eth1="10.0.254./16" NET4_IP_eth1="10.0.254.241/16"
IPV6_IFACES="eth0" IPV6_IFACES="eth0"
NET6_MODE_eth0="static" NET6_MODE_eth0="static"
NET6_IP_eth0="2a03:7220:8081:b301::/64" NET6_IP_eth0="2a03:7220:8081:b301::f1/64"
NET6_GW_eth0="2a03:7220:8081:b301::e6" NET6_GW_eth0="2a03:7220:8081:b301::e6"
NET6_NS_eth0="2a03:7220:8081:b301::cd 2a03:7220:8081:b301::ce" NET6_NS_eth0="2a03:7220:8081:b301::cd 2a03:7220:8081:b301::ce"
NET6_NS_SEARCH_eth0=$REALM NET6_NS_SEARCH_eth0=$REALM
@@ -56,7 +56,7 @@ NET6_NS_SEARCH_eth0=$REALM
INTALL_MODE=full INTALL_MODE=full
# Paquets additionnels # Paquets additionnels
PKGSEL="$PKGSEL iptables fail2ban curl" PKGSEL="$PKGSEL cups printer-driver-hpcups printer-driver-postscript-hp hplip avahi-daemon printer-driver-gutenprint cups-browsed policykit-1"
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
# -------------------------- Section modules d'init ---------------------------- # -------------------------- Section modules d'init ----------------------------

59
conf/milos.conf.sh Normal file
View File

@@ -0,0 +1,59 @@
# Fichier de configuration principal
# ------------------------------------------------------------------------------
# -------------------- Importation de paramêtres globaux -----------------------
# ------------------------------------------------------------------------------
# Importe les paramètres geoffray-levasseur.org
. $MYPATH/conf/includes/tetalab.conf.sh
# Importe la sélection de paquets par défaut
. $MYPATH/conf/includes/pkgsel.base_ttl.conf.sh
# Les paramètres précédemment importés sont surchargeable après cette ligne
# ------------------------------------------------------------------------------
# ------------------------------ General Section -------------------------------
# ------------------------------------------------------------------------------
# User of the machine (must exists)
MAINUSER=root
# Authentication: use LDAP+Kerberos ?
WITH_LDAP_KERB=no
# Users to create, add or remove
REMOVE_USERS=fatal
# Network
IPV4_IFACES="eth0"
NET4_MODE_eth0="static"
NET4_IP_eth0="192.168.107.20/24"
NET4_GW_eth0="192.168.107.1"
NET4_NS_eth0="192.168.107.10"
NET4_NS_SEARCH_eth0=$REALM
IPV6_IFACES="eth0"
NET6_MODE_eth0="static"
NET6_IP_eth0="2a03:7220:8085:6b01::14/64"
NET6_GW_eth0="2a03:7220:8085:6b01::1"
NET6_NS_eth0="2a03:7220:8085:6b01::a"
NET6_NS_SEARCH_eth0=$REALM
# Mode d'installation :
# * dev : installe les paquets un par un avec apt (lent)
# * full : envoie d'un seul coup la liste de tous les paquets à apt (rapide)
INTALL_MODE=full
# Paquets additionnels
PKGSEL="$PKGSEL nfs-kernel-server tftp-hpa-server isc-dhcp-server"
# ------------------------------------------------------------------------------
# -------------------------- Section modules d'init ----------------------------
# ------------------------------------------------------------------------------
# Liste des modules à executer (surchargeable en ligne de commande)
MODULE_LIST="conf_ntp upgrade_dist authnz conf_locale conf_ssh \
install_pkg install_profile patch_snmp conf_network"

59
conf/santorini.conf.sh Normal file
View File

@@ -0,0 +1,59 @@
# Fichier de configuration principal
# ------------------------------------------------------------------------------
# -------------------- Importation de paramêtres globaux -----------------------
# ------------------------------------------------------------------------------
# Importe les paramètres geoffray-levasseur.org
. $MYPATH/conf/includes/tetalab.conf.sh
# Importe la sélection de paquets par défaut
. $MYPATH/conf/includes/pkgsel.base_ttl.conf.sh
# Les paramètres précédemment importés sont surchargeable après cette ligne
# ------------------------------------------------------------------------------
# ------------------------------ General Section -------------------------------
# ------------------------------------------------------------------------------
# User of the machine (must exists)
MAINUSER=root
# Authentication: use LDAP+Kerberos ?
WITH_LDAP_KERB=no
# Users to create, add or remove
REMOVE_USERS=fatal
# Network
IPV4_IFACES="eth0"
NET4_MODE_eth0="static"
NET4_IP_eth0="192.168.107.20/24"
NET4_GW_eth0="192.168.107.1"
NET4_NS_eth0="192.168.107.10"
NET4_NS_SEARCH_eth0=$REALM
IPV6_IFACES="eth0"
NET6_MODE_eth0="static"
NET6_IP_eth0="2a03:7220:8085:6b01::14/64"
NET6_GW_eth0="2a03:7220:8085:6b01::1"
NET6_NS_eth0="2a03:7220:8085:6b01::a"
NET6_NS_SEARCH_eth0=$REALM
# Mode d'installation :
# * dev : installe les paquets un par un avec apt (lent)
# * full : envoie d'un seul coup la liste de tous les paquets à apt (rapide)
INTALL_MODE=full
# Paquets additionnels
PKGSEL="$PKGSEL nfs-kernel-server tftp-hpa-server isc-dhcp-server"
# ------------------------------------------------------------------------------
# -------------------------- Section modules d'init ----------------------------
# ------------------------------------------------------------------------------
# Liste des modules à executer (surchargeable en ligne de commande)
MODULE_LIST="conf_ntp upgrade_dist authnz conf_locale conf_ssh \
install_pkg install_profile patch_snmp conf_network"

50
conf/sokol.conf.sh Normal file
View File

@@ -0,0 +1,50 @@
# Fichier de configuration principal
# ------------------------------------------------------------------------------
# -------------------- Importation de paramêtres globaux -----------------------
# ------------------------------------------------------------------------------
# Importe les paramètres pour le lan E-3S
. $MYPATH/conf/includes/e3s.conf.sh
# Importe la sélection de paquets par défaut
. $MYPATH/conf/includes/pkgsel.base.conf.sh
# Les paramètres précédemment importés sont surchargeable après cette ligne
# ------------------------------------------------------------------------------
# ------------------------------ General Section -------------------------------
# ------------------------------------------------------------------------------
# User of the machine (must exists)
MAINUSER=root
# Authentication: use LDAP+Kerberos ?
WITH_LDAP_KERB=no
# Network
IPV4_IFACES="ens192"
NET4_MODE_ens192="static"
NET4_IP_ens192="192.168.111.211/24"
NET4_GW_ens192="192.168.111.254"
NET4_NS_ens192="192.168.111.254"
NET4_NS_SEARCH_ens192=$REALM
IPV6_IFACES=""
# Mode d'installation :
# * dev : installe les paquets un par un avec apt (lent)
# * full : envoie d'un seul coup la liste de tous les paquets à apt (rapide)
INTALL_MODE=full
# Paquets additionnels
PKGSEL="$PKGSEL unbound"
# ------------------------------------------------------------------------------
# -------------------------- Section modules d'init ----------------------------
# ------------------------------------------------------------------------------
# Liste des modules à executer (surchargeable en ligne de commande)
MODULE_LIST="conf_ntp upgrade_dist authnz conf_locale conf_ssh \
install_pkg install_profile conf_network"

59
conf/stromboli.conf.sh Normal file
View File

@@ -0,0 +1,59 @@
# Fichier de configuration principal
# ------------------------------------------------------------------------------
# -------------------- Importation de paramêtres globaux -----------------------
# ------------------------------------------------------------------------------
# Importe les paramètres geoffray-levasseur.org
. $MYPATH/conf/includes/tetalab.conf.sh
# Importe la sélection de paquets par défaut
. $MYPATH/conf/includes/pkgsel.base.conf.sh
# Les paramètres précédemment importés sont surchargeable après cette ligne
# ------------------------------------------------------------------------------
# ------------------------------ General Section -------------------------------
# ------------------------------------------------------------------------------
# User of the machine (must exists)
MAINUSER=root
# Authentication: use LDAP+Kerberos ?
WITH_LDAP_KERB=no
# Users to create, add or remove
REMOVE_USERS=fatal
# Network
IPV4_IFACES="ens18"
NET4_MODE_ens18="static"
NET4_IP_ens18="192.168.107.40/24"
NET4_GW_ens18="192.168.107.1"
NET4_NS_ens18="192.168.107.10"
NET4_NS_SEARCH_ens18=$REALM
IPV6_IFACES="ens18"
NET6_MODE_ens18="static"
NET6_IP_ens18="2a03:7220:8085:6b01::28/64"
NET6_GW_ens18="2a03:7220:8085:6b01::1"
NET6_NS_ens18="2a03:7220:8085:6b01::a"
NET6_NS_SEARCH_ens18=$REALM
# Mode d'installation :
# * dev : installe les paquets un par un avec apt (lent)
# * full : envoie d'un seul coup la liste de tous les paquets à apt (rapide)
INTALL_MODE=full
# Paquets additionnels
PKGSEL="$PKGSEL munin-node"
# ------------------------------------------------------------------------------
# -------------------------- Section modules d'init ----------------------------
# ------------------------------------------------------------------------------
# Liste des modules à executer (surchargeable en ligne de commande)
MODULE_LIST="conf_ntp upgrade_dist authnz conf_locale conf_ssh \
install_pkg install_profile patch_snmp conf_network"

59
conf/vesuvius.conf.sh Normal file
View File

@@ -0,0 +1,59 @@
# Fichier de configuration principal
# ------------------------------------------------------------------------------
# -------------------- Importation de paramêtres globaux -----------------------
# ------------------------------------------------------------------------------
# Importe les paramètres geoffray-levasseur.org
. $MYPATH/conf/includes/tetalab.conf.sh
# Importe la sélection de paquets par défaut
. $MYPATH/conf/includes/pkgsel.base.conf.sh
# Les paramètres précédemment importés sont surchargeable après cette ligne
# ------------------------------------------------------------------------------
# ------------------------------ General Section -------------------------------
# ------------------------------------------------------------------------------
# User of the machine (must exists)
MAINUSER=root
# Authentication: use LDAP+Kerberos ?
WITH_LDAP_KERB=no
# Users to create, add or remove
REMOVE_USERS=fatal
# Network
IPV4_IFACES="eth0"
NET4_MODE_eth0="static"
NET4_IP_eth0="192.168.107.30/24"
NET4_GW_eth0="192.168.107.1"
NET4_NS_eth0="192.168.107.10"
NET4_NS_SEARCH_eth0=$REALM
IPV6_IFACES="eth0"
NET6_MODE_eth0="static"
NET6_IP_eth0="2a03:7220:8085:6b01::1e/64"
NET6_GW_eth0="2a03:7220:8085:6b01::1"
NET6_NS_eth0="2a03:7220:8085:6b01::a"
NET6_NS_SEARCH_eth0=$REALM
# Mode d'installation :
# * dev : installe les paquets un par un avec apt (lent)
# * full : envoie d'un seul coup la liste de tous les paquets à apt (rapide)
INTALL_MODE=full
# Paquets additionnels
PKGSEL="$PKGSEL cups hplip printer-driver-gutenprint avahi-daemon"
# ------------------------------------------------------------------------------
# -------------------------- Section modules d'init ----------------------------
# ------------------------------------------------------------------------------
# Liste des modules à executer (surchargeable en ligne de commande)
MODULE_LIST="conf_ntp upgrade_dist authnz conf_locale conf_ssh \
install_pkg install_profile patch_snmp conf_network"

71
conf/vm-levasseur.conf.sh Normal file
View File

@@ -0,0 +1,71 @@
# Fichier de configuration principal
# ------------------------------------------------------------------------------
# -------------------- Importation de paramêtres globaux -----------------------
# ------------------------------------------------------------------------------
# Importe les paramètres spécifiques LEGOS
. $MYPATH/conf/includes/legos.conf.sh
# Importe la sélection de paquets par défaut
. $MYPATH/conf/includes/pkgsel.full.conf.sh
# Les paramètres précédemment importés sont surchargeable après cette ligne
# ------------------------------------------------------------------------------
# ----------------------------- Section générale -------------------------------
# ------------------------------------------------------------------------------
# Utilisateur de la machine (doit exister)
MAINUSER=levasseur
# Pilotes X11 non libre à installer ?
X11_DRV="nvidia-driver-470"
# Authentification: utiliser LDAP+Kerberos ?
WITH_LDAP_KERB=no
# Utilisateurs à créer ou ajouter
LOCAL_USERS="$MAINUSER"
#REMOTE_USERS="kroot"
# Indique la déclinaison d'Ubuntu à installer
# * xubuntu : bureau XFCE léger (par défaut)
# * ubuntu : bureau Gnome lourd, très peu configurable
# * kubuntu : bureau KDE lourd, très configurable
# * ubuntu-mate : bureau Mate intermédiaire légèrement configurable
# * lubuntu : bureau LXQT très léger
UBUNTU_FLAVOR=
# Booléen indiquant une ou plusieurs futures VM
# Les lignes suivantes devraient être commentés si à false
#WITH_VM=yes
#. $MYPATH/conf/includes/legos_vm_win7.conf.sh
# Nom de la VM
#VM_NAME=vm-levasseur
# Logiciels optionnels non packagé Debian
# export WITH_MATLAB="true"
# export WITH_IDL="true"
# export WITH_="true"
# Mode d'installation :
# * dev : installe les paquets un par un avec apt (lent)
# * full : envoie d'un seul coup la liste de tous les paquets à apt (rapide)
INTALL_MODE=full
# ------------------------------------------------------------------------------
# ------------------------- Section disque de calcul ---------------------------
# ------------------------------------------------------------------------------
# À réécrire avec le nouveau mode de fonctionnement
# ------------------------------------------------------------------------------
# -------------------------- Section modules d'init ----------------------------
# ------------------------------------------------------------------------------
# Liste des modules à executer (surchargeable en ligne de commande)
MODULE_LIST="upgrade_dist authnz conf_locale conf_ssh \
install_desktop install_pkg install_chromium \
install_profile select_system_proxy"

View File

@@ -87,7 +87,9 @@
- [13.1.1. ```get_os_version```](#1311-get_os_version) - [13.1.1. ```get_os_version```](#1311-get_os_version)
- [13.1.2. ```set_sys_var <arch> <dist> <version> <codename>```](#1312-set_sys_var-arch-dist-version-codename) - [13.1.2. ```set_sys_var <arch> <dist> <version> <codename>```](#1312-set_sys_var-arch-dist-version-codename)
- [13.2. Other functionnalities](#132-other-functionnalities) - [13.2. Other functionnalities](#132-other-functionnalities)
- [14. Writing conventions](#14-writing-conventions) - [14. Global variables](#14-global-variables)
- [15. Writing conventions](#15-writing-conventions)
## 1. Getting started ## 1. Getting started
This is a developer's reference. It's not intended to be a manual, but a This is a developer's reference. It's not intended to be a manual, but a
reference for all internal functions, so you can easily build your own modules. reference for all internal functions, so you can easily build your own modules.
@@ -95,16 +97,19 @@ This supposes you already read the [README file](../README.md). Creating modules
will also require some good knowledge of Bash programming. will also require some good knowledge of Bash programming.
Writing conventions are the classical ones: Writing conventions are the classical ones:
* ```<param>```: writen like this, the parameter is mandatory * ```<param>```: written like this, the parameter is mandatory
* ```[param]```: that parameter is optionnal * ```[param]```: that parameter is optional
* ```[ab|cd]```: optionnal parmeter have to be "ab" or "cd" * ```[ab|cd]```: optional parameter have to be "ab" or "cd"
* ```[0..15,20]```: acceptable values start at 0 and goes up to 15 or be 20. * ```[0..15,20]```: acceptable values start at 0 and goes up to 15 or be 20.
Boolean values have to be set as ```true``` or ```false``` for test to succeed.
Any unset boolean is always interpreted as ```false```.
## 2. The aaa_error.sh file ## 2. The aaa_error.sh file
### 2.1. Functions ### 2.1. Functions
#### 2.1.1. ```check_root``` #### 2.1.1. ```check_root```
Check if user is root. If the user is not root, script execution is interrupted Check if user is root. If the user is not root, script execution interrupts and
and exit with error. exit with error.
This function has no parameter. This function has no parameter.
@@ -154,30 +159,30 @@ through the use of a *kill* command. The script will exit after cleanup.
#### 3.1.1. ```chroot_bootstrap``` #### 3.1.1. ```chroot_bootstrap```
That function is called if a chroot option have been given. It's in charge of That function is called if a chroot option have been given. It's in charge of
performing the chroot, copying a full working directory structure of init.sh performing the chroot, copying a full working directory structure of init.sh
tree. After that copy, a chroot command is runned launching that new copy of tree. After that copy, a chroot command is run, launching that new copy of
init.sh. init.sh.
If the child init.sh end with error, the stage file is gathered in parent If the child init.sh end with error, the stage file is gathered in parent
directory tree to allow launching again the chrooted init.sh with the resume directory tree to allow launching again the chrooted init.sh with the resume
option. option.
At the end the function will clean up removing the second copy of init.sh. At the end, the function will clean up, removing the second copy of init.sh.
### 3.2. Other functionnalities ### 3.2. Other functionnalities
So far, only one function is provided in this file. So far, only one function is provided in this file.
## 4. The diskman.sh file ## 4. The diskman.sh file
### 4.1. Global warning ### 4.1. Warning about that unit
The goal of that unit is to provide disk manipulation function, like The goal of that unit is to provide disks manipulation function, like
partitionning, blanking or formative. All those functions are potentially very partitioning, blanking or format. All those functions are potentially very
destructive. Please use with extra care and do not hesitate to highly protect destructive. Please use with extra care and do not hesitate to highly protect
your code when using those. By defaults the functions try to be as conservative your code when using those. By defaults, the functions try to be as conservative
as they can, triguering errors on the smallest doubt. as they can, triggering errors on the smallest doubt.
### 4.2. Function ### 4.2. Function
#### 4.2.1. ```blank_disk <bloc_device> [--full]``` #### 4.2.1. ```blank_disk <bloc_device> [--full]```
Blank a block device using two different method to be sure it's all clear. First Blank a block device using two different method to be sure it's all clear. First
we use the *wipefs* method specialized in reseting all possible flags on the we use the *wipefs* method, specialized in resetting all possible flags on the
drive and it's partitions. It will also blank the partition table. A second pass drive and it's partitions. It will also blank the partition table. A second pass
will fill the first 512 MB with zeroes to also blank MBR and other parts of the will fill the first 512 MB with zeroes to also blank MBR and other parts of the
drive wipefs would have ignored. drive wipefs would have ignored.
@@ -186,61 +191,61 @@ If the parameter ```--full``` is provided as second parameter, the entire disk
will be filled with zeroes. Please consider that such operation might take a will be filled with zeroes. Please consider that such operation might take a
very long time (can be several hours). very long time (can be several hours).
That function only take parameter which must be a bloc device. That function only take parameter which must be a block device.
#### 4.2.2. ```is_blank <bloc_device>``` #### 4.2.2. ```is_blank <bloc_device>```
That function will try to detect if a drive is blank of not. It will return 0 if That function will try to detect if a drive is blank or not. It will return 0 if
the drive is blank, and return 1 otherwise. If the function return 2, either the the drive is blank, and return 1 otherwise. If the function return 2, either the
provided parameter is not a block device or that block device do not exists. provided parameter is not a block device or that block device do not exist.
Please consider that special drive configuration could be detected as blank Please consider that special drive configuration could be detected as blank
while it's not. Only one parameter will be accepted, a bloc device. while it's not. Only one parameter will be accepted, a block device.
The function will give different information depending on the bloc device you The function will give different information depending on the block device you
test: test:
- on a whole disk drive it while return 0 if the drive is blank, meaning no MBR - On a whole disk drive, it while return 0 if the drive is blank, meaning no
and no partition table (either GTP or DOS); MBR and no partition table (either GTP or DOS);
- on a partition it will tell if it's formated or not. Beware that an erased - On a partition, it will tell if that partition is formatted or not. Beware
then recreated partion will continue to have old partition data available and that an erased then recreated partition will continue to have old data
will be shown as non blank. available and will be shown as non-blank.
#### 4.2.3. ```mkparts <disk> [dos|gpt] [size_part1 [... size_partN]]``` #### 4.2.3. ```mkparts <disk> [dos|gpt] [size_part1 [... size_partN]]```
This function create partitions on the disk given as the first parameter. The This function create partitions on the disk given as the first parameter. The
second parameter can be gpt or dos, respectively to instruct the creation of a second parameter can be gpt or dos, respectively, to instruct the creation of a
GPT partition table (which is default when not mentioned) or a DOS partition GPT partition table (which is default when not mentioned) or a DOS partition
table, deprecated but suported for compatibility purposes. Then a list of size table, deprecated but supported for compatibility purposes. Then a list of size
can be given to generate more than one partition. In the case of a DOS partition can be given to generate more than one partition. In the case of a DOS partition
table, only primary partition are possible, four of it maximum. table, only primary partition are possible, four of, maximum.
Partition size can be : Partition size can be :
- simple number: will be interpreted as a precise number of cylinder, this is - Simple number: will be interpreted as a precise number of cylinders, this is
the only method that will be precise; the only method that will be precise;
- 100M: will create a 100 MiB partition, more or less to the nearest cylinder; - 100M: will create a 100 MiB partition, more or less to the nearest cylinder;
- 100G: will create a 100 GiB partition, more or less to the nearest cylinder; - 100G: will create a 100 GiB partition, more or less to the nearest cylinder;
- 100T: same again 100 TiB, ang you really have a lot of space... - 100T: same again 100 TiB, and you really have a lot of space...
- 0: will be interpreted as all remaining space in the final partition scheme. - 0: will be interpreted as all remaining space in the final partition scheme.
It must come only once. It must come only once.
Be warned that a size (whatever the unit is) can result in slightly different Be warned that a size (whatever the unit is) can result in slightly different
space depending on the drive model and cylinder size. space depending on the drive model and cylinder size.
### 4.3. Other functionnalities ### 4.3. Other functionalities
That file don't provide any other things that the previously listed functions. That file don't provide any other things that the previously listed functions.
## 5. The command_line.sh file ## 5. The command_line.sh file
### 5.1. Functions ### 5.1. Functions
#### 5.1.1. ```read_commandline``` #### 5.1.1. ```read_commandline```
That function consist in a loop that analyse command line one parameter after That function consist in a loop that analyze command line one parameter after
the other. Most of command line parameters will result in the positionning of the other. Most of command line parameters will result in the positioning of
some global variables. The following table details the variable with their type some global variables. The following table details the variable with their type
associated to the corresponding parameter: associated to the corresponding parameter:
| Parameter | Variable | Type | Descrition | | Parameter | Variable | Type | Description |
|:--------------|:-------------------|:--------|:------------------------------| |:--------------|:-------------------|:--------|:------------------------------|
| --help | *none* | *n/a* | Trigger help display directly and exit | | --help | *none* | *n/a* | Trigger help display directly and exit |
| --version | *none* | *n/a* | Trigger version display directly and exit | | --version | *none* | *n/a* | Trigger version display directly and exit |
| --module | MANUAL_MODULE_LIST | string | The following parameter will set a list of module to use | | --module | MANUAL_MODULE_LIST | string | The following parameter will set a list of module to use |
| --check-only | CHECK_ONLY | boolean | Activate check only mode | | --check-only | CHECK_ONLY | boolean | Activate check only mode |
| --jump | JUMP | boolean | Activate no checks mode | | --jump | JUMP | boolean | Activate no check mode |
| --keep-going | KEEPGOING | boolean | Activate keep going option | | --keep-going | KEEPGOING | boolean | Activate keep going option |
| --resume | RESUME | boolean | Activate resume mode if stage file exists | | --resume | RESUME | boolean | Activate resume mode if stage file exists |
| --no-root-check | NO_ROOT_CHECK | boolean | Activate option to not check if user is root | | --no-root-check | NO_ROOT_CHECK | boolean | Activate option to not check if user is root |
@@ -251,22 +256,23 @@ associated to the corresponding parameter:
| --chroot | CHROOT_PATH | string | The following parameter will be the path to chroot in | | --chroot | CHROOT_PATH | string | The following parameter will be the path to chroot in |
| --cron | CRON_MODE | boolean | Activate cron mode | | --cron | CRON_MODE | boolean | Activate cron mode |
The function will do some basinc synthax checks. For exemple if you put an The function will do some basic syntax checks. For example, if you put an option
option just after one supposing a value declaration, an error will be trigered just after one supposing a value declaration, an error will be triggered
directly. directly.
#### 5.1.5. ```process_commandline_and_vars``` #### 5.1.5. ```process_commandline_and_vars```
That function have the role to check the concistancy of command line parameters. That function has the role to check the concistency of command line parameters.
It will triger errors if incompatible parameters have been given or if those It will trigger errors if incompatible parameters have been given or if those
parameters might lead to a non predictable situation. parameters might lead to a non-predictable situation.
When those checks are done, the definitive module list to load is created. With When those checks are done, the definitive module list to load is created. With
that list we then checks the modules are available and do not contain the dash that list we then checks the modules are available and do not contain the dash
character. character.
That function will also triger an error if the definitive module list is empty. That function will also trigger an error if the resulting module list appears to
be empty.
### 5.2. Other functionnalities ### 5.2. Other functionalities
That file don't provide any other things that the previously listed functions. That file don't provide any other things that the previously listed functions.
## 6. The display.sh file ## 6. The display.sh file
@@ -291,28 +297,29 @@ The second parameter is the message to display.
As this function is widely used almost everywhere in the code at runtime, As this function is widely used almost everywhere in the code at runtime,
consider it as being a base dependency of all libraries and modules. consider it as being a base dependency of all libraries and modules.
Consequently that function can only contain code that cannot trigger errors or Consequently, that function can only contain code that cannot trigger errors or
fail as it's also used to display errors. Thus it only contains echoes and some fail, as it's also used to display errors. Thus, it only contains echoes and
variables manipulation. some variables manipulation.
#### 6.1.2. ```separator``` #### 6.1.2. ```separator```
That function display a seprator made with dash, to fill the length of the That function display a separator made with dash, filling the screen length minus
screen minus one character if screen length is 80 character or less. If more one character if screen length is 80 character or less. If the screen length is
than 80 the lenght of the separator will be 80 plus half of additionnal length. above 80 characters, the length of the separator will be 80 plus half of
additional length.
It takes no parameters and return no value. It takes no parameters and return no value.
#### 6.1.3. ```dsleep <miliseconds> [char]``` #### 6.1.3. ```dsleep <miliseconds> [char]```
That function is an equivalent to *sleep* bash command but will display a That function is an equivalent to *sleep* bash command but will display a
countdown every second until it reaches zero. Optionnally a character (or a countdown every second until it reaches zero. Optionally, a character (or a
string) can be given as a second parameter to replace the countdown by that string) can be given as a second parameter to replace the countdown by that
character. For exemple, you can use a dot to display a dot every second until character. For example, you can use a dot to display a dot every second until
the wait is over. the wait is over.
The function returns nothing useful. The function returns nothing useful.
#### 6.1.4. ```dump_key_buffer``` #### 6.1.4. ```dump_key_buffer```
That function dumps keyboard's buffer. It's used to clear eventual key press That function dumps the keyboard's buffer. It's used to clear eventual key press
before any critical keyboard action. before any critical keyboard action.
That function takes no parameter and returns no useful value. That function takes no parameter and returns no useful value.
@@ -348,12 +355,12 @@ ending will be filled with background color.
## 7. The filefct.sh file ## 7. The filefct.sh file
### 7.1. Common behavior ### 7.1. Common behavior
In our terminology a source file can be of three different origins, selected In our terminology, a source file can be of three different origins, selected
automatically from highest to lowest priority: automatically from highest to lowest priority:
- **```repo/hosts/$HOSTNAME```**: this allows to provide system specific - **```repo/hosts/$HOSTNAME```**: this allows to provide system specific
files. Use only relative path to access it. files. Use only relative path to access it.
- **```repo/common```**: this one will provide files suitable for your entire - **```repo/common```**: this one will provide files suitable for your entire
infrastructure. Yet again provide a relative path to access it. infrastructure. Yet again, provide a relative path to access it.
- **Any path**: You can give fully qualified path names to access resources - **Any path**: You can give fully qualified path names to access resources
from other locations. from other locations.
@@ -365,27 +372,28 @@ original file or directory name and timestamp the date and time of the backup
as retuned by the ```stdtime``` function. If a file given in parameter don't as retuned by the ```stdtime``` function. If a file given in parameter don't
exists, the function will issue a warning and continue to the next. exists, the function will issue a warning and continue to the next.
If target file or directory is a symbolic link, the link will be resolved If the target file or directory is a symbolic link, the link will be resolved
recursively until we backup the final target on its side. recursively until we backup in the backup destination.
The function don't take any other parameters than file and/or directory names. The function don't take any other parameters than file and/or directory names.
#### 7.2.2. ```select_file <filename>``` #### 7.2.2. ```select_file <filename>```
Returns the best match in our priority system returning on ```stdout``` the Returns the best match in our priority system, returning on ```stdout``` the
resulting fully qualified path name as a result. The priorities applies on file resulting fully qualified path name as a result. The priorities apply on file
existance. existence.
Many functions manipullating files in ```init.sh``` depends on that function. Many functions manipulating files in ```init.sh``` depends on that function.
#### 7.2.2. ```install_file <source1> [source2 [... sourceN]] <destination>``` #### 7.2.2. ```install_file <source1> [source2 [... sourceN]] <destination>```
Install a list of source files to the given destination using our priority Install a list of source files to the given destination using our priority
system. system.
Wildcards are not allowed in file names, so an error will occurs if you try to Wildcards are not allowed in file names, so an error will occur if you try to
use any. It's also not yet possible to give an entire directory as a source. use any. It's also not yet possible to give an entire directory as a source.
The last parameter is always the destination. If the destination path does not The last parameter is always the destination. If the destination path does not
exists, it will be created automatically. exists, it will be created automatically. The destination must be a fully
qualified file name (and consequently, begin with "/").
#### 7.2.3. ```append_file <source> <destination>``` #### 7.2.3. ```append_file <source> <destination>```
That function add the content of source file to destination file. The source That function add the content of source file to destination file. The source
@@ -397,10 +405,10 @@ parameters are accepted, the source and destination files.
#### 7.2.4. ```is_dir_empty <directory>``` #### 7.2.4. ```is_dir_empty <directory>```
That function take only one parameter, a path name and return 0 if the given That function take only one parameter, a path name and return 0 if the given
path don't exists or is empty. It will return one if there's at least one file path doesn't exist or is empty. It will return one if there's at least one file
in the given directory. in the given directory.
If the given parametter is a file (or a symlink to a file), it will terminate If the given parameter is a file (or a symlink to a file), it will terminate
with an error. with an error.
#### 7.2.5. ```patch_file <source> <destination> [VAR1 [VAR2 [... VARN]]]``` #### 7.2.5. ```patch_file <source> <destination> [VAR1 [VAR2 [... VARN]]]```
@@ -411,48 +419,56 @@ exact same name without the trailing @. Variables will be either the
given list or, if nothing is given in parameter, in the global system given list or, if nothing is given in parameter, in the global system
variables, in the context of the *init.sh* execution. variables, in the context of the *init.sh* execution.
Source file must exists and not be empty. The function returns nothing The source file must exist and not be empty. The function returns nothing
useful. useful.
#### 7.2.6. ```tag_file <file1> [file2 [... fileN]]``` #### 7.2.6. ```tag_file <file1> [file2 [... fileN]]```
That function add a tag to the first line of the given files. If one file That function add a tag to the first line of the given files. If one file
allready exists, the added line will be in the form: already exists, the added line will be in the form:
``` # File automatically modified by init.sh on $(stdtime).``` ``` # File automatically modified by init.sh on $(stdtime).```
If it don't exists it is created with the line: If it doesn't exist, it is created with the line:
```# File automatically generated by init.sh on $(stdtime).``` ```# File automatically generated by init.sh on $(stdtime).```
It's not using the file selection system as our source file are not suposed to ```stdtime``` is the timestamps function in the ```utils.sh``` library file.
It's not using the file selection system, as our source file are not supposed to
be modified directly. In consequence, you should always provide fully qualified be modified directly. In consequence, you should always provide fully qualified
path names to it. path names to it.
#### 7.2.7. ```file_exists <file1> [file2 [... fileN]]``` #### 7.2.7. ```file_exists <file1> [file2 [... fileN]]```
That function check files existance within our file selection system. If one That function check files existence within our file selection system. If one
source file is missing it will return 1 and echo the first file name that have source file is missing it will return 1 and echo the first file name that have
not been found in the list. If all the given files exists, it returns 0. not been found in the list. If all the given files exists, it returns 0 and
echoes nothing.
#### 7.2.8. ```file_must_exists <file1> [file2 [... fileN]]``` #### 7.2.8. ```file_must_exists <file1> [file2 [... fileN]]```
That function check files existance within our file selection system. If one That function check files existence within our file selection system. If one
source file is missing it will return an error and stop execution. That function source file is missing, it will return an error and stop execution. That function
is logicaly massively used during check phase to verify all source files are in is logically massively used during check phase to verify all source files are in
place. place.
#### 7.2.9. ```directory_exists <directory1> [directory2 [... directoryN]]``` #### 7.2.9. ```directory_exists <directory1> [directory2 [... directoryN]]```
That function check directories existance within our file selection system. If That function check directories' existence within our file selection system. If
one source directory is missing it will return 1 and echo the first directory one source directory is missing, it will return 1 and echo the first directory
name that have not been found in the list. If all the given directories exists, name that have not been found in the list. If all the given directories exists,
it returns 0. it returns 0.
#### 7.2.10. ```directory_must_exists <directory1> [directory2 [... directoryN]]``` #### 7.2.10. ```directory_must_exists <directory1> [directory2 [... directoryN]]```
That function check directories existance within our file selection system. If That function check directories' existence within our file selection system. If
one source directory is missing it will return an error and stop execution. That one source directory is missing, it will return an error and stop execution.
function is logicaly massively used during check phase to verify all source That function is useful during check phase to verify all source directories are
directories are in place. in place.
### 7.3. Other functionnalities ### 7.3. Other functionalities
That file don't provide any other things that the previously listed functions. That library initialize a couple of variables possibly useful in modules:
* ```HOST_REPO_PATH```: path where source files specific to the host will be
stored. Default is ```repo/hosts/$HOSTNAME``` under the ```init.sh``` script
directory;
* ```COMM_REPO_PATH```: path where common source files will be stored. Default
is ```repo/common``` under the ```init.sh``` script directory.
## 8. The loaders.sh file ## 8. The loaders.sh file
### 8.1. Functions ### 8.1. Functions
@@ -467,20 +483,20 @@ exist in the following order:
6) ```auto/distro-version-arch.conf.sh``` 6) ```auto/distro-version-arch.conf.sh```
7) ```auto/distro-codename-arch.conf.sh``` (if ```SYS_CODE``` defined) 7) ```auto/distro-codename-arch.conf.sh``` (if ```SYS_CODE``` defined)
Plaese note that a situation where no such file exists would lead to error. Most Please note that a situation where no such file exists would lead to error. Most
of the time a basic package manager configuration will be required to make it of the time, a basic package manager configuration will be required to make it
work. work.
#### 8.1.4. ```load_configuration``` #### 8.1.4. ```load_configuration```
That function loads configuration files. It will first check for configuration That function loads configuration files. It will first check for configuration
given as command line parameter. If no such parameter exists, it will try to given as command line parameter. If no such parameter exists, it will try to
load a file named ```conf/${HOSTNAME}.conf.sh```. If that file don't exists, the load a file named ```conf/${HOSTNAME}.conf.sh```. If that file don't exist, the
generic configuration will be loaded in the file ```conf/init.conf.sh```. generic configuration will be loaded in the file ```conf/init.conf.sh```.
If no configuration file can be found the function will trigger an error and If no configuration file can be found, the function will trigger an error and
exit the script. exit the script.
### 8.2. Other functionnalities ### 8.2. Other functionalities
That file don't provide any other things that the previously listed functions. That file don't provide any other things that the previously listed functions.
## 9. The pkgman.sh file ## 9. The pkgman.sh file
@@ -488,96 +504,97 @@ That file don't provide any other things that the previously listed functions.
Because it gives system independent function to the system dependent package Because it gives system independent function to the system dependent package
manager, the entire file depends on ```PKG_MAN``` variable, defining the package manager, the entire file depends on ```PKG_MAN``` variable, defining the package
manager executable to use. Other variables giving command line parameters to manager executable to use. Other variables giving command line parameters to
use for the different function will also be nedeed and detailed for every use for the different function will also be needed and detailed for every
function. All those variable are defined in a system dependant configuration function. All those variable have to be defined in a system dependent
file automatically called on script startup. configuration file automatically called on script startup.
### 9.2. Functions ### 9.2. Functions
#### 9.2.1. ```pkgupdt``` #### 9.2.1. ```pkgupdt```
That function calls the package manager to update package database. That function calls the package manager to update the package database.
It depends on the ```COM_UPDATE``` variable wich define the parameters to use to It depends on the ```COM_UPDATE``` variable which define the parameters to use
accomplish that function. to accomplish that function.
That function takes no parameters and any given parameters will be ignored. That function takes no parameters and any given parameters will be ignored.
#### 9.2.2. ```pkginst <package1> [package2 [... packageN]]``` #### 9.2.2. ```pkginst <package1> [package2 [... packageN]]```
That function installs using the package manager the packages given in That function installs using the package manager the packages given in
parameters. The list of parameters are all considered as package names. parameters. The list of parameters will be entirely considered as package names.
Before installation, the list of package to be installed by the package Before installation, the list of package to be installed by the package
manager will be extracted to allow execution of pre installation scripts manager will be extracted to allow execution of pre-installation scripts
and post installation scripts, even for dependencies (ie: packages not parts of and post-installation scripts, even for dependencies (i.e.: packages not parts
the given parameters). of the given parameters).
Preinstallation scripts have to be named ```preinst_<package_name>```. Post Pre-installation scripts have to be named ```preinst_<package_name>```.
installation script will be in the form ```postinst_<package_name>```. Post-installation script will be in the form ```postinst_<package_name>```.
If the ```INSTALL_MODE``` variable is set to ```dev``` the package manger will If the ```INSTALL_MODE``` variable is set to ```dev``` the package manager will
be called surrounded by eventual pre and post install scripts, one package be called surrounded by eventual pre and post install scripts, one package
after the other. Elsewhere, all pre installation scripts are executed, followed after the other. Elsewhere, all pre-installation scripts are executed, followed
by the package manager with the entire package list as parameter and finally by the package manager with the entire package list as parameter and finally
all the post installation scripts. all the post-installation scripts.
The function depends on the ```COM_INSTALL``` variable wich define the parameter The function depends on the ```COM_INSTALL``` variable which define the
to use to accomplish that package manager function. parameter to use to accomplish that package manager function.
#### 9.2.3. ```pkgupgd``` #### 9.2.3. ```pkgupgd```
That function calls the package manager to upgrade system. If pre upgrade That function calls the package manager to upgrade the system. If pre-upgrade
scripts exists, they will be executed if the corresponding package are being scripts exist, they will be executed if the corresponding package are being
upgraded. After the upgrade, the same behaviour will trigger post upgrade upgraded. After the upgrade, the same behavior will trigger post-upgrade
scripts. scripts.
Pre upgrade scripts have to be named ```preupgd_<package_name>```. Post Pre-upgrade scripts have to be named ```preupgd_<package_name>```. Post-upgrade
upgrade script will be in the form ```postupgd_<package_name>```. scripts will be in the form ```postupgd_<package_name>```.
It depends on the ```COM_UPGRADE``` variable wich define the parameters to use It depends on the ```COM_UPGRADE``` variable which define the parameters to use
to accomplish that function. to accomplish that function.
That function takes no parameters and any given parameters will be ignored. That function takes no parameters and any given parameters will be ignored.
#### 9.2.4. ```pkgrm <package1> [package2 [... packageN]]``` #### 9.2.4. ```pkgrm <package1> [package2 [... packageN]]```
That function uninstalls using the package manager the packages given in That function uninstalls using the package manager the packages given in
parameters. The list of parameters are all considered as package names. parameters. The list of parameters will be entirely considered as package names.
Before removal, the list of package to be uninstalled by the package Before removal, the list of package to be uninstalled by the package
manager will be extracted to allow execution of pre removal scripts manager will be extracted to allow execution of pre-removal scripts
and post removal scripts, even for dependencies (ie: packages not parts of and post-removal scripts, even for dependencies (i.e.: packages not parts of
the given parameters). the given parameters).
If the ```INSTALL_MODE``` variable is set to ```dev``` the package manger will If the ```INSTALL_MODE``` variable is set to ```dev``` the package manager will
be called one package after the other (allong with pre and post remove scripts). be called one package after the other (along with pre and post-remove scripts).
Elsewhere all pre removal scripts are executed, followed by the package manager Elsewhere, all pre-removal scripts are executed, followed by the package manager
with the entire package list as parameter and finally all the post removal with the entire package list as parameter and finally all the post-removal
scripts. scripts.
Pre remove scripts have to be named ```prerm_<package_name>```. Post remove Pre-remove scripts have to be named ```prerm_<package_name>```. Post-remove
script will be in the form ```postrm_<package_name>```. script will be in the form ```postrm_<package_name>```.
The function depends on the ```COM_REMOVE``` variable wich define the parameter The function depends on the ```COM_REMOVE``` variable which define the parameter
to use to accomplish that function. to use to accomplish that function.
#### 9.2.5. ```pkgautorm``` #### 9.2.5. ```pkgautorm```
That function calls the package manager to remove no longer needed installed That function calls the package manager to remove no longer needed dependencies
dependencies. Any package not manually installed is considered as a depndency. still installed. Any package not manually installed is considered as a
dependency.
Pre removal and post removal scripts will be executed accordingly if any Pre-removal and post-removal scripts will be executed accordingly if any
matching package is to be removed. It's the same as the ones executed by matching package is to be removed. It will be the same as the ones executed by
```pkgrm``` function. ```pkgrm``` function.
It depends on the ```COM_AUTOREM``` variable wich define the parameters to use It depends on the ```COM_AUTOREM``` variable which define the parameters to use
to accomplish that function. to accomplish that function.
That function takes no parameters and any given parameters will be ignored. That function takes no parameters and any given parameters will be ignored.
### 9.3. Other functionnalities ### 9.3. Other functionalities
Other functions are declared to call pre and post actions for the corresponding Other functions are declared to call pre- and post-actions for the corresponding
package manager events. It doesn't make sense those functions to be called package manager events. It doesn't make sense those functions to be called
outside of the integrated package manager mechanisms as their functionnalities outside the integrated package manager mechanisms as their functionalities
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 | Required var | Package triger | Description | | Pre/post-functions | Caller | Required var | Package trigger | 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. |
@@ -593,7 +610,7 @@ The following table resume those function sorted with their respective caller:
That script relies on the ```INIT_COM``` variable, defining the program to use That script relies on the ```INIT_COM``` variable, defining the program to use
to manipulate services. It is defined in configuration file automatically called to manipulate services. It is defined in configuration file automatically called
depending on your distribution. Nevertheless, even if it's system dependent, depending on your distribution. Nevertheless, even if it's system dependent,
some distributions offers you to choose between different services call (and some distributions offer you to choose between different services call (and
init system). If you're not using the standard init system of your distribution, init system). If you're not using the standard init system of your distribution,
you'll need to overload the ```INIT_COM``` variable in your configuration files. you'll need to overload the ```INIT_COM``` variable in your configuration files.
@@ -611,31 +628,31 @@ With the tested init systems, and considering ```%srv%``` the service name and
#### 10.2.1. ```exec_serv <service> <command>``` #### 10.2.1. ```exec_serv <service> <command>```
That function execute the given action to the given service. The service have That function execute the given action to the given service. The service have
to be the first parameter and the action, the second parameter. No more to be the first parameter and the action, the second parameter. No more
parameter will be acceted and an error will be triggered if there's any more parameter will be accepted and an error will be triggered if there's any more
than two. than two.
The function returns the exit code of the service command. The function returns the exit code of the service command.
#### 10.2.2. ```svc_start <service1> [service2 [... serviceN]]``` #### 10.2.2. ```svc_start <service1> [service2 [... serviceN]]```
Start the services given in parmeters. You can give as many services you want. Start the services given in parameters. You can give as many services you want.
That function relies on the previously documented exec_serv function. That function relies on the previously documented exec_serv function.
#### 10.2.3. ```svc_reload <service1> [service2 [... serviceN]]``` #### 10.2.3. ```svc_reload <service1> [service2 [... serviceN]]```
Reload the configuration of the services given in parmeters. You can give as Reload the configuration of the services given in parameters. You can give as
many services you want. Be careful using this as some services don't have that many services you want. Be careful using this as some services don't have that
capability. capability.
That function relies on the previously documented exec_serv function. That function relies on the previously documented exec_serv function.
#### 10.2.2. ```svc_restart <service1> [service2 [... serviceN]]``` #### 10.2.2. ```svc_restart <service1> [service2 [... serviceN]]```
Restart the services given in parmeters. It consist generally in a stop Restart the services given in parameters. It consists generally in a stop
immediately followed by a start. You can give as many services you want. immediately followed by a start. You can give as many services you want.
That function relies on the previously documented exec_serv function. That function relies on the previously documented exec_serv function.
#### 10.2.3. ```svc_stop <service1> [service2 [... serviceN]]``` #### 10.2.3. ```svc_stop <service1> [service2 [... serviceN]]```
Stop the services given in parmeters. You can give as many services you want. Stop the services given in parameters. You can give as many services you want.
That function relies on the previously documented exec_serv function. That function relies on the previously documented exec_serv function.
@@ -643,9 +660,9 @@ That function relies on the previously documented exec_serv function.
That file don't provide any other thing that the previously listed functions. That file don't provide any other thing that the previously listed functions.
## 11. The support.sh file ## 11. The support.sh file
### 11.1. Global behaviour ### 11.1. Global behavior
That file is designed to just display information. It only contains code that That file is designed to just display information. It only contains code that
don't requires any special rights, and do nothing to the system. The idea is to doesn't require any special rights, and do nothing to the system. The idea is to
have the minimal sets of dependencies. As it's sometimes using colors to display have the minimal sets of dependencies. As it's sometimes using colors to display
results, it depends only on color code declaration in the ```display.sh``` file. results, it depends only on color code declaration in the ```display.sh``` file.
@@ -657,44 +674,46 @@ It's not taking any parameter and return nothing but help text.
#### 11.2.2. ```show_version``` #### 11.2.2. ```show_version```
That function display the version of init.sh. It will also parse all the That function display the version of init.sh. It will also parse all the
available modules to display a table with their respecting versions. available modules to display a table with their respective versions.
If user is not root an additionnal warning will be displayed to warn the fact If the user is not root, an additional warning will be displayed to warn the
the script requires root privileges to work properly. fact the script requires root privileges to work properly.
### 11.3. Other functionnalities ### 11.3. Other functionalities
That file don't provide any other thing that the previously listed functions. That file don't provide any other thing that the previously listed functions.
## 12. The utils.sh file ## 12. The utils.sh file
### 12.1. Functions ### 12.1. Functions
#### 12.1.1. ```stdtime``` #### 12.1.1. ```stdtime```
Display date and time based on RFC 3339 standard but slightly modified so it can Display date and time based on RFC 3339 standard but slightly modified, so it
be used in filename. Thus spaces are replaced by dash, and comas between hours, can be used in filename. Thus, spaces are replaced by dash, and comas between
minutes and seconds are removed. hours, minutes and seconds are just removed.
That function takes no parameters and return its result on standard output. That function takes no parameters and return its result on standard output.
#### 12.1.2. ```function_exists <function_name>``` #### 12.1.2. ```function_exists <function_name>```
That function checks if the given name is a defined function in the execution That function checks if the given name is a defined function in the execution
environment. It returns 0 if yes and an undefined non zero value if not. environment. It returns 0 if yes and 1 value if not. The function name is
mandatory and an error will be triggered if no function name is given.
That functions prints nothing. That functions prints nothing.
#### 12.1.3. ```get_mod_name <module_file>``` #### 12.1.3. ```get_mod_name <module_file>```
That function return the name of the module file given in parameter. It takes That function return the name of the module file given in parameter. It takes
only one parameter: the module file name. only one parameter: a module file name.
Result is sent to ```stdout```. Result will be sent to ```stdout```.
#### 12.1.4. ```set_system_proxy``` #### 12.1.4. ```set_system_proxy```
That function applies proxy settings in the configuration files to the system That function applies proxy settings in the configuration files to the system
proxy configuration, unless the ```--no-proxy``` parameters have been given proxy configuration, unless the ```--no-proxy``` parameters have been given
command line. command line or if proxy settings are already set.
That function takes no parameters and only change ```http_proxy``` and That function takes no parameters and only change ```http_proxy``` and
```https_proxy``` standard POSIX variables. No usefull result will be returned. ```https_proxy``` standard POSIX variables in the script environment. No useful
result will be returned.
### 12.2. Other functionnalities ### 12.2. Other functionalities
That file don't provide any other thing that the previously listed functions. That file don't provide any other thing that the previously listed functions.
## 13. The version.sh file ## 13. The version.sh file
@@ -702,66 +721,88 @@ That file don't provide any other thing that the previously listed functions.
#### 13.1.1. ```get_os_version``` #### 13.1.1. ```get_os_version```
That function takes no parameters and will return three values in order: That function takes no parameters and will return three values in order:
1. Distribution ID, in low case, usually equivalent to the distribution name. 1. Distribution ID, in low case, usually equivalent to the distribution name.
2. Distribution version, if available, elsewhere kernel version with it's major. 2. Distribution version, if available, elsewhere kernel version (only major and
3. Distribution codename (eg. buster for Debian 10) in lowercase if available. If not, the generic "null" value is returned instead. minor, release will be ignored).
3. Distribution code-name (e.g., buster for Debian 10) in lowercase if
available. If not, the generic "null" value is returned instead.
The function mainly relies on the "*/etc/os-release*" new standard file. If your The function mainly relies on the "*/etc/os-release*" new standard file. If your
distribution do not provide that file it is required you generate it yourself distribution do not provide that file, it is required you generate it yourself
before using init.sh. If you need help with the *os-release* file you can check before using init.sh. If you need help with the *os-release* file you can check
the [official documentation](https://www.freedesktop.org/software/systemd/man/os-release.html). the [official documentation](https://www.freedesktop.org/software/systemd/man/os-release.html).
In "*/etc/os-release*" the variables *ID*, *VERSION_ID* and *VERSION_CODENAME* In "*/etc/os-release*" the variables *ID*, *VERSION_ID* and *VERSION_CODENAME*
will be the ones being analysed. Only the *ID* variable is mandatory. will be the ones being analyzed. Only the *ID* variable is mandatory.
#### 13.1.2. ```set_sys_var <arch> <dist> <version> <codename>``` #### 13.1.2. ```set_sys_var <arch> <dist> <version> <codename>```
That function sets important variable that will store the system architecture. That function sets some important variables that will store the system
It will allow the automatic loading of mandatory system dependent code and architecture. It allows the automatic loading of mandatory system dependent code
variables. For debugging purpose it will be possible to call it manually. and variables. For debugging purpose it's be possible to call it manually.
Inside the init.sh initiallisation, it's called that way: Inside the init.sh initialization, it's called that way:
```shell ```shell
set_sys_vars $(uname -m) $(get_os_version) set_sys_vars $(uname -m) $(get_os_version)
``` ```
All the four parameters have to be given in that order: All the four parameters have to be given in that order:
1. System architecture (eg. x86_64, i386, arm64...) 1. System architecture (e.g., x86_64, i386, arm64...)
2. Distribution name (eg. debian, centos, ubuntu...) 2. Distribution name (e.g., debian, centos, ubuntu...)
3. Distribution version (or kernel version for rolling releases) 3. Distribution version (or kernel version for rolling releases)
4. Distribution codename if available (eg. jessie, buster, bulleyes...) 4. Distribution code-name if available (e.g., jessie, buster, bulleyes...)
If your distribution do not provide any codename, you have to give "null" as a If your distribution do not provide any code-name, you have to give "null" as a
replacement parameter. replacement parameter.
The following global variables will be set at the end of the execution: The following global variables will be set at the end of the execution:
- **```SYS_ARCH```** for the system architecture - **```SYS_ARCH```** for the system architecture
- **```SYS_DIST```** for the distribution name - **```SYS_DIST```** for the distribution name
- **```SYS_VER```** for the distribution version - **```SYS_VER```** for the distribution version
- **```SYS_CODE```** for the distribution codename - **```SYS_CODE```** for the distribution code-name
The ```SYS_CODE``` variable won't be set if your distribution provides no The ```SYS_CODE``` variable won't be set if your distribution provides no
codename. code-name.
### 13.2. Other functionnalities ### 13.2. Other functionnalities
That file don't provide any other thing that the previously listed functions. That file don't provide any other thing that the previously listed functions.
## 14. Writing conventions ## 14. Global variables
Here is the table of the global variable, that could be usefull either to change
script behavior, or because those variables could be useful in many modules.
| Varaible | Type | Use |
|:-------------|:-------|:-----------------------------------------------|
| HOSTNAME | string, automatic | Define the name of the host |
| MODULE_LIST | comma separated string list, configuration file | The module list to execute |
## 15. Writing conventions
For readability and compatibility purpose, I adopted some writing conventions. For readability and compatibility purpose, I adopted some writing conventions.
First of all indentation is made with space only, as different editors can have First, indentation is made with space only, as different editors can have a very
a very different approach on tabs management. Please configure your editor different approach on tabs management. I honestly really love the "Emacs" tab
accordingly if you want to share your work. management style, but I must recognize most editor are not behaving correctly
with tabs. Consequently, please configure your editor to replace tabs with four
spaces, if you want to share your work.
If, for and while statement are all written in that way: If, for and while statement are all written in that way:
```shell ```shell
# if exemple
if [[ condition ]]; then if [[ condition ]]; then
something something
elif [[ condition ]]; then
something
else
something
fi fi
# for exemple
for var in range; do for var in range; do
something something
done done
# while exemple
while condition; do while condition; do
something something
done done
``` ```
Case statement will look like this: Case statement will look like this:
```shell ```shell
case var in case var in
@@ -777,12 +818,19 @@ case var in
esac esac
``` ```
Tests have to be done using if. Writting ```[[ test ]] && action``` is not Tests have to be done using if. Writing ```[[ test ]] && action``` is not
encouraged even if elegant. It makes reading harder for beginners. encouraged, even if I personally think it's a very elegant writing. It makes
reading and comprehension harder for beginners.
A much more accepted behavior is the following two rules with tests:
* Don't write ```[[ $VAR ]]``` to test variable existance, write
```[[ -n $VAR ]]``` instead.
* Don't write ```[[ ! $VAR ]]``` to test if a variable is undeclared, write
```[[ -z $VAR ]]``` instead.
----------------------------------------------------------------------------- -----------------------------------------------------------------------------
Documentation (c) 2019-2021 Geoffray Levasseur. Documentation (c) 2019-2022 Geoffray Levasseur.
This file is distributed under3-clause BSD license. The complete license This file is distributed under3-clause BSD license. The complete license
agreement can be obtained at: https://opensource.org/licenses/BSD-3-Clause agreement can be obtained at: https://opensource.org/licenses/BSD-3-Clause

View File

@@ -33,17 +33,18 @@ You've called the **init.sh** script with command line syntax error or options
that are not compatible together. Some options exclude each others or trigger that are not compatible together. Some options exclude each others or trigger
opposite events. opposite events.
To fix it check your command line taking into account of the detailled error To fix it check your command line taking into account of the detailed error
message displayed together with that error. message displayed together with that error.
## Error #2: Misuse of Bash built-in ## Error #2: Misuse of Bash built-in
A Bash builtin function is uncorrectly called. A Bash built-in function is incorrectly called.
If that error happens on the execution of a module you made yourself, you might If that error happens on the execution of a module you made yourself, you might
check the code of your module and fix what goes wrong. check the code of your module and fix what goes wrong. The backtrace will help
you to find what line is in cause of it.
If it happens on the execution of **init.sh** or a builtin module, please send a If it happens on the execution of **init.sh** or a builtin module, please send a
bug repport. bug report.
## Error #3: Missing library file or function ## Error #3: Missing library file or function
One of the internal vital function of **init.sh** is missing. One of the internal vital function of **init.sh** is missing.
@@ -52,19 +53,19 @@ Most of the time that error happens when one of the library files of **init.sh**
is missing. Please check your directory tree and all files are available. Use is missing. Please check your directory tree and all files are available. Use
git as a reference if you have some doubts. git as a reference if you have some doubts.
If you have all the files, make sure they are not truncated (it can happens, for If you have all the files, make sure they are not truncated (it can happen, for
example, if disk is full), that you use consistant versions (yet again, git is example, if disk is full), that you use consistent versions (yet again, git is
the reference) or you didn't modified something accidentally in libraries or the reference) or you didn't modify something accidentally in libraries or
**init.sh** script. **init.sh** script.
## Error #4: No root right ## Error #4: No root right
You tried to execute **init.sh** without administrative rights. You tried to execute **init.sh** without administrative rights.
As **init.sh** goal is to transform system, administrative rights are absolutely As **init.sh** goal is to transform the system, administrative rights are
necessary. To fix this, run **init.sh** as superuser, using ```sudo``` or absolutely necessary. To fix this, run **init.sh** as superuser, using
```su```. ```sudo``` or ```su```.
If you run as non UID #0 user but you're certain to have all the necessary If you run as non UID #0 user, but you're certain to have all the necessary
rights, you have to use the ```--no-check-root``` option. rights, you have to use the ```--no-check-root``` option.
## Error #5: Malformed module list ## Error #5: Malformed module list
@@ -72,9 +73,9 @@ The module list you provided is malformed or contains forbidden characters.
To fix this, check your module list in your configuration file or in your To fix this, check your module list in your configuration file or in your
command line if you passed it manually. If you created a module you added in the command line if you passed it manually. If you created a module you added in the
list, make sure your module does not contain a dash '-' character, or any non list, make sure your module does not contain a dash '-' character, or any
alphanumeric character other than underscore. If you use a number in your module non-alphanumeric character other than underscore. If you use a number in your
name, make sure it's not begining with. module name, make sure it's not beginning with.
## Error #6: Unable to find configuration ## Error #6: Unable to find configuration
That error happens when no configuration file suitable for your machine have That error happens when no configuration file suitable for your machine have
@@ -82,84 +83,86 @@ been found.
To fix this, make sure you have a configuration file named after the lowercase To fix this, make sure you have a configuration file named after the lowercase
hostname of the computer you run on in the ```conf/``` directory of your hostname of the computer you run on in the ```conf/``` directory of your
**init.sh** tree. Alternatively you can use a generic file named **init.sh** tree. Alternatively, you can use a generic file named
```init.conf.sh``` in that same directory. ```init.conf.sh``` in that same directory.
If you gave manual configuration files, check they all exists. If you gave manual configuration files, check they all exist.
## Error #7: Misuse of script internal function ## Error #7: Misuse of script internal function
One of the base function of **init.sh** libraries is not being used correctly. One of the base function of **init.sh** libraries is not being used correctly.
If that error happens while executing one of your module, please check your code If that error happens while executing one of your module, please check your
especially when you use a **init.sh** internal. The code, especially when you use an **init.sh** internal. The
[developper documentation](dev.md) will help you about synthax. Check your [developer's documentation](dev.md) will help you about syntax. Check your
parameters are correctly passed in the good format and do not use wildcards in parameters are correctly passed in the good format and do not use wildcards in
file names. file names.
If it happens on the execution of **init.sh** or a builtin module, please send a If it happens on the execution of **init.sh** or a built-in module, please send
bug repport. a bug report.
## Error #8: Can't determine OS type or version ## Error #8: Can't determine OS type or version
As **init.sh** relies on some specific operating system commands (like package As **init.sh** relies on some specific operating system commands (like package
manager) the detection system must be able to obtain OS characteristics. manager) the detection system must be able to obtain OS characteristics.
To fix this you must check the ```/etc/os-release``` file availability for your To fix this, you must check the ```/etc/os-release``` file availability for your
distribution. If your distribution do not provide that file, you'll have to distribution. If your distribution do not provide that file, you'll have to
create it yourself providing on the bare minimum an ``ID`` entry. Check the create it yourself, providing on the bare minimum an ``ID`` entry. Check the
[```/etc/os-release``` file documentation](https://www.freedesktop.org/software/systemd/man/os-release.html) [```/etc/os-release``` file documentation](https://www.freedesktop.org/software/systemd/man/os-release.html)
for details. for details.
## Error #9: Unsatisfied dependency ## Error #9: Unsatisfied dependency
That error can happens in two cases scenario. One case is one or more of your That error can happen in two cases scenario. One case is one or more of your
modules depends on another which is not part of the module to execute. The other modules depends on another which is not part of the module to execute. The other
case is when you call a module too early. case is when you call a module too early in the list.
To fix this, check your module list order. Check also your modules dependenies To fix this, check your module list order. Check also your module's dependencies
are in the list before they are called themself. are in the list before they are called themselves.
If you wrote your own module, make sure you have no circular dependencies. If you wrote your own module, make sure you have no circular dependencies.
## Error #10: File missing or empty ## Error #10: File missing or empty
You have refered a file that don't exists or is empty, if the file is required You have referred a file that don't exist or is empty, if the file is required
to have a content. to have a content.
Check your filename and path in modules and/or configuration files. Check your filename and path in modules and/or configuration files.
## Error #11: Bad function call ## Error #11: Bad function call
That error is trigered when an internal function is called with a wrong number That error is triggered when an internal function is called with a wrong number
of parameters. of parameters.
If that error happens while executing one of your module, please check your code If that error happens while executing one of your module, please check your
especially when you use a **init.sh** internal. The code, especially when you use an **init.sh** internal. The
[developper documentation](dev.md) will help you about synthax. [developer's documentation](dev.md) will help you about syntax. Check also if a
required variable is properly set. It's always a good idea to test if all needed
variables are set properly in the checks, before applying any changes.
If it happens on the execution of **init.sh** or a builtin module, please send a bug If it happens on the execution of **init.sh** or a built-in module, please send
repport. a bug report.
## Error 12: Error copying files ## Error 12: Error copying files
A file copy opperation have failed. A file copy operation has failed.
Make sure your source path exists and is readable and destination is writable Make sure your source path exists and is readable and destination is writable
and target directory exists. Chack also if target do not contain a symbolic link and target directory exists. Check also if target do not contain a symbolic link
or a directory with the same name. or a directory with the same name.
## Error #13: Bad target file system ## Error #13: Bad target file system
The target file system you provided is not part of the root file system, is not The target file system you provided is not part of the root file system, is not
accessible or is not an absolute path. accessible, or is not an absolute path.
Make sure your destination paths are fully qualified paths names (begining with Make sure your destination path is a fully qualified paths names (beginning with
"/"), is writable and the destination path exists. "/"), is writable and the destination path exists.
## Error #14: Impossible to chroot ## Error #14: Impossible to chroot
That error occurs when the chroot target don't exists. That error occurs when the chroot target don't exist.
Check your target file system, make sure it's mounted. Check your target file system, make sure it's mounted.
## Error #15: Bad chrooted installation, destination OS needs to be fixed ## Error #15: Bad chrooted installation, destination OS needs to be fixed
The target installation is incomplete or not usable in a chrooted environment. The target installation is incomplete or not usable in a chrooted environment.
Check all the filesystems needed to perform the chroot are mounted correctly. If Check all the file systems needed to perform the chroot are mounted correctly.
your target installation is damaged, you have to fix it before running If your target installation is damaged, you have to fix it before running
**init.sh**. **init.sh**.
## Error #16: Invalid options provided with cron mode activated ## Error #16: Invalid options provided with cron mode activated
@@ -174,44 +177,49 @@ You asked to resume on last error, but no status file can be found.
To fix this, remove the ```--resume``` option. You can use the ```--modules``` To fix this, remove the ```--resume``` option. You can use the ```--modules```
option instead to ask for a limited range of modules. option instead to ask for a limited range of modules.
## Error #18: Module file don't exists or is empty ## Error #18: Module file don't exist or is empty
The module list contains an entry that correspond to no module in the "modules" The module list contains an entry that correspond to no module in the "modules"
directory or the corresponding file is actually empty. directory, or the corresponding file is actually empty.
Check the spelling of the incriminated module. If spelling is correct, check the Check the spelling of the incriminated module. If spelling is correct, check the
file name of that module. If it don't exists, create the module or remove it file name of that module. If it don't exist, create the module or remove it from
from the module list. the module list.
## Error #50 to #100: Error in module execution ## Error #50 to #100: Error in module execution
A module trigered an internal error while executing change to the system. You A module triggered an internal error while executing changes to the system. You
need to check the concerned module documentation. need to check the concerned module documentation.
As the module may have done some unfinished changes to the system, it will be As the module may have done some unfinished changes to the system, it will be
safer to resume after fixing the problem before rebooting. safer to resume after fixing the problem before rebooting. If you need to
reboot, please check your system is still bootable.
## Error #126: Command exists but is not executable ## Error #126: Command exists but is not executable
You try to execute a command that is not executable for you. You try to execute a command that is not executable for you.
Check your rights to execute the so said command. Check also the excutable is Check your rights to execute the so said command. Check also the executable file
valid if the command is external. is valid if the command is external.
## Error #127: Command not found ## Error #127: Command not found
You try to call a command that do not exists. You try to call a command that do not exist.
If taht error comes from one of your modules, check the spelling of the If that error comes from one of your modules, check the spelling of the
command. Check also if the program you need is installed and think about command. Check also if the program you need is installed, and think about
installing it through the provided **init.sh** builtin functions. installing it through the provided **init.sh** built-in functions before using
it in your module.
If that occurs with a builtin module or in **init.sh** code or libraries please If that occurs with a built-in module or in **init.sh** code or libraries,
fill a bug repport. please fill a bug report.
## Error #128: Abortion due to external cause ## Error #128: Abortion due to external cause
That error happens when an exeternal signal is triggering a stop in the That error happens when an external signal is triggering the interuption of the
execution of **init.sh**. execution of **init.sh**.
Do not halt or restart the computer before the end of **init.sh** execution. Do not halt or restart the computer before the end of **init.sh** execution. If
Using Ctrl + C sequence or the kill command on the bash process running the one of your module requires a reboot, please use the built-in ```need_reboot```
script will lead to that error too. command.
Note that using Ctrl + C sequence or the kill command on the bash process
running the script will lead to that error too.
## Error #150 to #200: Error in module checks ## Error #150 to #200: Error in module checks
One of the checks executed prior **init.sh** actions did not pass. One of the checks executed prior **init.sh** actions did not pass.
@@ -223,12 +231,12 @@ the associated error message.
That error is a special case when the exit status of a program is above 255 as That error is a special case when the exit status of a program is above 255 as
authorized by many high level programming languages. authorized by many high level programming languages.
Check the error in the program emiting it and the associated program Check the error in the program emitting it and the associated program
documentation. documentation.
----------------------------------------------------------------------------- -----------------------------------------------------------------------------
Documentation (c) 2019-2021 Geoffray Levasseur. Documentation (c) 2019-2022 Geoffray Levasseur.
This file is distributed under3-clause BSD license. The complete license This file is distributed under3-clause BSD license. The complete license
agreement can be obtained at: https://opensource.org/licenses/BSD-3-Clause agreement can be obtained at: https://opensource.org/licenses/BSD-3-Clause

View File

@@ -1,11 +1,11 @@
# init.sh to do list # init.sh to-do list
There's no specific order in that list. All that is subject to appear in version There's no specific order in that list. All that is subject to appear in version
1.x.y of ```init.sh```. 1.x.y of ```init.sh```.
* Better error management system * Better error management system
* Fix ```--keep-going``` option not properly working * Fix ```--keep-going``` option not properly working
* Add a function for booleans to accept true, yes and 1, and false, no and 0 answers * Add a function for boolean variables to accept true, yes and 1, and false, no and 0 answers
* More modules * More modules
* Add support for CentOS * Add support for CentOS
* Add support for Slackware * Add support for Slackware
@@ -14,25 +14,26 @@ There's no specific order in that list. All that is subject to appear in version
* Improve output * Improve output
* Add ```--quiet``` option to hide run commands output * Add ```--quiet``` option to hide run commands output
Here is ideas for version 2 of ```init.sh```: Here are ideas for version 2 of ```init.sh```:
* Support for system dependant modules * Support for system dependent modules
* Idem potency (if possible) * Idem potency (if possible)
* Better configuration file design with a proper parser (ini style maybe) * Better configuration file design with a proper parser (ini style maybe)
* Configuration designer (CCmake style maybe), can't be done in Bash * Configuration designer (CCmake style maybe), can't be done in Bash
* Language support and translations?
What will never appear in that todo list (so don't ask) : What will never appear in that todo list (so don't ask) :
* Windows: don't ask for Windows support, it will never happens * Windows: don't ask for Windows support, it will never happen, and don't make any sense
* MacOS: same as above * MacOS: same as above
* Base language change: the heart of init.sh is BASH, and will always be * Base language change: the heart of init.sh is BASH, and will always be
Knowing all that, you can still send feature request if a deasired feature do Knowing all that, you can still send feature request if a desired feature do not
not appears in that list. appears in that list.
----------------------------------------------------------------------------- -----------------------------------------------------------------------------
Documentation (c) 2019-2021 Geoffray Levasseur. Documentation (c) 2019-2022 Geoffray Levasseur.
This file is distributed under3-clause BSD license. The complete license This file is distributed under3-clause BSD license. The complete license
agreement can be obtained at: https://opensource.org/licenses/BSD-3-Clause agreement can be obtained at: https://opensource.org/licenses/BSD-3-Clause

View File

@@ -36,7 +36,7 @@ export LC_ALL=C
export LANG=C export LANG=C
# Version of init # Version of init
export VERSION="0.99.17" export VERSION="0.99.18"
# Store script's path (realpath -s resolve symlinks if init.sh is a symlink) # Store script's path (realpath -s resolve symlinks if init.sh is a symlink)
export MYPATH=$(dirname $(realpath -s $0)) export MYPATH=$(dirname $(realpath -s $0))

View File

@@ -1,7 +1,7 @@
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
# Error management functions # Error management functions
# This file is part of the init.sh project # This file is part of the init.sh project
# Copyright (c) 2019-2021 Geoffray Levasseur <fatalerrors@geoffray-levasseur.org> # Copyright (c) 2019-2022 Geoffray Levasseur <fatalerrors@geoffray-levasseur.org>
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
# This file is distributed under 3-clause BSD license. # This file is distributed under 3-clause BSD license.
# The complete license agreement can be obtained at: # The complete license agreement can be obtained at:

View File

@@ -1,7 +1,7 @@
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
# Chroot system functions # Chroot system functions
# This file is part of the init.sh project # This file is part of the init.sh project
# Copyright (c) 2019-2021 Geoffray Levasseur <fatalerrors@geoffray-levasseur.org> # Copyright (c) 2019-2022 Geoffray Levasseur <fatalerrors@geoffray-levasseur.org>
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
# This file is distributed under 3-clause BSD license. # This file is distributed under 3-clause BSD license.
# The complete license agreement can be obtained at: # The complete license agreement can be obtained at:

View File

@@ -1,7 +1,7 @@
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
# Main program functions # Main program functions
# This file is part of the init.sh project # This file is part of the init.sh project
# Copyright (c) 2019-2021 Geoffray Levasseur <fatalerrors@geoffray-levasseur.org> # Copyright (c) 2019-2022 Geoffray Levasseur <fatalerrors@geoffray-levasseur.org>
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
# This file is distributed under 3-clause BSD license. # This file is distributed under 3-clause BSD license.
# The complete license agreement can be obtained at: # The complete license agreement can be obtained at:

View File

@@ -1,7 +1,7 @@
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
# Disks and partitions manipulation function # Disks and partitions manipulation function
# This file is part of the init.sh project # This file is part of the init.sh project
# Copyright (c) 2019-2021 Geoffray Levasseur <fatalerrors@geoffray-levasseur.org> # Copyright (c) 2019-2022 Geoffray Levasseur <fatalerrors@geoffray-levasseur.org>
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
# This file is distributed under 3-clause BSD license. # This file is distributed under 3-clause BSD license.
# The complete license agreement can be obtained at: # The complete license agreement can be obtained at:

View File

@@ -1,7 +1,7 @@
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
# Some display functions and defines color codes # Some display functions and defines color codes
# This file is part of the init.sh project # This file is part of the init.sh project
# Copyright (c) 2019-2021 Geoffray Levasseur <fatalerrors@geoffray-levasseur.org> # Copyright (c) 2019-2022 Geoffray Levasseur <fatalerrors@geoffray-levasseur.org>
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
# This file is distributed under 3-clause BSD license. # This file is distributed under 3-clause BSD license.
# The complete license agreement can be obtained at: # The complete license agreement can be obtained at:

View File

@@ -1,7 +1,7 @@
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
# File manipulation function # File manipulation function
# This file is part of the init.sh project # This file is part of the init.sh project
# Copyright (c) 2019-2021 Geoffray Levasseur <fatalerrors@geoffray-levasseur.org> # Copyright (c) 2019-2022 Geoffray Levasseur <fatalerrors@geoffray-levasseur.org>
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
# This file is distributed under 3-clause BSD license. # This file is distributed under 3-clause BSD license.
# The complete license agreement can be obtained at: # The complete license agreement can be obtained at:
@@ -9,6 +9,12 @@
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
# Some useful variables:
export HOST_REPO_PATH=${HOST_REPO_PATH:-"$MYPATH/repo/hosts/$HOSTNAME"}
export GROUP_REPO_PATH=${GROUP_REPO_PATH:-"$MYPATH/repo/groups"}
export COMM_REPO_PATH=${COMM_REPO_PATH:-"$MYPATH/repo/common"}
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
# Backup original installation files # Backup original installation files
# (or any old files if runned several time on same file) # (or any old files if runned several time on same file)
@@ -55,10 +61,10 @@ export -f backup_dist
select_file() select_file()
{ {
local infile=$1 local infile=$1
if [[ -f $MYPATH/repo/hosts/$HOSTNAME/$infile ]]; then if [[ -f $HOST_REPO_PATH/$infile ]]; then
local source="$MYPATH/repo/hosts/$HOSTNAME/$infile" local source="$HOST_REPO_PATH/$infile"
elif [[ -f $MYPATH/repo/common/$infile ]]; then elif [[ -f $COMM_REPO_PATH/$infile ]]; then
local source="$MYPATH/repo/common/$infile" local source="$COMM_REPO_PATH/$infile"
else else
# Not found in repository, we expect full name # Not found in repository, we expect full name
local source="$infile" local source="$infile"
@@ -75,10 +81,10 @@ export -f select_file
select_directory() select_directory()
{ {
local indir=$1 local indir=$1
if [[ -d $MYPATH/repo/hosts/$HOSTNAME/$indir ]]; then if [[ -d $HOST_REPO_PATH/$indir ]]; then
local source="$MYPATH/repo/hosts/$HOSTNAME/$indir" local source="$HOST_REPO_PATH/$indir"
elif [[ -d $MYPATH/repo/common/$indir ]]; then elif [[ -d $COMM_REPO_PATH/$indir ]]; then
local source="$MYPATH/repo/common/$indir" local source="$COMM_REPO_PATH/$indir"
else else
# Not found in repository, we expect full name # Not found in repository, we expect full name
local source="$indir" local source="$indir"
@@ -309,5 +315,7 @@ directory_must_exists()
fi fi
unset md unset md
} }
export -f directory_must_exists export -f directory_must_exists
# EOF # EOF

View File

@@ -1,7 +1,7 @@
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
# Loaders for conf and prepost functions # Loaders for conf and prepost functions
# This file is part of the init.sh project # This file is part of the init.sh project
# Copyright (c) 2019-2021 Geoffray Levasseur <fatalerrors@geoffray-levasseur.org> # Copyright (c) 2019-2022 Geoffray Levasseur <fatalerrors@geoffray-levasseur.org>
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
# This file is distributed under 3-clause BSD license. # This file is distributed under 3-clause BSD license.
# The complete license agreement can be obtained at: # The complete license agreement can be obtained at:

View File

@@ -1,7 +1,7 @@
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
# Package manager integration # Package manager integration
# This file is part of the init.sh project # This file is part of the init.sh project
# Copyright (c) 2019-2021 Geoffray Levasseur <fatalerrors@geoffray-levasseur.org> # Copyright (c) 2019-2022 Geoffray Levasseur <fatalerrors@geoffray-levasseur.org>
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
# This file is distributed under 3-clause BSD license. # This file is distributed under 3-clause BSD license.
# The complete license agreement can be obtained at: # The complete license agreement can be obtained at:

View File

@@ -1,7 +1,7 @@
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
# Services manipulation functions # Services manipulation functions
# This file is part of the init.sh project # This file is part of the init.sh project
# Copyright (c) 2019-2021 Geoffray Levasseur <fatalerrors@geoffray-levasseur.org> # Copyright (c) 2019-2022 Geoffray Levasseur <fatalerrors@geoffray-levasseur.org>
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
# This file is distributed under 3-clause BSD license. # This file is distributed under 3-clause BSD license.
# The complete license agreement can be obtained at: # The complete license agreement can be obtained at:

View File

@@ -1,7 +1,7 @@
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
# Base support function # Base support function
# This file is part of the init.sh project # This file is part of the init.sh project
# Copyright (c) 2019-2021 Geoffray Levasseur <fatalerrors@geoffray-levasseur.org> # Copyright (c) 2019-2022 Geoffray Levasseur <fatalerrors@geoffray-levasseur.org>
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
# This file is distributed under 3-clause BSD license. # This file is distributed under 3-clause BSD license.
# The complete license agreement can be obtained at: # The complete license agreement can be obtained at:

View File

@@ -1,7 +1,7 @@
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
# Various utilitary functions # Various utilitary functions
# This file is part of the init.sh project # This file is part of the init.sh project
# Copyright (c) 2019-2021 Geoffray Levasseur <fatalerrors@geoffray-levasseur.org> # Copyright (c) 2019-2022 Geoffray Levasseur <fatalerrors@geoffray-levasseur.org>
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
# This file is distributed under 3-clause BSD license. # This file is distributed under 3-clause BSD license.
# The complete license agreement can be obtained at: # The complete license agreement can be obtained at:

View File

@@ -1,7 +1,7 @@
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
# Version determination function # Version determination function
# This file is part of the init.sh project # This file is part of the init.sh project
# Copyright (c) 2019-2021 Geoffray Levasseur <fatalerrors@geoffray-levasseur.org> # Copyright (c) 2019-2022 Geoffray Levasseur <fatalerrors@geoffray-levasseur.org>
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
# This file is distributed under 3-clause BSD license. # This file is distributed under 3-clause BSD license.
# The complete license agreement can be obtained at: # The complete license agreement can be obtained at:

View File

@@ -1,7 +1,7 @@
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
# Add local or remote users # Add local or remote users
# This file is part of the init.sh project # This file is part of the init.sh project
# Copyright (c) 2019-2021 Geoffray Levasseur <fatalerrors@geoffray-levasseur.org> # Copyright (c) 2019-2022 Geoffray Levasseur <fatalerrors@geoffray-levasseur.org>
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
# This file is distributed under 3-clause BSD license. # This file is distributed under 3-clause BSD license.
# The complete license agreement can be obtained at: # The complete license agreement can be obtained at:
@@ -13,14 +13,14 @@
# * KDC_SERVER: Kerberos domain controler KADM_SERVER # * KDC_SERVER: Kerberos domain controler KADM_SERVER
# * KADM_SERVER: Administrative Kerberos KADM_SERVER # * KADM_SERVER: Administrative Kerberos KADM_SERVER
# * BASE_DC: Domain in LDAP format # * BASE_DC: Domain in LDAP format
# * LDAP_SERVER: LDAP server # * LDAP_SERVER: LDAP server name or address
# * REMOTE_USERS: List of remote users to add # * REMOTE_USERS: List of remote users to add
# * LOCAL_USERS: List of local users to create # * LOCAL_USERS: List of local users to create
# * REMOVE_USERS: List of username to remove # * REMOVE_USERS: List of username to remove
# * DEFAULT_SHELL: The shell to use when creating new users # * DEFAULT_SHELL: The shell to use when creating new users
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
export VER_authnz=0.2.1 export VER_authnz=0.2.2
export DEP_authnz="upgrade_dist" export DEP_authnz="upgrade_dist"
# Users (from Ldap) # Users (from Ldap)
@@ -35,7 +35,7 @@ add_remote_user()
echo "+$1::::::" >> /etc/passwd echo "+$1::::::" >> /etc/passwd
prnt I "User $1 added to passwd..." prnt I "User $1 added to passwd..."
fi fi
if [[ $(grep "^+$1:" /etc/passwd) ]]; then if [[ $(grep "^+$1:" /etc/shadow) ]]; then
prnt W "The remote user $1 is already connectable, nothing to do in shadow." prnt W "The remote user $1 is already connectable, nothing to do in shadow."
else else
echo "+$1::::::::" >> /etc/shadow echo "+$1::::::::" >> /etc/shadow
@@ -47,8 +47,11 @@ add_remote_user()
remove_user() remove_user()
{ {
if [[ $(grep "^$1:" /etc/{passwd,shadow,group,gshadow}) ]]; then if [[ $(grep "^$1:" /etc/{passwd,shadow,group,gshadow}) ]]; then
# Using sed is more universal than any distro commands # Using sed is more universal than any distro commands - local case
sed -i -e "/^$1:/d" /etc/{passwd,shadow,group,gshadow} sed -i -e "/^$1:/d" /etc/{passwd,shadow,group,gshadow}
elif [[ $(grep "^+$1:" /etc/{passwd,shadow,group,gshadow}) ]]; then
# remote case
sed -i -e "/^+$1:/d" /etc/{passwd,shadow,group,gshadow}
else else
prnt W "User $1 don't exists in auth files, nothing to do." prnt W "User $1 don't exists in auth files, nothing to do."
fi fi
@@ -73,8 +76,8 @@ create_local_user()
# Authentication # Authentication
authnz() authnz()
{ {
backup_dist /etc/passwd /etc/shadow /etc/group backup_dist /etc/{passwd,shadow,group,gshadow}
tag_file /etc/passwd /etc/shadow /etc/group tag_file /etc/{passwd,shadow,group,gshadow}
for usr in $REMOVE_USERS; do for usr in $REMOVE_USERS; do
prnt I "Removing user $usr..." prnt I "Removing user $usr..."
remove_user $usr remove_user $usr
@@ -111,14 +114,13 @@ authnz()
done done
fi fi
if [[ -z $LOCAL_USERS ]]; then if [[ -n $LOCAL_USERS ]]; then
return 0
fi
for usr in $LOCAL_USERS; do for usr in $LOCAL_USERS; do
prnt I "Creating user $usr..." prnt I "Creating user $usr..."
create_local_user $usr create_local_user $usr
done done
fi
NEED_REBOOT=true NEED_REBOOT=true
} }

View File

@@ -1,7 +1,7 @@
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
# Configure locale # Configure locale
# This file is part of the init.sh project # This file is part of the init.sh project
# Copyright (c) 2019-2021 Geoffray Levasseur <fatalerrors@geoffray-levasseur.org> # Copyright (c) 2019-2022 Geoffray Levasseur <fatalerrors@geoffray-levasseur.org>
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
# This file is distributed under 3-clause BSD license. # This file is distributed under 3-clause BSD license.
# The complete license agreement can be obtained at: # The complete license agreement can be obtained at:
@@ -11,7 +11,7 @@
# * LOCALESET: List of locale that will be supported by system # * LOCALESET: List of locale that will be supported by system
# * SYSLOCALE: Default system wide locale # * SYSLOCALE: Default system wide locale
# #
# Both case will be formated in that way (with exemple for French: # Both case will be formated in that way (with exemple for French):
# fr_FR.UTF-8 # fr_FR.UTF-8
# ^ ^ ^ # ^ ^ ^
# | | | # | | |
@@ -20,7 +20,7 @@
# Character table (ISO or UTF) # Character table (ISO or UTF)
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
export VER_conf_locale="0.1.5" export VER_conf_locale="0.1.6"
conf_locale() conf_locale()
{ {
@@ -50,15 +50,16 @@ conf_locale()
locale-gen locale-gen
prnt I "Defining system language..." prnt I "Defining system language..."
[[ -z $SYSLOCALE ]] && if [[ -z $SYSLOCALE ]]; then
export SYSLOCALE=C export SYSLOCALE=C
fi
local sys_fname=/etc/default/locale local sys_fname=/etc/default/locale
backup_dist $sys_fname backup_dist $sys_fname
tag_file $sys_fname tag_file $sys_fname
echo "LANG=$SYSLOCALE" >> $sys_fname echo "LANG=$SYSLOCALE" >> $sys_fname
# We define all LC_* but LC_ALL as recommended by GNU # We define all LC_* but not LC_ALL as recommended by GNU
for cfg in ADDRESS IDENTIFICATION MEASUREMENT MONETARY NAME NUMERIC PAPER \ for cfg in ADDRESS IDENTIFICATION MEASUREMENT MONETARY NAME NUMERIC PAPER \
TELEPHONE TIME; do TELEPHONE TIME; do
echo "LC_$cfg=$SYSLOCALE" >> $sys_fname echo "LC_$cfg=$SYSLOCALE" >> $sys_fname
@@ -68,7 +69,7 @@ conf_locale()
precheck_conf_locale() precheck_conf_locale()
{ {
if [[ -z $LOCALESET ]]; then if [[ -z $LOCALESET ]]; then
prnt W "No locales definition!" prnt W "No locales definition! No locale other than C will be avialable!"
else else
prnt m "Available locales will be: $LOCALESET" prnt m "Available locales will be: $LOCALESET"
fi fi

View File

@@ -1,7 +1,7 @@
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
# Mail system # Mail system
# This file is part of the init.sh project # This file is part of the init.sh project
# Copyright (c) 2019-2021 Geoffray Levasseur <fatalerrors@geoffray-levasseur.org> # Copyright (c) 2019-2022 Geoffray Levasseur <fatalerrors@geoffray-levasseur.org>
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
# This file is distributed under 3-clause BSD license. # This file is distributed under 3-clause BSD license.
# The complete license agreement can be obtained at: # The complete license agreement can be obtained at:
@@ -13,24 +13,24 @@
# * MAIL_RELAY: Name of the mail relay server # * MAIL_RELAY: Name of the mail relay server
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
export VER_conf_mail="0.0.6" export VER_conf_mail="0.0.7"
export DEP_conf_mail="upgrade_dist" export DEP_conf_mail="upgrade_dist"
conf_mail() conf_mail()
{ {
prnt I "Installation de postfix..." prnt I "Installing postfix..."
pkginst postfix pkginst postfix
local pfmain="/etc/postfix/main.cf" local pfmain="/etc/postfix/main.cf"
prnt I "Configuration de postfix..." prnt I "Configuring postfix..."
install_file postfix/main.cf $pfmain install_file postfix/main.cf $pfmain
tag_file $pfmain tag_file $pfmain
sed -i -e "s/@HOSTNAME@/$HOSTNAME/" -e "s/@REALM@/$REALM/" \ sed -i -e "s/@HOSTNAME@/$HOSTNAME/" -e "s/@REALM@/$REALM/" \
-e "s/@MAIL_RELAY@/$MAIL_RELAY/" $pfmain -e "s/@MAIL_RELAY@/$MAIL_RELAY/" $pfmain
tag_file /etc/mailname
echo $HOSTNAME.$REALM > /etc/mailname echo $HOSTNAME.$REALM > /etc/mailname
tag_file /etc/mailname
svc_restart postfix svc_restart postfix
} }
@@ -38,7 +38,7 @@ conf_mail()
precheck_conf_mail() precheck_conf_mail()
{ {
if [[ -z $REALM ]]; then if [[ -z $REALM ]]; then
prnt E "Aucun domaine principal renseigné." prnt E "No main domain configured, can't continue."
die 158 die 158
fi fi
file_must_exists postfix/main.cf file_must_exists postfix/main.cf

View File

@@ -1,7 +1,7 @@
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
# Configure network # Configure network
# This file is part of the init.sh project # This file is part of the init.sh project
# Copyright (c) 2019-2021 Geoffray Levasseur <fatalerrors@geoffray-levasseur.org> # Copyright (c) 2019-2022 Geoffray Levasseur <fatalerrors@geoffray-levasseur.org>
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
# This file is distributed under 3-clause BSD license. # This file is distributed under 3-clause BSD license.
# The complete license agreement can be obtained at: # The complete license agreement can be obtained at:
@@ -111,8 +111,17 @@ precheck_conf_network()
prnt W "No IPv4 interfaces to configure." prnt W "No IPv4 interfaces to configure."
else else
for iface in $IPV4_IFACES; do for iface in $IPV4_IFACES; do
if [[ ! -d /sys/class/net/$iface ]]; then
prnt E "The iface $iface, asked to configure, do not exist!"
die 175
else
if [[ $(grep "up" /sys/class/net/$iface/operstate) ]]; then
prnt W "The IPv4 iface $iface, is already configured, a reboot will be required."
fi
fi
if [[ -z $(eval echo \$NET4_MODE_$iface) ]]; then if [[ -z $(eval echo \$NET4_MODE_$iface) ]]; then
prnt E "Interfaces $iface have no mode set!" prnt E "Interfaces $iface have no mode set!"
die 175
else else
case $(eval echo \$NET4_MODE_$iface) in case $(eval echo \$NET4_MODE_$iface) in
"static") "static")
@@ -140,8 +149,17 @@ precheck_conf_network()
prnt W "No IPv6 interfaces to configure." prnt W "No IPv6 interfaces to configure."
else else
for iface in $IPV6_IFACES; do for iface in $IPV6_IFACES; do
if [[ ! -d /sys/class/net/$iface ]]; then
prnt E "The iface $iface, asked to configure, do not exist!"
die 175
else
if [[ $(grep "up" /sys/class/net/$iface/operstate) ]]; then
prnt W "The IPv6 iface $iface, is already configured, a reboot will be required."
fi
fi
if [[ -z $(eval echo \$NET6_MODE_$iface) ]]; then if [[ -z $(eval echo \$NET6_MODE_$iface) ]]; then
prnt E "Interfaces $iface have no mode set!" prnt E "Interfaces $iface have no mode set!"
die 175
else else
case $(eval echo \$NET6_MODE_$iface) in case $(eval echo \$NET6_MODE_$iface) in
"static") "static")

View File

@@ -1,7 +1,7 @@
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
# Configure NTP # Configure NTP
# This file is part of the init.sh project # This file is part of the init.sh project
# Copyright (c) 2019-2021 Geoffray Levasseur <fatalerrors@geoffray-levasseur.org> # Copyright (c) 2019-2022 Geoffray Levasseur <fatalerrors@geoffray-levasseur.org>
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
# This file is distributed under 3-clause BSD license. # This file is distributed under 3-clause BSD license.
# The complete license agreement can be obtained at: # The complete license agreement can be obtained at:
@@ -11,13 +11,13 @@
# * NTPSERVERS: list of NTP servers # * NTPSERVERS: list of NTP servers
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
export VER_conf_ntp="0.1.5" export VER_conf_ntp="0.1.6"
export DEP_conf_ntp="" export DEP_conf_ntp=""
conf_ntp() conf_ntp()
{ {
if [[ $(pidof systemd) ]]; then if [[ $(pidof systemd) ]]; then
prnt I "Désactivation de Systemd-timesyncd..." prnt I "Disabling Systemd-timesyncd..."
systemctl disable systemd-timesyncd || true systemctl disable systemd-timesyncd || true
fi fi
@@ -26,7 +26,7 @@ conf_ntp()
prnt I "Stopping service ntp..." prnt I "Stopping service ntp..."
svc_stop ntp svc_stop ntp
prnt I "Installation du fichier de configuration de NTP." prnt I "Installing NTP configuration file..."
local dest="/etc/ntp.conf.work" local dest="/etc/ntp.conf.work"
backup_dist /etc/ntp.conf backup_dist /etc/ntp.conf
tag_file $dest tag_file $dest

View File

@@ -11,18 +11,18 @@
# none # none
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
export VER_conf_ssh="0.1.3" export VER_conf_ssh="0.1.4"
export DEP_conf_ssh="upgrade_dist" export DEP_conf_ssh="upgrade_dist"
conf_ssh() conf_ssh()
{ {
prnt I "Installation du serveur OpenSSH..." prnt I "Installing OpenSSH server..."
pkginst openssh-server pkginst openssh-server
prnt I "Arrêt du service SSH..." prnt I "Stopping SSH server service..."
svc_stop ssh svc_stop ssh
prnt I "Installation des fichiers de configuration de SSH..." prnt I "Installating OpenSSH configuration files..."
for f in /etc/ssh/ssh{,d}_config; do for f in /etc/ssh/ssh{,d}_config; do
backup_dist $f backup_dist $f
install_file ssh/$(basename $f) $f install_file ssh/$(basename $f) $f
@@ -30,7 +30,7 @@ conf_ssh()
done done
sed -i -e "s#@SSHD_PERMITROOT_RANGE@#$SSHD_PERMITROOT_RANGE#" /etc/ssh/sshd_config sed -i -e "s#@SSHD_PERMITROOT_RANGE@#$SSHD_PERMITROOT_RANGE#" /etc/ssh/sshd_config
prnt I "Démarrage du sevice ssh..." prnt I "Starting SSH server service..."
svc_start ssh svc_start ssh
} }

View File

@@ -1,7 +1,7 @@
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
# Configure Rsyslog # Configure Rsyslog
# This file is part of the init.sh project # This file is part of the init.sh project
# Copyright (c) 2019-2021 Geoffray Levasseur <fatalerrors@geoffray-levasseur.org> # Copyright (c) 2019-2022 Geoffray Levasseur <fatalerrors@geoffray-levasseur.org>
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
# This file is distributed under 3-clause BSD license. # This file is distributed under 3-clause BSD license.
# The complete license agreement can be obtained at: # The complete license agreement can be obtained at:
@@ -11,12 +11,12 @@
# * SYSLOG_SRV: the syslog server name # * SYSLOG_SRV: the syslog server name
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
export VER_conf_syslog="0.0.4" export VER_conf_syslog="0.0.5"
conf_syslog() conf_syslog()
{ {
local syslogconf=/etc/rsyslog.conf local syslogconf=/etc/rsyslog.conf
prnt I "Configuration de rsyslog..." prnt I "Configuring rsyslog..."
backup_dist $syslogconf backup_dist $syslogconf
install_file rsyslog.conf $syslogconf install_file rsyslog.conf $syslogconf
tag_file $syslogconf tag_file $syslogconf

View File

@@ -1,7 +1,7 @@
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
# Create VBox VM # Create VBox VM
# This file is part of the init.sh project # This file is part of the init.sh project
# Copyright (c) 2019-2021 Geoffray Levasseur <fatalerrors@geoffray-levasseur.org> # Copyright (c) 2019-2022 Geoffray Levasseur <fatalerrors@geoffray-levasseur.org>
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
# This file is distributed under 3-clause BSD license. # This file is distributed under 3-clause BSD license.
# The complete license agreement can be obtained at: # The complete license agreement can be obtained at:
@@ -11,13 +11,13 @@
# To be defined # To be defined
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
export VER_create_vm="0.0.1" export VER_create_vm="0.0.2"
export DEP_create_vm="upgrade_dist install_pkg" export DEP_create_vm="upgrade_dist install_pkg"
create_vm() create_vm()
{ {
if [[ $WITH_VM != "yes" ]]; then if [[ $WITH_VM != "yes" ]]; then
prnt I "Cette machine n'est pas configurée pour la virtualisation, rien à faire." prnt W "That computer is not configured for virtualisation, nothing to do."
return 0 return 0
fi fi
@@ -94,16 +94,16 @@ precheck_create_vm()
{ {
if [[ $WITH_VM == "yes" ]]; then if [[ $WITH_VM == "yes" ]]; then
if [[ -z $VM_NAME ]]; then if [[ -z $VM_NAME ]]; then
prnt E "La machine virtuelle à créer doit avoir un nom." prnt E "The virtual machine must have a name."
die 181 die 181
fi fi
if [[ -z VM_CPU || -z VM_MEM || -z VM_OS || -z VM_ROOT || \ if [[ -z VM_CPU || -z VM_MEM || -z VM_OS || -z VM_ROOT || \
-z VM_BOOT1 || -z VM_BOOT2 || -z VM_BOOT3 || -z VM_VID_MEM || -z VM_BOOT1 || -z VM_BOOT2 || -z VM_BOOT3 || -z VM_VID_MEM ||
-z VM_IF_BRIDGE || -z VM_DISK_SIZE ]]; then -z VM_IF_BRIDGE || -z VM_DISK_SIZE ]]; then
prnt E "Une variable de description de la machine virtuelle n'est pas déclarée !" prnt E "A necessary declaration for the virtual machine is absent!"
die 181 die 181
else else
prnt I "La machine virtuelle \"$VM_NAME\" sera crée dans $VM_ROOT..." prnt I "The virtual machine \"$VM_NAME\" will be created in $VM_ROOT..."
fi fi
local share= i=0 j=0 local share= i=0 j=0
@@ -115,13 +115,13 @@ precheck_create_vm()
done done
unset share unset share
if [[ $i -eq $j ]]; then if [[ $i -eq $j ]]; then
prnt I "La machine virtuelle aura accès à $i répertoires de l'hôte." prnt I "The virtual machine will access $i directories from the host."
else else
prnt E "Le nombre de partage et de chemin à partager diffère !" prnt E "The number of share and path to share is different!"
die 182 die 182
fi fi
else else
prnt I "Aucune machine virtuelle à installer." prnt I "No virtual machine to create."
fi fi
} }

View File

@@ -1,7 +1,7 @@
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
# Hardenning for VM/Cloud kind of machine # Hardenning for VM/Cloud kind of machine
# This file is part of the init.sh project # This file is part of the init.sh project
# Copyright (c) 2019-2021 Geoffray Levasseur <fatalerrors@geoffray-levasseur.org> # Copyright (c) 2019-2022 Geoffray Levasseur <fatalerrors@geoffray-levasseur.org>
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
# This file is distributed under 3-clause BSD license. # This file is distributed under 3-clause BSD license.
# The complete license agreement can be obtained at: # The complete license agreement can be obtained at:
@@ -11,7 +11,7 @@
# * WITH_ROUTING: if yes, kernel routing capabilities will not be disabled # * WITH_ROUTING: if yes, kernel routing capabilities will not be disabled
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
export VER_vm_hardenning="0.0.1" export VER_hardenning_vm="0.0.1"
vm_hardenning() vm_hardenning()
{ {

View File

@@ -3,7 +3,7 @@
# we need a special procedure to install Debian Buster version. # we need a special procedure to install Debian Buster version.
# Consequently that module is *Ubuntu centric. # Consequently that module is *Ubuntu centric.
# This file is part of the init.sh project # This file is part of the init.sh project
# Copyright (c) 2019-2021 Geoffray Levasseur <fatalerrors@geoffray-levasseur.org> # Copyright (c) 2019-2022 Geoffray Levasseur <fatalerrors@geoffray-levasseur.org>
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
# This file is distributed under 3-clause BSD license. # This file is distributed under 3-clause BSD license.
# The complete license agreement can be obtained at: # The complete license agreement can be obtained at:

View File

@@ -2,7 +2,7 @@
# Install desktop environment -- Ubuntu only # Install desktop environment -- Ubuntu only
# Debian version might ask for task-$FLAVOR # Debian version might ask for task-$FLAVOR
# This file is part of the init.sh project # This file is part of the init.sh project
# Copyright (c) 2019-2021 Geoffray Levasseur <fatalerrors@geoffray-levasseur.org> # Copyright (c) 2019-2022 Geoffray Levasseur <fatalerrors@geoffray-levasseur.org>
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
# This file is distributed under 3-clause BSD license. # This file is distributed under 3-clause BSD license.
# The complete license agreement can be obtained at: # The complete license agreement can be obtained at:

View File

@@ -1,7 +1,7 @@
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
# Install check_mk agent using xinetd superserver # Install check_mk agent using xinetd superserver
# This file is part of the init.sh project # This file is part of the init.sh project
# Copyright (c) 2019-2021 Geoffray Levasseur <fatalerrors@geoffray-levasseur.org> # Copyright (c) 2019-2022 Geoffray Levasseur <fatalerrors@geoffray-levasseur.org>
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
# This file is distributed under 3-clause BSD license. # This file is distributed under 3-clause BSD license.
# The complete license agreement can be obtained at: # The complete license agreement can be obtained at:

View File

@@ -1,7 +1,7 @@
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
# Install or remove packages # Install or remove packages
# This file is part of the init.sh project # This file is part of the init.sh project
# Copyright (c) 2019-2021 Geoffray Levasseur <fatalerrors@geoffray-levasseur.org> # Copyright (c) 2019-2022 Geoffray Levasseur <fatalerrors@geoffray-levasseur.org>
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
# This file is distributed under 3-clause BSD license. # This file is distributed under 3-clause BSD license.
# The complete license agreement can be obtained at: # The complete license agreement can be obtained at:

View File

@@ -8,11 +8,12 @@
# https://opensource.org/licenses/BSD-3-Clause # https://opensource.org/licenses/BSD-3-Clause
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
export VER_install_profile="0.0.6" export VER_install_profile="0.0.7"
export DEP_install_profile="install_pkg" export DEP_install_profile="install_pkg"
install_profile() install_profile()
{ {
prnt I "Installing ansi_shadow font for figlet..."
install_file profile/ansi_shadow.flf /usr/share/figlet/ansi_shadow.flf install_file profile/ansi_shadow.flf /usr/share/figlet/ansi_shadow.flf
local usrlist="/root" local usrlist="/root"
@@ -21,6 +22,7 @@ install_profile()
fi fi
for usr in $usrlist; do for usr in $usrlist; do
prnt I "Installing profile for user $usr..."
backup_dist $usr/{.,}profile $usr/.bashrc backup_dist $usr/{.,}profile $usr/.bashrc
install_file profile/{{.,}profile,.bashrc} $usr/ install_file profile/{{.,}profile,.bashrc} $usr/
tag_file $usr/{{.,}profile,.bashrc} tag_file $usr/{{.,}profile,.bashrc}
@@ -29,6 +31,7 @@ install_profile()
done done
unset usrlist unset usrlist
prnt I "Installing motd..."
backup_dist /etc/motd backup_dist /etc/motd
install_file profile/motd /etc/motd install_file profile/motd /etc/motd
tag_file /etc/motd tag_file /etc/motd
@@ -36,7 +39,7 @@ install_profile()
precheck_install_profile() precheck_install_profile()
{ {
file_must_exists profile/{{.,}profile,.bashrc,.tmux/.tmux.conf{,.local}} file_must_exists profile/{motd,{.,}profile,.bashrc,.tmux/.tmux.conf{,.local}}
} }
export -f install_profile export -f install_profile

View File

@@ -1,19 +1,20 @@
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
# SNMP monitoring conf # SNMP monitoring conf
# This file is part of the init.sh project # This file is part of the init.sh project
# Copyright (c) 2019-2021 Geoffray Levasseur <fatalerrors@geoffray-levasseur.org> # Copyright (c) 2019-2022 Geoffray Levasseur <fatalerrors@geoffray-levasseur.org>
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
# This file is distributed under 3-clause BSD license. # This file is distributed under 3-clause BSD license.
# The complete license agreement can be obtained at: # The complete license agreement can be obtained at:
# https://opensource.org/licenses/BSD-3-Clause # https://opensource.org/licenses/BSD-3-Clause
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
export VER_patch_snmp="0.1.1" export VER_patch_snmp="0.1.2"
export DEP_patch_snmp="install_pkg" export DEP_patch_snmp="install_pkg"
patch_snmp() patch_snmp()
{ {
pkginst snmpd pkginst snmpd
prnt I "Configuring SNMP daemon..."
backup_dist /etc/snmp/snmpd.conf /etc/default/snmpd \ backup_dist /etc/snmp/snmpd.conf /etc/default/snmpd \
/lib/systemd/system/snmpd.service /etc/init.d/snmpd /lib/systemd/system/snmpd.service /etc/init.d/snmpd
install_file snmpd/snmpd.conf /etc/snmp/snmpd.conf install_file snmpd/snmpd.conf /etc/snmp/snmpd.conf

View File

@@ -1,24 +1,24 @@
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
# Set system wide proxy if on the good network # Set system wide proxy if on the good network
# This file is part of the init.sh project # This file is part of the init.sh project
# Copyright (c) 2019-2021 Geoffray Levasseur <fatalerrors@geoffray-levasseur.org> # Copyright (c) 2019-2022 Geoffray Levasseur <fatalerrors@geoffray-levasseur.org>
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
# This file is distributed under 3-clause BSD license. # This file is distributed under 3-clause BSD license.
# The complete license agreement can be obtained at: # The complete license agreement can be obtained at:
# https://opensource.org/licenses/BSD-3-Clause # https://opensource.org/licenses/BSD-3-Clause
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
export VER_select_system_proxy="0.0.3" export VER_select_system_proxy="0.0.5"
export DEP_select_system_proxy="upgrade_dist" export DEP_select_system_proxy="upgrade_dist"
select_system_proxy() select_system_proxy()
{ {
if [[ -e /etc/apt/apt.conf.d/00proxy ]]; then if [[ -e /etc/apt/apt.conf.d/00proxy || -n $http_proxy ]]; then
prnt I "Configuration proxy trouvé, on ajoute le switch." prnt I "Proxy configuration found, adding the switcher for laptops."
backupdist /etc/rc.local backupdist /etc/rc.local
appendfile proxy.rc.local /etc/rc.local appendfile proxy.rc.local /etc/rc.local
else else
prnt I "Pas de configurtion proxy, rien à faire." prnt I "No proxy configuration set, nothing to do."
fi fi
NEED_REBOOT=true NEED_REBOOT=true
} }