# Domain ```mermaid classDiagram class Devops { <> name module stage build_dir_name project_root_path } class Image { image_dockerhub_user image_dockerhub_password image_publish_tag image_build_dir_name image_use_package_common_files image_build_commons_path image_build_commons_dir_name } class C4k { c4k_executabel_name c4k_mixin_config c4k_mixin_auth c4k_grafana_cloud_user c4k_grafana_cloud_password } class ProvsK3s { k3s_provision_user k3s_letsencrypt_email k3s_letsencrypt_endpoint k3s_enable_echo k3s_app_filename_to_provision } class TerraformDomain { tf_additional_vars tf_additional_resources_from_package tf_output_json_name tf_use_workspace tf_use_package_common_files tf_build_commons_path tf_commons_dir_name tf_debug_print_terraform_command tf_additional_tfvar_files tf_terraform_semantic_version } class Digitalocean { do_api_key do_spaces_access_key do_spaces_secret_key do_as_backend do_account_name do_endpoint do_bucket do_bucket_key do_region } class Hetzner { hetzner_api_key } class Aws { aws_account_name } class DnsRecord { fqdn ipv4 ipv6 } class Release { release_type release_main_branch release_current_branch version } class Credentials { <> } class CredentialMapping { name gopass_path gopass_field gopass_type() name_for_input() name_for_environment () } class BuildFile { <> file_path [id] content build_file_type() get_version() set_version(version) } class Version { to_string() create_major() create_minor() create_patch() create_bump(snapshot_suffix) } Devops *-- "0..1" Image: specialized_builds Devops *-- "0..1" C4k: specialized_builds Devops *-- "0..1" ProvsK3s: specialized_builds Devops *-- "0..1" TerraformDomain: specialized_builds Devops *-- "0..1" Release: mixins TerraformDomain *-- "0..1" Digitalocean: providers TerraformDomain *-- "0..1" Hetzner: providers TerraformDomain *-- "0..1" Aws: providers Release o-- "0..1" BuildFile: primary_build_file Release o-- "0..n" BuildFile: secondary_build_files BuildFile *-- "1" Version C4k *-- DnsRecord: dns_record ProvsK3s *-- DnsRecord: provision_dns Credentials *-- "0..n" CredentialMapping: mappings[name] Credentials *-- "0..n" CredentialMapping: default_mappings ``` # Infrastructure ```mermaid classDiagram class ProjectRepository { get_devops(project): Devops set_devops(project, build) } ```