.terraform.lock.hcl entre postes et Apple Silicon. Ce tutoriel regroupe des seuils simples, une matrice « direct / miroir », des variables copiables et des portes CI pour que la revue de code reste lisible. Article connexe sur pulls OCI : Helm OCI et Chart Registry. Pages ouvertes sans compte : accueil, liste du blog technique.
Trois tensions
- Cache partagé : deux
initsur le mêmeplugin_cachesans isolation. - Réseau : TLS, proxy, timeouts trop courts vers le Registry.
- Lock : plate-forme manquante ou bump Terraform qui fait bouger le lock hors release.
Critères d’évaluation et seuils
Mesurez d’abord p95, taux d’échec init et espace disque du cache ; ajustez ensuite timeouts et parallélisme.
| Indicateur | Seuil | Action |
|---|---|---|
| p95 Registry / miroir | > 25 s (3 fois) | TF_REGISTRY_CLIENT_TIMEOUT 45–60 s ; max 4 retries. |
| Disque cache | < 15 % libre | Purge planifiée ou cache par job ; blocage si < 10 %. |
| Lockfile | diff hors release | Échec CI ; providers lock sur image canonique. |
| Concurrence | 2+ init sur même cache | Préfixe par CI_JOB_ID ou par dépôt. |
Ajustez après deux semaines de métriques sur votre backbone.
Tableau comparatif ou matrice décisionnelle
Compromis agilité / conformité ; le Mac runner reste sensible aux IOPS et aux certificats d’entreprise.
| Mode | + | − | Mac CI |
|---|---|---|---|
| direct | Métadonnées fraîches. | POP distant ; TLS. | Egress déjà aligné sur le Registry. |
| network_mirror | ACL, logs. | Miroir à jour. | Peu de domaines autorisés. |
| filesystem_mirror | Offline, stable. | Ops ZIP. | NVMe préhydraté darwin_arm64. |
Combinez souvent network_mirror + filesystem_mirror sans règles include/exclude contradictoires.
Documentez pour les équipes « quel domaine est autorisé » et « qui valide une nouvelle version de provider » afin d’éviter que le miroir ne devienne une boîte noire ; une revue trimestrielle des bundles filesystem suffit souvent sur les dépôts à faible vélocité.
Commandes exécutables et liste de variables d’environnement
Modèle de script CI ; gardez les jetons dans le secret manager de GitLab, GitHub Actions ou Jenkins. Sur Mac multi-tenant, préfixez toujours le cache par identifiant de job pour limiter les collisions d’écriture pendant les phases d’extraction.
Souvent utiles : TF_CLI_ARGS_init, TF_APPEND_USER_AGENT, SSL_CERT_FILE (AC interne).
fmt -check+validateaprès init.- Pas de diff lock sur feature ;
init -upgraderéservé aux branches release. - Loguer version Terraform + hash du
.terraformrc.
Mise en œuvre en six étapes (parcours opérations)
Séquence reproductible pour la revue.
- Figez Terraform (asdf, binaire hashé).
- Générez
.terraformrcdepuis le dépôt, pas depuis~. TF_PLUGIN_CACHE_DIRpar job sur APFS.- Appliquez la matrice : miroir pour namespaces approuvés,
directcontrôlé pour le reste. initavec 3–4 retries (pauses 2/4/8 s).providers locksur l’image canonique ; diff lock bloquant hors release.
Informations retenues pour cadrage interne
- 3–4 retries couvrent la plupart des erreurs transitoires sans saturer la file Mac.
- 200–500 Mo libres par job réduit les extractions ZIP incomplètes.
init -upgradeseulement sur branches release limite le bruit du lock.
FAQ
Git LFS pour les ZIP providers ?
Peu recommandé : le dépôt grossit et les revues se polluent. Préférez un miroir fichier ou un artefact d’entreprise ; Git porte surtout .terraform.lock.hcl et un modèle .terraformrc sans secrets.
Justifier un peu de direct ?
Joignez au runbook la matrice include/exclude, une capture DNS et un curl -I automatisé depuis le runner pour prouver que seuls les hôtes listés sortent du réseau approuvé.
Mac miroir pour Linux ?
Oui pour héberger les artefacts sur NAS ou S3 interne, mais chaque plate-forme doit conserver ses ZIP distincts ; mélanger darwin_arm64 et linux_amd64 dans un seul dossier plat casse la résolution attendue par Terraform.