Ceci est l'article sur le 9ème jour du Calendrier de l'Avent de l'ingénieur 2019.
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.
OS: Windows10 Vagrant, VirtualBox, Cmder sont utilisés, donc téléchargez Veuillez l'installer.
Ce script automatise une série de tâches pour créer un environnement virtuel à l'aide de vagrant et virtualbox. Comme un flux
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.
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
$ 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.
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
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».
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
\ $ 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é.
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.
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