summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore6
-rw-r--r--README.md7
-rwxr-xr-xcreatevm22
-rw-r--r--id_rsa.pub1
-rw-r--r--main.tf54
-rwxr-xr-xset-hostname4
-rw-r--r--variables.tf13
7 files changed, 107 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..0cc325e
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,6 @@
+terraform.tfstate
+terraform.tfstate.backup
+virtualbox.box
+.terraform
+.terraform.lock.hcl
+
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..a9ccb80
--- /dev/null
+++ b/README.md
@@ -0,0 +1,7 @@
+# Vbox_terraform - README
+
+## Pour installer terraform sur Linux :
+
+ wget https://releases.hashicorp.com/terraform/1.2.9/terraform_1.2.9_linux_amd64.zip
+ unzip terraform_1.2.9_linux_amd64.zip
+ mv terraform /usr/local/bin
diff --git a/createvm b/createvm
new file mode 100755
index 0000000..509fd90
--- /dev/null
+++ b/createvm
@@ -0,0 +1,22 @@
+#!/bin/bash
+
+# Premier numero de la série
+index=3
+# Nombre de machines
+count=1
+
+# Déploiment terraform
+terraform init -reconfigure
+terraform plan
+terraform apply -var "nb=$count" -var "start=$index" -auto-approve
+
+sleep 5
+
+# On copie notre clé publique et on met à jour le hostname des machines
+for ((i=$index;i<$((index+count));i++));do
+vm=ubuntu$i
+vboxmanage guestcontrol $vm --username vagrant --password vagrant copyto id_rsa.pub /home/vagrant/.ssh/authorized_keys
+vboxmanage guestcontrol $vm --username vagrant --password vagrant copyto set-hostname /home/vagrant/set-hostname
+vboxmanage guestcontrol $vm --username vagrant --password vagrant run /usr/bin/bash /home/vagrant/set-hostname $vm
+done
+
diff --git a/id_rsa.pub b/id_rsa.pub
new file mode 100644
index 0000000..52824c0
--- /dev/null
+++ b/id_rsa.pub
@@ -0,0 +1 @@
+ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQClwRlgv2C0slInlOALIuBrjOnnUzqPqvR9k6JUQks4ICPu61weOgYghAsfrna83mZUtBOc6nkhDAMRFdSCKUJDj1o6bPUNhk0LrCzw8irIm9MQD/kUOyQYASnRpz5hu/3eAUKuJD7P6+rK/QwtgsmNpDJlrtapWBNkPj3KqUrtJHJ49v1Vg6YycQ1mdc0b1ZL/j1YZfaSC2mDde7csgW0/Z6v3xyf4XEtsFGILJN8blCcIgjock+Ymb2g5FYUagcKfyGcqnM4mOYQGm2Sncu4+iGOY5qTMpjJ8Fx1JiDSy6yDOikltB9Plgu0Vl7ySuSd9KVjOszu6+Zn3VIwrRBJXEPuuRKPpH6ukKKDBt78Hy5q9on5xyVqBjAWQifqMLYunf9+QlK+nMUZsQxpVXPogyYYLteDRREf6zSTyCmMu9RFvUQxehsitY0iyslYgDW/cnpyWIdseVQE4rcV56KfrUJAUWHwQ7GzIdXI/ie/o2xTWYmSyD7XzYQrQEsP0YA0= formation@do-atos16
diff --git a/main.tf b/main.tf
new file mode 100644
index 0000000..606e79f
--- /dev/null
+++ b/main.tf
@@ -0,0 +1,54 @@
+terraform {
+ required_providers {
+ virtualbox = {
+ source = "terra-farm/virtualbox"
+ version = "0.2.2-alpha.1"
+ }
+ }
+}
+
+resource "virtualbox_vm" "node" {
+# count = 1
+# name = format("ubuntu%01d", count.index + 3)
+# remplacement par des variables : voir variables.tf
+ count = var.nb
+ name = format("ubuntu%01d", count.index + var.start)
+ image = "https://app.vagrantup.com/ubuntu/boxes/focal64/versions/20220905.0.0/providers/virtualbox.box"
+ cpus = 2
+ memory = "2048 mib"
+
+ network_adapter {
+ type = "bridged"
+ host_interface = "ens160"
+ }
+}
+
+output "ip_addresses" {
+ value = {
+ for vm in virtualbox_vm.node.*:
+ vm.name => vm.network_adapter.0.ipv4_address
+ }
+}
+
+#########################
+# Principales commandes #
+#########################
+
+# pour valider notre script de configuration HCL
+# -> terraform validate
+# pour initaliser terraform (et le provider):
+# -> terraform init
+# pour voir ce qui va se passer :
+# -> terraform plan
+# pour appliquer le plan:
+# -> terraform apply
+# pour voir le déploiment réalisé
+# -> terraform show
+# ou encore
+# -> terraform state list
+# -> terraform state show virtualbox_vm.node[0]
+# Pour retrouver les adresses ip à tout moment (voir bloc output plus haut):
+# -> terraform output
+# Pour supprimer les machines:
+# -> terraform destroy
+
diff --git a/set-hostname b/set-hostname
new file mode 100755
index 0000000..a445755
--- /dev/null
+++ b/set-hostname
@@ -0,0 +1,4 @@
+#!/usr/bin/env bash
+sudo hostnamectl set-hostname $1
+rm $0
+
diff --git a/variables.tf b/variables.tf
new file mode 100644
index 0000000..0c81311
--- /dev/null
+++ b/variables.tf
@@ -0,0 +1,13 @@
+# définition des variables
+
+variable "nb" {
+ description = "nombre de machines"
+ type = number
+ default = 1
+}
+
+variable "start" {
+ description = "premiere machine de la série"
+ type = number
+ default = 1
+}