Article original Publié le : 3 septembre 2022 Mise à jour le : – |
Les vms étant spawnés avec Terraform, profitons en pour renseigner Netbox (ou d’autres services comme Efficient IP, Racktables par exemple).
Il faut également utiliser un provider, là encore pas d’officiel mais une communauté très active, celui de e-breuninger est assez complet
Attention à la version de netbox et du provider pour éviter ce type d’erreur
Netbox 3.1.8 fonctionne bien avec le provider 1.6.7
Pour le provider
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
terraform { required_providers { netbox = { source = "e-breuninger/netbox" version = "1.6.7" } } } provider "netbox" { server_url = "https://demo.netbox.dev" api_token = ""6" #allow_insecure_https = true } |
Les valeurs pour la création d’un objet
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
resource "netbox_virtual_machine" "testvm" { name = "vm03" comments = "vm03 preprod" memory_mb = 1024 vcpus = 4 disk_size_gb = 512 cluster_id = netbox_cluster.testcluster.id tenant_id = netbox_tenant.testtenant.id platform_id = netbox_platform.testplatform.id role_id = netbox_device_role.testdevicerole.id tags = [netbox_tag.foo.name, netbox_tag.bar.name] } resource "netbox_interface" "testinterface" { virtual_machine_id = netbox_virtual_machine.testvm.id name = "interface-local1" description = "description" tags = [netbox_tag.foo.name] } resource "netbox_ip_address" "testip" { ip_address = "192.168.50.107/32" dns_name = "debian.izero.lan" interface_id = netbox_interface.testinterface.id status = "active" tenant_id = netbox_tenant.testtenant.id vrf_id = netbox_vrf.testvrf.id tags = [netbox_tag.foo.name] } resource "netbox_primary_ip" "testprimaryip" { virtual_machine_id = netbox_virtual_machine.testvm.id ip_address_id = netbox_ip_address.testip.id } |
Appliquer le plan qui va créer les différentes actions à travers l’api
Un maximum de champ peut se variabiliser, le reste se déclare au spawn de la vm et se corrige en relançant le plan sans affecter la vm si on ne lui a pas apporté de modification
Un gain de temps evident
https://github.com/e-breuninger/terraform-provider-netbox