[LINUX] Automatisieren Sie die Umgebungserstellung mit ShellScript

Dies ist der Artikel am 9. Tag von Engineer Advent Calendar 2019.

Einführung

Ich habe das Skript berührt, das den Server des Unternehmens sichert, und wollte selbst etwas erstellen. Ich denke auch, dass es für Anfänger eine Verschwendung ist, beim Aufbau einer Umgebung zu stolpern. Ich möchte, dass Sie dies verwenden, wenn Sie möchten. Quelle

Ich hoffe, Sie werden mehr verstehen, wenn Sie diesen Artikel zusammen mit der Quelle lesen.

Umgebung

OS: Windows10 Vagrant, VirtualBox, Cmder werden verwendet. Laden Sie sie herunter Bitte installieren Sie es.

Skriptbeschreibung

Dieses Skript automatisiert eine Reihe von Aufgaben zum Erstellen einer virtuellen Umgebung mit Vagrant und Virtualbox. Als Fluss

  1. Erstellen Sie ein Verzeichnis
  2. Führen Sie vagrant init aus
  3. Vagranfile umschreiben
  4. Erstellen Sie das Skript, das für die Bereitstellung von Vagabunden erforderlich ist
  5. Vagabund hochlaufen lassen ist.

Zum Ausführen des Skripts sind zwei Argumente erforderlich. Einer ist der Name des Verzeichnisses Der andere ist der Typ der virtuellen Maschine.

1. Erstellen Sie ein Verzeichnis

Erstellen Sie zunächst eine Datei zum Speichern der Vagrant-Datei. In meinem Fall habe ich ein Verzeichnis mit dem Namen "C: \ Benutzer \ Benutzername \ VM" als ROOT-Verzeichnis erstellt und das als Argument empfangene Verzeichnis erstellt.

setup.sh


DIR_NAME=$1

cd $ROOT_DIR
if [ ! -d "$DIR_NAME" ]; then
  mkdir $ROOT_DIR/$DIR_NAME
fi

Kommentar

$ HOME / VM ist der Variablen ROOT_DIR zugeordnet. Dieses $ HOME / VM steht für C: \ Users \ username \ VM.

DIR_NAME=$1

Dieses "$ 1" ist das erste Argument. Wenn Sie den Befehl "sh setup.sh aaa" ausführen, wird "aaa" in "$ 1" eingegeben. Wie wir später sehen werden, gibt es auch "$ 2" und "$ 3", die das zweite bzw. dritte Argument darstellen.

if [ ! -d "$DIR_NAME" ]; then
	//wird bearbeitet
fi

Die if-Anweisung hier dient zum Erstellen des Verzeichnisses, wenn kein Verzeichnisname als Argument empfangen wurde. -d prüft, ob ein Verzeichnis vorhanden ist.

2. Führen Sie vagrant init aus und schreiben Sie Vagrantfile neu

Führen Sie "vagrant init" in dem Verzeichnis aus, das Sie gerade erstellt haben, um eine Vagrant-Datei zu erstellen. Box wird auch zum Zeitpunkt der Init angegeben. Die Box, die ich benutze, ist Bento / CentOS 7.5. (Bitte ändern Sie hier nach Bedarf.)

setup.sh


count_dir

cd $ROOT_DIR/$DIR_NAME

vagrant init bento/centos-7.5

if [ -f Vagrantfile ]; then
  sed -i '31a \  config.vm.network "forwarded_port" ,guest: 80, host: 8080, host_ip: "127.0.0.1"' Vagrantfile
  sed -i '35a \  config.vm.network "private_network", ip: "192.168.33.10"\n  config.vm.network :public_network, ip: "192.168.11.'$((100+$COUNT))'", bridged: "en1: Wi-Fi(AirPort)"' Vagrantfile
  sed -i '69a \  config.vm.provision "shell", :path => "provision.sh", :privileged => false' Vagrantfile
fi

Kommentar

Das Vagranfile wird in der if-Anweisung neu geschrieben. Der Forward-Port wird oben angegeben. Die IP-Adresse für das öffentliche Netzwerk wird in der Mitte angegeben. Die IP-Adresse ändert sich entsprechend der Anzahl der Verzeichnisse, die von der Funktion "count_dir" abgerufen werden. (Ich dachte, diese Funktion wäre am Anfang notwendig, aber ich habe nicht darüber nachgedacht.) Schließlich habe ich eine Zeile hinzugefügt, in der "vagabundierende Bestimmungen" verwendet werden.

3. Vorbereitung der Bereitstellung.sh

Erstellen Sie schließlich provision.sh. Beschreiben Sie in provision.sh, was Sie ausführen möchten, wenn Sie vagabundieren. Innerhalb des Skripts gibt es common.sh, das allgemeine Befehle beschreibt, die auf jedem Computer ausgeführt werden sollen, und ein Skript, das Befehle beschreibt, die in jeder Umgebung ausgeführt werden sollen. Erstellen Sie provision.sh, indem Sie diese common.sh mit dem Skript kombinieren, das in jeder Umgebung ausgeführt werden soll.

setup.sh


case "$ENV_TYPE" in
    "dev") cp -p $DEV/development.sh provision.sh.org ;;
    *) ERROR_NUM=5
        get_errormessages
        exit ;;
esac

if [ -f provision.sh.org ]; then
	cp -p $COMMON/common.sh common.sh
	cp -p $COMMON/end.sh end.sh
	cat common.sh provision.sh.org end.sh > provision.sh
	rm common.sh provision.sh.org end.sh
fi

Kommentar

\ $ ENV_TYPE enthält den Typ der virtuellen Maschine, der durch das zweite Argument angegeben wird. (Derzeit nur Entwickler) Wenn \ $ ENV_TYPE dev ist, wird das Skript aus dem angegebenen Ordner kopiert.

5. Vagabund hochlaufen lassen

Alles, was Sie tun müssen, ist Vagabund zu laufen. Führen Sie den in provision.sh beschriebenen Befehl aus, der zuvor erstellt wurde, wenn vagrant up ausgeführt wird, um die virtuelle Maschine einzurichten.

Schließlich

Das Obige ist der allgemeine Ablauf des diesmal erstellten Skripts zur Automatisierung der Umgebungskonstruktion. Ich habe dieses Skript zum Spaß und zum Lernen erstellt, aber ich hoffe, dass Anfänger, die über die Erstellung von Umgebungen stolpern, Spaß daran haben können, damit zu programmieren.

Ich denke, es ist schwer mit einem kindischen Satz zu verstehen. Wenn Sie Fragen haben, hinterlassen Sie bitte einen Kommentar.

Recommended Posts

Automatisieren Sie die Umgebungserstellung mit ShellScript
Beginnen Sie mit Python! ~ ① Umweltbau ~
Ruby-Umgebungskonstruktion mit aws EC2
Einfache Jupyter-Umgebungskonstruktion mit Cloud9
Python3-Umgebungskonstruktion mit pyenv-virtualenv (CentOS 7.3)
Verwenden von Chainer mit CentOS7 [Umgebungskonstruktion]
pytorch @ python3.8 Umgebungskonstruktion mit pipenv
Erstellen einer Umgebung mit pyenv und pyenv-virtualenv
[Ubuntu 18.04] Erstellen Sie eine Python-Umgebung mit pyenv + pipenv
Vue.js + Konstruktionsmemorandum zur Flaschenumgebung ~ mit Anaconda3 ~
Verwalten Sie Protokollrotationsgenerationen mit einem Shell-Skript.
Ein Memo mit RADEX-Umgebungskonstruktion
Kommen wir zu Python # 0 (Umgebungskonstruktion)
Django Umweltbau
DeepIE3D-Umgebungskonstruktion
Emacs-basierte Umgebungskonstruktion
Umgebungskonstruktion (Python)
Django Umweltbau
CodeIgniter-Umgebungskonstruktion
Python-Umgebungskonstruktion
Python - Umgebungskonstruktion
Shell-Variablen, Umgebungsvariablen
Aufbau einer Python-Umgebung
Golang Umweltbau
Umgebungskonstruktion von word2vec
Sammeln von Informationen von Twitter mit Python (Umgebungskonstruktion)
Erstellen einer Analyseumgebung mit Docker (Jupyter Notebook + PostgreSQL)
Aufbau einer MacOS 10.11-Umgebung: Powerline mit Anaconda und Dein.vim
Zeigen Sie die heutige Wettervorhersage mit Shell-Skript an
Löschen und generieren Sie Seriennummerndateien mit einem Shell-Skript
[0] TensorFlow-GPU-Umgebungskonstruktion, die mit Anaconda unter Ubuntu erstellt wurde
Poetry-Virtualenv-Umgebungskonstruktion mit Centos-Sclo-Rh-Python ~ Hinweise
Erste Python ① Umgebungskonstruktion mit Pythonbrew & Hello World !!
Von der Python-Umgebungskonstruktion zur virtuellen Umgebungskonstruktion mit Anaconda
Aufbau einer virtuellen Umgebung mit Docker + Flask (Python) + Jupyter-Notebook
Führen Sie regelmäßig ein Python-Skript mit cron in einer venv-Umgebung aus
Umgebungskonstruktion: GCP + Docker
Bau der Django-Projektumgebung
ConoHa Umweltbau Memo
[Python] OpenCV-Umgebungskonstruktion mit Docker (cv2.imshow () funktioniert auch)
Homebrew Python Umgebung Konstruktion
Von Kafka bis KSQL - Einfache Umgebungskonstruktion mit Docker
PyData-bezogene Umgebungskonstruktion
Aufbau einer Anaconda-4.2.0-Python3-Umgebung (Mac)
Aufbau einer Python-Entwicklungsumgebung
Aufbau einer Datenanalyseumgebung mit Python (IPython Notebook + Pandas)
Befehl im Shell-Skript ersetzen
Schaben mit kratzender Schale
YOLO v4 Umgebungskonstruktion ①
Aufbau einer Pepper-Kun-Fernbedienungsumgebung mit Docker + IPython Notebook
Python-Umgebung mit Docker-Compose
Bau von Pyenv + Fischumwelt
python2.7 Konstruktion der Entwicklungsumgebung