Automatisez la construction d'environnement avec ShellScript

Ceci est l'article sur le 9ème jour du Calendrier de l'Avent de l'ingénieur 2019.

introduction

J'ai touché au script qui sauvegarde le serveur de l'entreprise et je voulais faire quelque chose moi-même. De plus, je pense que c'est un gaspillage pour les débutants de trébucher lors de la construction d'un environnement, alors j'aimerais que vous l'utilisiez si vous le souhaitez. Source

J'espère que vous comprendrez plus si vous lisez cet article avec la source.

environnement

OS: Windows10 Vagrant, VirtualBox, Cmder sont utilisés, donc téléchargez Veuillez l'installer.

Description du script

Ce script automatise une série de tâches pour créer un environnement virtuel à l'aide de vagrant et virtualbox. Comme un flux

  1. Création d'un répertoire
  2. Exécutez vagrant init
  3. Réécriture de Vagranfile
  4. Créez le script requis pour l'approvisionnement vagrant
  5. Courez vagabond est.

Deux arguments sont nécessaires pour exécuter le script. L'un est le nom du répertoire L'autre est le type de machine virtuelle.

1. Création d'un répertoire

Tout d'abord, créez un fichier pour stocker le Vagrantfile. Dans mon cas, j'ai créé un répertoire appelé C: \ Users \ username \ VM comme répertoire ROOT, et j'ai créé le répertoire reçu comme argument.

setup.sh


DIR_NAME=$1

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

Commentaire

$ HOME / VM est assigné à la variable ROOT_DIR. Ce $ HOME / VM signifie C: \ Users \ username \ VM.

DIR_NAME=$1

Ce «$ 1» est le premier argument. Si vous exécutez la commande sh setup.sh aaa, $ 1 contiendra ʻaaa`. De plus, comme nous le verrons plus tard, il existe également «$ 2» et «$ 3», qui représentent respectivement les deuxième et troisième arguments.

if [ ! -d "$DIR_NAME" ]; then
	//En traitement
fi

L'instruction if ici consiste à créer le répertoire si aucun nom de répertoire n'est reçu en argument. -d vérifie l'existence d'un répertoire.

2. Exécutez vagrant init et réécrivez Vagrantfile

Exécutez vagrant init dans le répertoire que vous venez de créer pour créer un Vagrantfile. La boîte est également spécifiée au moment de l'initialisation. La boîte que j'utilise est bento / CentOS 7.5. (Veuillez modifier ici si nécessaire.)

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

Commentaire

Le Vagranfile est réécrit dans l'instruction if. Le port avant est spécifié en haut. L'adresse IP du réseau public est spécifiée au milieu. L'adresse IP change en fonction du nombre de répertoires obtenus par la fonction count_dir. (Je pensais que cette fonctionnalité était nécessaire au début, mais je n'y ai pas pensé.) Enfin, j'ai ajouté une ligne qui utilise «disposition vagabond».

3. Préparation de provision.sh

Enfin, créez provision.sh. Dans provision.sh, décrivez ce que vous voulez exécuter lorsque vous vagabondez. Dans le script, il y a common.sh, qui décrit les commandes courantes à exécuter sur n'importe quelle machine, et un script, qui décrit les commandes à exécuter dans chaque environnement. Créez provision.sh en combinant ce common.sh avec le script à exécuter dans chaque environnement.

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

Commentaire

\ $ ENV_TYPE contient le type de machine virtuelle spécifié par le deuxième argument. (Actuellement en développement uniquement) Si \ $ ENV_TYPE est dev, le script sera copié à partir du dossier spécifié.

5. Courez vagabond

Tout ce que vous avez à faire est de courir vagabond. Exécutez la commande décrite dans provision.sh créée précédemment lorsque vagrant up est effectué pour configurer la machine virtuelle.

finalement

Ce qui précède est le flux général du script d'automatisation de la construction de l'environnement créé cette fois. J'ai créé ce script pour le plaisir et l'étude, mais j'espère que les débutants qui trébuchent sur la construction d'environnements pourront profiter de la programmation avec.

Je pense que c'est difficile à comprendre avec une phrase enfantine. Si vous avez des questions, laissez un commentaire.

Recommended Posts

Automatisez la construction d'environnement avec ShellScript
Commencez avec Python! ~ ① Construction de l'environnement ~
Construction de l'environnement Ruby avec AWS EC2
Construction d'un environnement Jupyter facile avec Cloud9
Construction de l'environnement Python3 avec pyenv-virtualenv (CentOS 7.3)
Utilisation de Chainer avec CentOS7 [Construction de l'environnement]
Construction de l'environnement pytorch @ python3.8 avec pipenv
Créer un environnement avec pyenv et pyenv-virtualenv
[Ubuntu 18.04] Créer un environnement Python avec pyenv + pipenv
Vue.js + Mémorandum de construction de l'environnement Flask ~ avec Anaconda3 ~
Gérez les générations de rotation des journaux avec un script shell.
Un mémo rempli de construction d'environnement RADEX
Entendons-nous bien avec Python # 0 (Construction de l'environnement)
Construction de l'environnement Django
Construction de l'environnement DeepIE3D
Construction d'environnement basée sur Emacs
Construction d'environnement (python)
construction d'environnement django
Construction de l'environnement CodeIgniter
construction d'environnement python
Python - Construction de l'environnement
Variables shell, variables d'environnement
Construction de l'environnement Python
Construction de l'environnement Golang
Construction de l'environnement de word2vec
Collecter des informations depuis Twitter avec Python (construction de l'environnement)
Construire un environnement d'analyse avec Docker (jupyter notebook + PostgreSQL)
Construction de l'environnement MacOS 10.11: Powerline avec Anaconda et Dein.vim
Afficher les prévisions météorologiques du jour avec le script shell
Effacer et générer des fichiers de numéro de série avec un script shell
[0] Construction de l'environnement TensorFlow-GPU avec Anaconda sur Ubuntu
Construction d'environnement Poetry-virtualenv avec python de centos-sclo-rh ~ Notes
Premier python ① Construction de l'environnement avec pythonbrew & Hello World !!
De la construction d'environnement Python à la construction d'environnement virtuel avec anaconda
Construction d'environnement virtuel avec Docker + Flask (Python) + notebook Jupyter
Exécuter périodiquement un script python avec cron dans un environnement venv
Construction de l'environnement: GCP + Docker
Construction de l'environnement du projet Django
Mémo de construction de l'environnement ConoHa
[Python] Construction de l'environnement OpenCV avec Docker (cv2.imshow () fonctionne également)
construction d'environnement python homebrew
De Kafka à KSQL - Construction d'environnement facile avec docker
Construction d'environnements liés à PyData
Construction de l'environnement Anaconda-4.2.0-python3 (Mac)
Construction de l'environnement de développement Python
Construction d'un environnement d'analyse de données avec Python (notebook IPython + Pandas)
Remplacer la commande dans le script shell
Grattage avec coquille tremblante
Construction de l'environnement YOLO v4 ①
Construction de l'environnement de contrôle à distance Pepper-kun avec Docker + IPython Notebook
environnement python avec docker-compose
construction de l'environnement pyenv + fish
Construction de l'environnement de développement python2.7