86 lines
3.9 KiB
Markdown
86 lines
3.9 KiB
Markdown
|
# server-config
|
||
|
|
||
|
Am Einfachsten ist es, das github-Repo zu forken und in .gitconfig den Namen und die Emailadresse an die eigenen Werte anzupassen. Das Repo ist öffentlich, also keine Passwörter speicher!!!
|
||
|
|
||
|
.gitconfig wird von diesem Repo beim Einrichten nach ~/.gitconfig gelinkt. Bitte beachten, dass damit eine schon vorhandene eigene Datei überschrieben wird!
|
||
|
|
||
|
Soll ein Proxy zum Einsatz kommen, so ist dieser mittels
|
||
|
```
|
||
|
git config http.proxy "http://proxy.to.use:prot/"
|
||
|
```
|
||
|
local für jedes Repo zu konfigurieren. Die globale gitconfig für den User wird auf allen eingesetzten Instanzen verteilt und versioniert!
|
||
|
|
||
|
## Installation
|
||
|
Damit auf einem neuen Server meine persönlichen Alias und Bash-Promt, wie auch verschiedene andere Befehle (vim in sudo mit der vimrc des Benutzers) zur Verfügung stehen, muss als erstes nach dem ersten Login folgendes ausgeführt werden:
|
||
|
|
||
|
Download von github
|
||
|
```
|
||
|
curl -o bashrc\_add "https://raw.githubusercontent.com/xundeenergie/server-config/master/bashrc\_add"
|
||
|
```
|
||
|
oder Download von git.schuerz.at
|
||
|
```
|
||
|
curl -o bashrc\_add "https://git.schuerz.at/?p=server-config.git;a=blob\_plain;f=bashrc\_add;hb=HEAD"
|
||
|
```
|
||
|
|
||
|
## Lokale Configuration
|
||
|
in ~/.bashrc werden vor der Zeile zum Einbinden der Serverconfig die Variablen eingefügt um damit ein hostspezifisches Verhalten zu steuern
|
||
|
MYSHELLCONFIG\_GIT\_CHECKOUTSCRIPT\_OPTIONS=
|
||
|
Mögliche Optionen:
|
||
|
* -h
|
||
|
Verwendung: Damit kann man angeben, ob ein headless Repo erzeugt wird. Ohne -h folgt das Repo origin/master
|
||
|
MYSHELLCONFIG\_GIT\_REMOTE\_PROTOCOL=git # git ist default
|
||
|
MYSHELLCONFIG\_GIT\_REMOTE\_PUSH\_PROTOCOL=$MYSHELLCONFIG\_GIT\_REMOTE\_PROTOCOL # MYSHELLCONFIG\_GIT\_REMOTE\_PROTOCOL ist default
|
||
|
Mögliche Optionen:
|
||
|
* git - (default) Gitprotokoll ist git (Auf manchen Umgebungen kann der dazu notwenidge Port gesperrt sein)
|
||
|
* http - wenn git nicht möglich ist, kann das http/https Protokoll verwendet werden. (ist langsamer als git, jedoch ist fast überall Port 80 oder 440 freigeschaltet)
|
||
|
* ssh - Wenn auch schreibend auf das Repo zugegriffen werden soll, so muss Privatekey, Pubkey (und wenn konfiguriert Certifikate mit den notwendigen Principals) vorhanden sein, dann kann das ssh-Prodokoll verwendet werden.
|
||
|
|
||
|
|
||
|
## Einbinden von bashrc\_add in die bash
|
||
|
|
||
|
Die Default .bashrc muss am Ende um folgende Zeilen ergänzt werden:
|
||
|
```
|
||
|
vi .bashrc
|
||
|
|
||
|
# User specific aliases and function
|
||
|
[ -f bashrc\_add ] && . bashrc\_add
|
||
|
```
|
||
|
damit diese heruntergeladene Datei beim nächsten Login oder aufruf von bash gesourced wird.
|
||
|
Diese Datei clont dieses Repo nach $HOME oder pullt es, wenn das Repo schon vorhanden ist.
|
||
|
|
||
|
Damit ist auch schon alles erledigt
|
||
|
|
||
|
# Über ~/.bashrc manuell festlegbare Variablen und ihre Default-Werte, wenn nicht manuell gesetzt:
|
||
|
MYSHELLCONFIG\_SUBPATH=server-config
|
||
|
MYSHELLCONFIG\_BASE="${HOME}/${MYSHELLCONFIG\_SUBPATH}"
|
||
|
MYSHELLCONFIG\_LOGDIR="${MYSHELLCONFIG\_BASE}/logs"
|
||
|
MYSHELLCONFIG\_LOGFILE="${MYSHELLCONFIG\_LOGDIR}/git.log"
|
||
|
MYSHELLCONFIG\_GIT\_TIMEOUT=5s
|
||
|
|
||
|
MYSHELLCONFIG\_GIT\_SERVER="git.schuerz.at"
|
||
|
MYSHELLCONFIG\_GIT\_REPO\_NAME="server-config.git"
|
||
|
MYSHELLCONFIG\_GIT\_REPO\_PATH\_HTTP="/public/"
|
||
|
MYSHELLCONFIG\_GIT\_REPO\_PATH\_SSH=":public/"
|
||
|
MYSHELLCONFIG\_GIT\_REPO\_PATH\_GIT="/public/"
|
||
|
|
||
|
|
||
|
# Modifizierung mit Skript
|
||
|
Wenn das auf mehreren Hosts ausgeführt werden muss, kann man auch das in diesem Repo in bin abgelegte Skript configserver.sh verwenden.
|
||
|
Am besten dieses Skript nach ${HOME}/bin kopieren und ausführbar machen.
|
||
|
|
||
|
```
|
||
|
cp bin/configserver.sh ${HOME}/bin
|
||
|
chmod +x ${HOME}/bin/configserver.sh
|
||
|
```
|
||
|
|
||
|
Usage:
|
||
|
configserver.sh [<username>@]<hostname> [port] [ssh-options]
|
||
|
|
||
|
ein Hostname muss angegeben werden
|
||
|
Wenn kein Username angegeben wird, fragt das Skript nach einem Username. Ist der Username leer, bricht das Programm ab.
|
||
|
|
||
|
Wenn kein Port angegeben wird, wird der Standardport 22 verwendet.
|
||
|
|
||
|
Weitere ssh-Optionen sind wie in der Notation für ssh anzugeben.
|
||
|
z.B.: -i /path/to/private.key -o https://git.ebcont.com/jakobus.schuerz/server-config.git
|