1// Package config contains the command line and config file code for the 2// consul agent. 3// 4// The consul agent configuration is generated from multiple sources: 5// 6// * config files 7// * environment variables (which?) 8// * cmd line args 9// 10// Each of these argument sets needs to be parsed, validated and then 11// merged with the other sources to build the final configuration. 12// 13// This patch introduces a distinction between the user and the runtime 14// configuration. The user configuration defines the external interface for 15// the user, i.e. the command line flags, the environment variables and the 16// config file format which cannot be changed without breaking the users' 17// setup. 18// 19// The runtime configuration is the merged, validated and mangled 20// configuration structure suitable for the consul agent. Both structures 21// are similar but different and the runtime configuration can be 22// refactored at will without affecting the user configuration format. 23// 24// For this, the user configuration consists of several structures for 25// config files and command line arguments. Again, the config file and 26// command line structs are similar but not identical for historical 27// reasons and to allow evolving them differently. 28// 29// All of the user configuration structs have pointer values to 30// unambiguously merge values from several sources into the final value. 31// 32// The runtime configuration has no pointer values and should be passed by 33// value to avoid accidental or malicious runtime configuration changes. 34// Runtime updates need to be handled through a new configuration 35// instances. 36 37// # Removed command line flags 38// 39// * "-atlas" is deprecated and is no longer used. Please remove it from your configuration. 40// * "-atlas-token" is deprecated and is no longer used. Please remove it from your configuration. 41// * "-atlas-join" is deprecated and is no longer used. Please remove it from your configuration. 42// * "-atlas-endpoint" is deprecated and is no longer used. Please remove it from your configuration. 43// * "-dc" is deprecated. Please use "-datacenter" instead 44// * "-retry-join-azure-tag-name" is deprecated. Please use "-retry-join" instead. 45// * "-retry-join-azure-tag-value" is deprecated. Please use "-retry-join" instead. 46// * "-retry-join-ec2-region" is deprecated. Please use "-retry-join" instead. 47// * "-retry-join-ec2-tag-key" is deprecated. Please use "-retry-join" instead. 48// * "-retry-join-ec2-tag-value" is deprecated. Please use "-retry-join" instead. 49// * "-retry-join-gce-credentials-file" is deprecated. Please use "-retry-join" instead. 50// * "-retry-join-gce-project-name" is deprecated. Please use "-retry-join" instead. 51// * "-retry-join-gce-tag-name" is deprecated. Please use "-retry-join" instead. 52// * "-retry-join-gce-zone-pattern" is deprecated. Please use "-retry-join" instead. 53// 54// # Removed configuration fields 55// 56// * "addresses.rpc" is deprecated and is no longer used. Please remove it from your configuration. 57// * "ports.rpc" is deprecated and is no longer used. Please remove it from your configuration. 58// * "atlas_infrastructure" is deprecated and is no longer used. Please remove it from your configuration. 59// * "atlas_token" is deprecated and is no longer used. Please remove it from your configuration. 60// * "atlas_acl_token" is deprecated and is no longer used. Please remove it from your configuration. 61// * "atlas_join" is deprecated and is no longer used. Please remove it from your configuration. 62// * "atlas_endpoint" is deprecated and is no longer used. Please remove it from your configuration. 63// * "http_api_response_headers" is deprecated. Please use "http_config.response_headers" instead. 64// * "dogstatsd_addr" is deprecated. Please use "telemetry.dogstatsd_addr" instead. 65// * "dogstatsd_tags" is deprecated. Please use "telemetry.dogstatsd_tags" instead. 66// * "recursor" is deprecated. Please use "recursors" instead. 67// * "statsd_addr" is deprecated. Please use "telemetry.statsd_addr" instead. 68// * "statsite_addr" is deprecated. Please use "telemetry.statsite_addr" instead. 69// * "statsite_prefix" is deprecated. Please use "telemetry.metrics_prefix" instead. 70// * "telemetry.statsite_prefix" is deprecated. Please use "telemetry.metrics_prefix" instead. 71// * "retry_join_azure" is deprecated. Please use "retry_join" instead. 72// * "retry_join_ec2" is deprecated. Please use "retry_join" instead. 73// * "retry_join_gce" is deprecated. Please use "retry_join" instead. 74// 75// # Removed service config alias fields 76// 77// * "serviceid" is deprecated in service definitions. Please use "service_id" instead. 78// * "dockercontainerid" is deprecated in service definitions. Please use "docker_container_id" instead. 79// * "tlsskipverify" is deprecated in service definitions. Please use "tls_skip_verify" instead. 80// * "deregistercriticalserviceafter" is deprecated in service definitions. Please use "deregister_critical_service_after" instead. 81 82package config 83