Formation DevOps | Formation Terraform : 25- Terraform provider docker: Docker network

www.itgalaxy.io

Terraform :Docker provider

On va toujours continuer à utiliser les modules créer pour Docker en plus on va utiliser aussi les providers Docker

Docker-network:

L’utilité de ce provider est de la gestion la partie réseau des conteneurs , CRUD des réseaux.

Docs détaillées : Liens docker-network

Tree au niveau du projet :

main.tf

variable “ssh_host” {}
variable “ssh_user” {}
variable “ssh_key” {}

module “docker_install” {
source = “./modules/docker_install”
ssh_host = var.ssh_host
ssh_user = var.ssh_user
ssh_key = var.ssh_key}module

“docker_run” {
source = “./modules/docker_run”
ssh_host= var.ssh_host
}

output “ip_container” {
value = module.docker_run.ip_docker
}
:Affichage de l’adresse ip du conteneur.

terraform.tfvars:
ssh_host = “192.168.21.103“
ssh_user = “ubuntu“
ssh_key = “/home/ubuntu/.ssh/id_rsa”

  • Modules/docker_run

Modules/docker_run/main.tf

provider “docker” {
host = “tcp://${var.ssh_host}:2375”
}

resource “docker_network” " dockernet” {
name = “mynet2”
}
resource “docker_image” “nginx” {
name = “nginx:latest”
}
resource “docker_container” “nginx” {
image = docker_image.nginx.latest
name = “enginecks”
ports {
internal = 80
external = 80
}
networks_advanced {
name = docker_network.dockernet.name
}
}

Création d’un nouveau réseau docker , pour l’afficher docker network ls , ensuite l’utiliser pour notre
conteneur nginx

output “ip_docker” {
value = docker_container.nginx.ip_address
}

Output.tf /!\il faut escalader /!\

  • modules\docker_run

Avant le lancement

Après le lancement

Après le lancement

Modules/docker_run/main.tf

terraform {
required_providers {
docker = {
source = “kreuzwerker/docker”
version = “2.15.0”
}
}
}
provider “docker” {
host = “tcp://${var.ssh_host}:2375”
}
resource “docker_network” " dockernet" {
name = “mynet2”
driver = “bridge”
ipam_config {
subnet = “177.22.0.0/24”
}
}
resource “docker_image” “nginx” {
name = “nginx:latest”
}
resource “docker_container” “nginx” {
image = docker_image.nginx.latest
name = “enginecks”
ports {
internal = 80
external = 80
}
networks_advanced {
name = docker_network. dockernet.name
}
}

Plus avancé on choisi le type et aussi les ranges d’ips






1. Nous contactez


2. Infra as a Service

  • Description: Infrastructure cloud évolutive et sécurisée
  • Links:

3. Projets Développeurs


4. Développeurs


5. Formations Complètes


6. Marketplace

7. Blogs


This website is powered by ItGalaxy.io