mirror of
https://github.com/VinylDNS/vinyldns
synced 2025-08-22 02:02:14 +00:00
- Remove old, unused scripts in `bin/` - Remove old images from release - `test` and `test-bind` are no longer necessary. Test images are in a different repo now - Remove Docker image creation from sbt build config - actual `Dockerfile` files are easier to deal with - Update scripts in `bin/` to utilize new Docker images - Update documentation for changes - Update all Docker Compose and configuration to use exposed ports on the `integration` image (19001, 19002, etc) both inside the container and outside to make testing more consistent irrespective of method - Update FlywayDB dependency to v8 to fix a weird logging bug that showed up during integration testing. See: https://github.com/flyway/flyway/issues/2270 - Add `test/api/integration` Docker container definition to be used for any integration testing - Move `module/api/functional_test` to `test/api/functional` to centralize the "integration-type" external tests and testing utilities - Move functional testing and integration image to the `test/` folder off of the root to reduce confusion with `bin/` and `docker/`
334 lines
9.6 KiB
Plaintext
334 lines
9.6 KiB
Plaintext
################################################################################################################
|
|
# This configuration is only used by docker. Environment variables are required in order to start
|
|
# up a docker cluster appropriately, so most of the values are passed in here. Defaults assume a local docker compose
|
|
# for vinyldns running.
|
|
# SQS_ENDPOINT is the SQS endpoint
|
|
# SQS_QUEUE_NAME is the queue name for the SQS queue
|
|
# SQS_REGION is the service region where the SQS queue lives (e.g. us-east-1)
|
|
# AWS_ACCESS_KEY is the AWS access key
|
|
# AWS_SECRET_ACCESS_KEY is the AWS secret access key
|
|
# JDBC_MIGRATION_URL - the URL for migations in the SQL database
|
|
# JDBC_URL - the full URL to the SQL database
|
|
# JDBC_USER - the SQL database user
|
|
# JDBC_PASSWORD - the SQL database password
|
|
# DEFAULT_DNS_ADDRESS - the server (and port if not 53) of the default DNS server
|
|
# DEFAULT_DNS_KEY_NAME - the default key name used to connect to the default DNS server
|
|
# DEFAULT_DNS_KEY_SECRET - the default key secret used to connect to the default DNS server
|
|
################################################################################################################
|
|
vinyldns {
|
|
|
|
# configured backend providers
|
|
backend {
|
|
# Use "default" when dns backend legacy = true
|
|
# otherwise, use the id of one of the connections in any of your backends
|
|
default-backend-id = "default"
|
|
|
|
# this is where we can save additional backends
|
|
backend-providers = [
|
|
{
|
|
class-name = "vinyldns.route53.backend.Route53BackendProviderLoader"
|
|
settings = {
|
|
backends = [
|
|
{
|
|
id = "r53",
|
|
access-key = "test",
|
|
access-key = ${?AWS_ACCESS_KEY_ID}
|
|
secret-key = "test",
|
|
secret-key = ${?AWS_SECRET_ACCESS_KEY},
|
|
service-endpoint = "http://vinyldns-localstack:19009",
|
|
service-endpoint = ${?AWS_ROUTE53_ENDPOINT},
|
|
signing-region = "us-east-1"
|
|
signing-region = ${?AWS_DEFAULT_REGION}
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
class-name = "vinyldns.api.backend.dns.DnsBackendProviderLoader"
|
|
settings = {
|
|
legacy = false
|
|
backends = [
|
|
{
|
|
id = "default"
|
|
zone-connection = {
|
|
name = "vinyldns."
|
|
key-name = "vinyldns."
|
|
key-name = ${?DEFAULT_DNS_KEY_NAME}
|
|
key = "nzisn+4G2ldMn0q1CV3vsg=="
|
|
key = ${?DEFAULT_DNS_KEY_SECRET}
|
|
primary-server = "vinyldns-bind9"
|
|
primary-server = ${?DEFAULT_DNS_ADDRESS}
|
|
}
|
|
transfer-connection = {
|
|
name = "vinyldns."
|
|
key-name = "vinyldns."
|
|
key-name = ${?DEFAULT_DNS_KEY_NAME}
|
|
key = "nzisn+4G2ldMn0q1CV3vsg=="
|
|
key = ${?DEFAULT_DNS_KEY_SECRET}
|
|
primary-server = "vinyldns-bind9"
|
|
primary-server = ${?DEFAULT_DNS_ADDRESS}
|
|
},
|
|
tsig-usage = "always"
|
|
},
|
|
{
|
|
id = "func-test-backend"
|
|
zone-connection = {
|
|
name = "vinyldns."
|
|
key-name = "vinyldns."
|
|
key-name = ${?DEFAULT_DNS_KEY_NAME}
|
|
key = "nzisn+4G2ldMn0q1CV3vsg=="
|
|
key = ${?DEFAULT_DNS_KEY_SECRET}
|
|
primary-server = "vinyldns-bind9"
|
|
primary-server = ${?DEFAULT_DNS_ADDRESS}
|
|
}
|
|
transfer-connection = {
|
|
name = "vinyldns."
|
|
key-name = "vinyldns."
|
|
key-name = ${?DEFAULT_DNS_KEY_NAME}
|
|
key = "nzisn+4G2ldMn0q1CV3vsg=="
|
|
key = ${?DEFAULT_DNS_KEY_SECRET}
|
|
primary-server = "vinyldns-bind9"
|
|
primary-server = ${?DEFAULT_DNS_ADDRESS}
|
|
},
|
|
tsig-usage = "always"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
]
|
|
}
|
|
|
|
queue {
|
|
class-name = "vinyldns.sqs.queue.SqsMessageQueueProvider"
|
|
|
|
messages-per-poll = 10
|
|
polling-interval = 250.millis
|
|
|
|
settings {
|
|
# AWS access key and secret.
|
|
access-key = "test"
|
|
access-key = ${?AWS_ACCESS_KEY}
|
|
secret-key = "test"
|
|
secret-key = ${?AWS_SECRET_ACCESS_KEY}
|
|
|
|
# Regional endpoint to make your requests (eg. 'us-west-2', 'us-east-1', etc.). This is the region where your queue is housed.
|
|
signing-region = "us-east-1"
|
|
signing-region = ${?SQS_REGION}
|
|
|
|
# Endpoint to access queue
|
|
service-endpoint = "http://vinyldns-localstack:19007/"
|
|
service-endpoint = ${?SQS_ENDPOINT}
|
|
|
|
# Queue name. Should be used in conjunction with service endpoint, rather than using a queue url which is subject to change.
|
|
queue-name = "vinyldns"
|
|
queue-name = ${?SQS_QUEUE_NAME}
|
|
}
|
|
}
|
|
|
|
rest {
|
|
host = "0.0.0.0"
|
|
port = 9000
|
|
}
|
|
|
|
sync-delay = 10000
|
|
|
|
approved-name-servers = [
|
|
"172.17.42.1.",
|
|
"ns1.parent.com."
|
|
"ns1.parent.com1."
|
|
"ns1.parent.com2."
|
|
"ns1.parent.com3."
|
|
"ns1.parent.com4."
|
|
]
|
|
|
|
crypto {
|
|
type = "vinyldns.core.crypto.NoOpCrypto"
|
|
}
|
|
|
|
data-stores = ["mysql"]
|
|
|
|
mysql {
|
|
settings {
|
|
# JDBC Settings, these are all values in scalikejdbc-config, not our own
|
|
# these must be overridden to use MYSQL for production use
|
|
# assumes a docker or mysql instance running locally
|
|
name = "vinyldns"
|
|
driver = "org.mariadb.jdbc.Driver"
|
|
migration-url = "jdbc:mariadb://vinyldns-mysql:3306/?user=root&password=pass"
|
|
migration-url = ${?JDBC_MIGRATION_URL}
|
|
url = "jdbc:mariadb://vinyldns-mysql:3306/vinyldns?user=root&password=pass"
|
|
url = ${?JDBC_URL}
|
|
user = "root"
|
|
user = ${?JDBC_USER}
|
|
password = "pass"
|
|
password = ${?JDBC_PASSWORD}
|
|
# see https://github.com/brettwooldridge/HikariCP
|
|
connection-timeout-millis = 1000
|
|
idle-timeout = 10000
|
|
max-lifetime = 600000
|
|
maximum-pool-size = 20
|
|
minimum-idle = 20
|
|
register-mbeans = true
|
|
}
|
|
# Repositories that use this data store are listed here
|
|
repositories {
|
|
zone {
|
|
# no additional settings for now
|
|
}
|
|
batch-change {
|
|
# no additional settings for now
|
|
}
|
|
user {
|
|
|
|
}
|
|
record-set {
|
|
|
|
}
|
|
group {
|
|
|
|
}
|
|
membership {
|
|
|
|
}
|
|
group-change {
|
|
|
|
}
|
|
zone-change {
|
|
|
|
}
|
|
record-change {
|
|
|
|
}
|
|
}
|
|
}
|
|
|
|
backends = []
|
|
|
|
batch-change-limit = 1000
|
|
|
|
# FQDNs / IPs that cannot be modified via VinylDNS
|
|
# regex-list used for all record types except PTR
|
|
# ip-list used exclusively for PTR records
|
|
high-value-domains = {
|
|
regex-list = [
|
|
"high-value-domain.*" # for testing
|
|
]
|
|
ip-list = [
|
|
# using reverse zones in the vinyldns/bind9 docker image for testing
|
|
"192.0.2.252",
|
|
"192.0.2.253",
|
|
"fd69:27cc:fe91:0:0:0:0:ffff",
|
|
"fd69:27cc:fe91:0:0:0:ffff:0"
|
|
]
|
|
}
|
|
|
|
# FQDNs / IPs / zone names that require manual review upon submission in batch change interface
|
|
# domain-list used for all record types except PTR
|
|
# ip-list used exclusively for PTR records
|
|
manual-review-domains = {
|
|
domain-list = [
|
|
"needs-review.*"
|
|
]
|
|
ip-list = [
|
|
"192.0.1.254",
|
|
"192.0.1.255",
|
|
"192.0.2.254",
|
|
"192.0.2.255",
|
|
"192.0.3.254",
|
|
"192.0.3.255",
|
|
"192.0.4.254",
|
|
"192.0.4.255",
|
|
"fd69:27cc:fe91:0:0:0:ffff:1",
|
|
"fd69:27cc:fe91:0:0:0:ffff:2",
|
|
"fd69:27cc:fe92:0:0:0:ffff:1",
|
|
"fd69:27cc:fe92:0:0:0:ffff:2",
|
|
"fd69:27cc:fe93:0:0:0:ffff:1",
|
|
"fd69:27cc:fe93:0:0:0:ffff:2",
|
|
"fd69:27cc:fe94:0:0:0:ffff:1",
|
|
"fd69:27cc:fe94:0:0:0:ffff:2"
|
|
]
|
|
zone-name-list = [
|
|
"zone.requires.review."
|
|
"zone.requires.review1."
|
|
"zone.requires.review2."
|
|
"zone.requires.review3."
|
|
"zone.requires.review4."
|
|
]
|
|
}
|
|
|
|
# FQDNs / IPs that cannot be modified via VinylDNS
|
|
# regex-list used for all record types except PTR
|
|
# ip-list used exclusively for PTR records
|
|
high-value-domains = {
|
|
regex-list = [
|
|
"high-value-domain.*" # for testing
|
|
]
|
|
ip-list = [
|
|
# using reverse zones in the vinyldns/bind9 docker image for testing
|
|
"192.0.1.252",
|
|
"192.0.1.253",
|
|
"192.0.2.252",
|
|
"192.0.2.253",
|
|
"192.0.3.252",
|
|
"192.0.3.253",
|
|
"192.0.4.252",
|
|
"192.0.4.253",
|
|
"fd69:27cc:fe91:0:0:0:0:ffff",
|
|
"fd69:27cc:fe91:0:0:0:ffff:0",
|
|
"fd69:27cc:fe92:0:0:0:0:ffff",
|
|
"fd69:27cc:fe92:0:0:0:ffff:0",
|
|
"fd69:27cc:fe93:0:0:0:0:ffff",
|
|
"fd69:27cc:fe93:0:0:0:ffff:0",
|
|
"fd69:27cc:fe94:0:0:0:0:ffff",
|
|
"fd69:27cc:fe94:0:0:0:ffff:0"
|
|
]
|
|
}
|
|
|
|
# types of unowned records that users can access in shared zones
|
|
shared-approved-types = ["A", "AAAA", "CNAME", "PTR", "TXT"]
|
|
|
|
manual-batch-review-enabled = true
|
|
|
|
scheduled-changes-enabled = true
|
|
|
|
multi-record-batch-change-enabled = true
|
|
|
|
global-acl-rules = [
|
|
{
|
|
group-ids: ["global-acl-group-id"],
|
|
fqdn-regex-list: [".*shared[0-9]{1}."]
|
|
},
|
|
{
|
|
group-ids: ["another-global-acl-group"],
|
|
fqdn-regex-list: [".*ok[0-9]{1}."]
|
|
}
|
|
]
|
|
}
|
|
|
|
akka {
|
|
loglevel = "INFO"
|
|
loggers = ["akka.event.slf4j.Slf4jLogger"]
|
|
logging-filter = "akka.event.slf4j.Slf4jLoggingFilter"
|
|
logger-startup-timeout = 30s
|
|
|
|
actor {
|
|
provider = "akka.actor.LocalActorRefProvider"
|
|
}
|
|
}
|
|
|
|
akka.http {
|
|
server {
|
|
# The time period within which the TCP binding process must be completed.
|
|
# Set to `infinite` to disable.
|
|
bind-timeout = 5s
|
|
|
|
# Show verbose error messages back to the client
|
|
verbose-error-messages = on
|
|
}
|
|
|
|
parsing {
|
|
# Spray doesn't like the AWS4 headers
|
|
illegal-header-warnings = on
|
|
}
|
|
}
|