-
Notifications
You must be signed in to change notification settings - Fork 3
Description
L'utilisation de "depends_on" pour un module ne semble pas être recommandé et même des fonctionnalités comme l'utilisation de AWS ne fonctionne pas bien à cause ça. Ce lien mentionne comme bien faire la dépendance et après des essais, ça semble fonctionner. Par contre, je ne sais pas exactement comment l'intégrer au projet. C'est relativement facile si nous considérons le projet utilisé uniquement par NorthSec, mais comme je l'ai utilisé moi-même pour un autre projet, j'avais beaucoup de problématique ici et là, comme la validation, qui ne concordait pas avec mon autre projet. Donc, je me demande comment l'implémenter exactement.
Voici mes modifications :
Ajouter à .deploy/common/variables.tf
:
variable "ctf_dns_network_zone" {
default = "ctf"
type = string
}
Ajouter à .deploy/common/dns.tf
:
output "ctf_dns_network_zone" {
value = incus_network_zone.this.name
}
Modifier utils.py
, la fonction add_tracks_to_terraform_modules
:
def add_tracks_to_terraform_modules(tracks: set[Track]):
with open(
file=os.path.join(find_ctf_root_directory(), ".deploy", "modules.tf"), mode="a"
) as fd:
template = jinja2.Environment().from_string(
source=textwrap.dedent(
text="""\
{% for track in tracks %}
module "track-{{ track.name }}" {
source = "../challenges/{{ track.name }}/terraform"
build_container = {{ 'true' if track.require_build_container else 'false' }}
{% if track.production %}deploy = "production"{% endif %}
{% if track.remote %}incus_remote = "{{ track.remote }}"{% endif %}
ctf_dns_network_zone = module.common.ctf_dns_network_zone # <-------- remplacer "depends_on = [module.common]" par cette ligne
}
{% endfor %}
"""
)
)
fd.write(
template.render(
tracks=tracks - get_terraform_tracks_from_modules(),
)
)
Modifier tous les main.tf
et le template de ctf new
pour main.tf
afin de mettre zone = var.ctf_dns_network_zone
pour les incus_network_zone_record
.