Skip to content

Module "depend_on" #45

@MOBergeron

Description

@MOBergeron

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requesthelp wantedExtra attention is needed

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions