jamformer est un outil CLI qui amorce un projet Terraform à partir d'une instance Jamf existante. Il se connecte à votre environnement, découvre les ressources via l'API Jamf (ou terraform query pour Protect et Platform), génère des blocs d'importation Terraform, exécute terraform plan -generate-config-out pour produire du HCL, puis post-traite la sortie pour ajouter des références entre ressources et organiser les fichiers par type de ressource. Le résultat est un échafaudage de départ réaliste à partir duquel apprendre et affiner — pas du code prêt pour la production, mais un premier brouillon honnête.
Fonctionnalités
- Supporte les fournisseurs Terraform suivants : Jamf Pro, Protect, Platform et Security Cloud (JSC)
- Découvre et exporte 100+ types de ressources incluant les politiques, scripts, profils de configuration, groupes intelligents et statiques, prestages ordinateurs et mobiles, attributs d'extension, packages, catégories, intégrations API, et bien d'autres
- Le post-traitement réécrit les identifiants Jamf en références Terraform entre ressources afin que les relations soient explicites plutôt que des entiers codés en dur
- Extrait le contenu intégré (scripts, profils, configurations d'applications, ressources de marque) vers des fichiers de support séparés
- Analyse des secrets via gitleaks avec des règles spécifiques à Jamf et remédiation interactive pour les identifiants intégrés — mots de passe, jetons API, phrases de passe WiFi, secrets LDAP et SMTP
- Le mode compact consolide les types de ressources uniformes en motifs
for_eachpour une sortie plus épurée et plus proche de la production - Le mode multi-environnement expérimental génère un module partagé et une structure de répertoires par environnement pour les équipes gérant des instances de staging et de production
- En lecture seule sur Jamf — ne modifie, crée ou supprime jamais rien dans votre instance
Prérequis
- Terraform 1.14 ou ultérieur (téléchargé automatiquement s'il n'est pas présent)
- Jamf Pro (rôle Auditeur ou équivalent), Jamf Protect, Jamf Platform ou Jamf Security Cloud
- Identifiants de client OAuth2 pour Protect, Platform et JSC ; identifiant/mot de passe ou OAuth2 pour Jamf Pro
- Go 1.26.2 ou ultérieur pour compiler à partir des sources