Skrypt bash a ansible - czy modułowe playbooki pomogą w tym przypadku?

0

Zrobiłem sobie skrypty basha do konfiguracji stacji roboczej
https://github.com/lazyspot/installation-and-configuration-scripts/tree/master/Linux/CentOS/Full-Instaions-scripts
Czy dobrze czy źle nie wiem ale działa

Czy w takim przypadku zastosowanie ansible + teraforma do budowania takich maszyn oraz testowania takich skryptów ma sens?
Czy robienie playbooków (modułowych bo tutaj jest to podzielone na moduły) ma sens?

Nie chcę pakować się w narzędzia które nie są proste w obsłudze

0

Terraform do konfiguracji lokalnej maszyny? Przecież to nie ma najmniejszego sensu. Teoretycznie można użyć Ansible, ale poprawiając twój skrypt używając funkcji i/lub innych rozwiązań shellowych można uzyskać podobny efekt przy zachowaniu IMHO większej przejrzystości. Dodatkowo będziesz uzależniony tylko od Basha a nie od Pythona czy instalacji Ansible zanim zaczniesz cokolwiek robić.

Więc o ile ja bym ten skrypt napisał zupełnie inaczej, to nie widzę z nim problemu.

0

Bardzo chętnie przyjmę krytykę mojego skryptu i uzasadnienie dlaczego powinienem go napisać lepiej

0
  1. Można to napisać w Bashu, ale nie wiem czy Makefile + skrypty nie byłoby prostsze.
  2. Tablice w Bashu to naprawdę fajne narzędzie.
  3. Zamiast zamieniać line-ending w skrypcie, czemu nie składować tych plików od razu z poprawnymi (tylko Unix EOL jest poprawne).
  4. Zamiast używać nazw katalogów w skryptach nazwij je odpowiednio np. install.sh oraz configure.sh, wtedy dodawanie i usuwanie nowych wpisów będzie super łatwe.

Wtedy masz skrypt instalacyjny:

#!/usr/bin/env bash

SCRIPT_PATH="$(dirname $0)/.."

# Fail as soon as there is problem
set -eo pipefail

if [ -e "$TOOLS" ]; do
  # Set defaults
  TOOLS=(git rstudio etc)
fi

try_run() {
  file="$SCRIPT_PATH/$2/$1.sh"
  if [ -f "$file" ]; do
    echo "$1 $2"
    echo "-----------------"
    bash "$file"
  fi
}

for tool in ${TOOLS[*]}
do
  try_run install "$tool"
  try_run configure "$tool"
done

W ten sposób masz możliwość łatwej konfiguracji co ma być zainstalowane (poprzez tablicę TOOLS) oraz zdecydowanie bardziej przejrzysty sposób definiowania nowych narzędzi.

Jak chcesz jednak pójść jeszcze dalej to polecam zobaczyć narzędzia jak GNU Stow, lub jeszcze bardziej Nix oraz home-manager. To ostatnie to już zupełnie inna liga.

0

Mam skrypty do ubuntu
https://github.com/lazyspot/installation-and-configuration-scripts/tree/master/Linux/Ubuntu
Mam zrobić skrypt który tworzy tablice tablic:
-install-dependency.sh
-install-dependency-optional.sh
-install.sh
następnie wywoła pętle po dwóch tablicach i zrobić każdy skrypt

1 użytkowników online, w tym zalogowanych: 0, gości: 1