This commit is contained in:
2023-07-04 19:02:30 +02:00
parent 04c1aa3086
commit 7cc046ea2a
41 changed files with 1401 additions and 4 deletions

View File

@ -0,0 +1,116 @@
%title: Terraform
%author: Hubert
# Terraform : modules - introduction
<br>
* modules : regroupement de fichiers tf avec une cohérence en matière de resources
<br>
* module terraform = rôle ansible
<br>
* registry : https://registry.terraform.io/
<br>
* module = répertoire(s) + fichier(s) tf
----------------------------------------------------------------------------
# Terraform : modules - introduction
<br>
* utilisation d'un module
```
module "monmodule" {
source = "./rep_module"
}
```
<br>
* principe d'héritage du provider
* par défaut celui du fichier dans lequel il est appelé
* prossibilité de préciser le provider
<br>
* possiblité d'instancier plusieurs fois un même module
```
module "instance1" {
source = "./rep_module"
}
module "instance2" {
source = "./rep_module"
}
```
----------------------------------------------------------------------------
# Terraform : modules - introduction
<br>
* structure d'un module
```
├── README.md
├── main.tf
├── variables.tf
├── outputs.tf
```
* plus poussé
```
├── README.md
├── main.tf
├── variables.tf
├── outputs.tf
├── ...
├── modules/
│ ├── nestedA/
│ │ ├── README.md
│ │ ├── variables.tf
│ │ ├── main.tf
│ │ ├── outputs.tf
│ ├── nestedB/
│ ├── .../
├── examples/
│ ├── exampleA/
│ │ ├── main.tf
│ ├── exampleB/
│ ├── .../
```
----------------------------------------------------------------------------
# Terraform : modules - introduction
<br>
* installation d'un module
```
terraform get
terraform init
```
<br>
* peut permettre de gérer la gestion de dépendances
```
terraform apply -target=module.docker
terraform apply -target=module.postgres
```
Remarque : ou via les variables
<br>
* problématique de la vidéo précédente
cf pb de dépendance d'installation de docker avant de jouer le provider docker

View File

@ -0,0 +1,48 @@
variable "ssh_host" {}
variable "ssh_user" {}
variable "ssh_key" {}
resource "null_resource" "ssh_target" {
connection {
type = "ssh"
user = var.ssh_user
host = var.ssh_host
private_key = file(var.ssh_key)
}
provisioner "remote-exec" {
inline = [
"sudo apt update -qq >/dev/null",
"curl -fsSL https://get.docker.com -o get-docker.sh",
"sudo chmod 755 get-docker.sh",
"sudo ./get-docker.sh >/dev/null"
]
}
provisioner "file" {
source = "startup-options.conf"
destination = "/tmp/startup-options.conf"
}
provisioner "remote-exec" {
inline = [
"sudo mkdir -p /etc/systemd/system/docker.service.d/",
"sudo cp /tmp/startup-options.conf /etc/systemd/system/docker.service.d/startup_options.conf",
"sudo systemctl daemon-reload",
"sudo systemctl restart docker",
"sudo usermod -aG docker vagrant"
]
}
}
provider "docker" {
host = "tcp://${var.ssh_host}:2375"
}
resource "docker_image" "nginx" {
name = "nginx:latest"
}
resource "docker_container" "nginx" {
image = docker_image.nginx.latest
name = "enginecks"
ports {
internal = 80
external = 80
}
}