in agent/appconfig/appconfig_parser.go [24:161]
func parser(config *SsmagentConfig) {
log.Printf("processing appconfig overrides")
booleanStringOptions := []string{
"true",
"false",
}
// Agent creds profile
config.Profile.KeyAutoRotateDays = getNumericValue(
config.Profile.KeyAutoRotateDays,
defaultProfileKeyAutoRotateDaysMin,
defaultProfileKeyAutoRotateDaysMax,
defaultProfileKeyAutoRotateDays)
// Agent config
config.Agent.Name = getStringValue(config.Agent.Name, DefaultAgentName)
config.Agent.OrchestrationRootDir = getStringValue(config.Agent.OrchestrationRootDir, defaultOrchestrationRootDirName)
config.Agent.Region = getStringValue(config.Agent.Region, "")
config.Agent.ServiceDomain = getStringValue(config.Agent.ServiceDomain, "")
config.Agent.TelemetryMetricsNamespace = getStringValue(config.Agent.TelemetryMetricsNamespace, DefaultTelemetryNamespace)
config.Agent.LongRunningWorkerMonitorIntervalSeconds = getNumericValue(
config.Agent.LongRunningWorkerMonitorIntervalSeconds,
defaultLongRunningWorkerMonitorIntervalSecondsMin,
defaultLongRunningWorkerMonitorIntervalSecondsMax,
defaultLongRunningWorkerMonitorIntervalSeconds)
config.Agent.SelfUpdateScheduleDay = getNumericValue(
config.Agent.SelfUpdateScheduleDay,
DefaultSsmSelfUpdateFrequencyDaysMin,
DefaultSsmSelfUpdateFrequencyDaysMax,
DefaultSsmSelfUpdateFrequencyDays)
config.Agent.GoMaxProcForAgentWorker = getNumericValue(config.Agent.GoMaxProcForAgentWorker,
1,
runtime.NumCPU(),
0)
config.Agent.AuditExpirationDay = getNumericValue(
config.Agent.AuditExpirationDay,
DefaultAuditExpirationDayMin,
DefaultAuditExpirationDayMax,
DefaultAuditExpirationDay)
// MDS config
config.Mds.CommandWorkersLimit = getNumericValue(
config.Mds.CommandWorkersLimit,
DefaultCommandWorkersLimitMin,
config.Mds.CommandWorkersLimit, // we do not restrict max number of worker limit here
DefaultCommandWorkersLimit)
config.Mds.CommandWorkerBufferLimit = getNumericValue(
config.Mds.CommandWorkerBufferLimit,
DefaultCommandWorkersBufferLimitMin,
config.Mds.CommandWorkerBufferLimit, // we do not restrict max number of worker buffer limit here
DefaultCommandWorkerBufferLimit)
// MGS config
config.Mgs.SessionWorkerBufferLimit = getNumericValue(
config.Mgs.SessionWorkerBufferLimit,
DefaultSessionWorkersBufferLimitMin,
config.Mgs.SessionWorkerBufferLimit, // we do not restrict max number of worker buffer limit here
DefaultSessionWorkerBufferLimit)
config.Mds.CommandRetryLimit = getNumericValue(
config.Mds.CommandRetryLimit,
DefaultCommandRetryLimitMin,
DefaultCommandRetryLimitMax,
DefaultCommandRetryLimit)
config.Mds.StopTimeoutMillis = getNumeric64Value(
config.Mds.StopTimeoutMillis,
DefaultStopTimeoutMillisMin,
DefaultStopTimeoutMillisMax,
DefaultStopTimeoutMillis)
config.Mds.Endpoint = getStringValue(config.Mds.Endpoint, "")
// SSM config
config.Ssm.Endpoint = getStringValue(config.Ssm.Endpoint, "")
config.Ssm.HealthFrequencyMinutes = getNumericValue(
config.Ssm.HealthFrequencyMinutes,
DefaultSsmHealthFrequencyMinutesMin,
DefaultSsmHealthFrequencyMinutesMax,
DefaultSsmHealthFrequencyMinutes)
config.Ssm.AssociationFrequencyMinutes = getNumericValue(
config.Ssm.AssociationFrequencyMinutes,
DefaultSsmAssociationFrequencyMinutesMin,
DefaultSsmAssociationFrequencyMinutesMax,
DefaultSsmAssociationFrequencyMinutes)
config.Ssm.HibernationMaxBackoffIntervalMinutes = getNumericValue(
config.Ssm.HibernationMaxBackoffIntervalMinutes,
DefaultHibernationMaxBackoffIntervalMinutesMin,
DefaultHibernationMaxBackoffIntervalMinutesMax,
DefaultHibernationMaxBackoffIntervalMinutes)
config.Ssm.AssociationLogsRetentionDurationHours = getNumericValueAboveMin(
config.Ssm.AssociationLogsRetentionDurationHours,
DefaultStateOrchestrationLogsRetentionDurationHoursMin,
DefaultAssociationLogsRetentionDurationHours)
config.Ssm.RunCommandLogsRetentionDurationHours = getNumericValueAboveMin(
config.Ssm.RunCommandLogsRetentionDurationHours,
DefaultStateOrchestrationLogsRetentionDurationHoursMin,
DefaultRunCommandLogsRetentionDurationHours)
sessionLogsDestinationOptions := []string{SessionLogsDestinationDisk, SessionLogsDestinationNone}
config.Ssm.SessionLogsDestination = getStringEnum(config.Ssm.SessionLogsDestination,
sessionLogsDestinationOptions,
SessionLogsDestinationNone)
pluginLocalOutputCleanupOptions := []string{
PluginLocalOutputCleanupAfterExecution,
PluginLocalOutputCleanupAfterUpload,
DefaultPluginOutputRetention,
}
config.Ssm.PluginLocalOutputCleanup = getStringEnum(config.Ssm.PluginLocalOutputCleanup,
pluginLocalOutputCleanupOptions,
DefaultPluginOutputRetention)
OrchestartionDirCleanupOtions := []string{
DefaultOrchestrationDirCleanup,
OrchestrationDirCleanupForSuccessFailedCommand,
OrchestrationDirCleanupForSuccessCommand,
}
config.Ssm.OrchestrationDirectoryCleanup = getStringEnum(config.Ssm.OrchestrationDirectoryCleanup,
OrchestartionDirCleanupOtions,
DefaultOrchestrationDirCleanup)
config.Identity.Ec2SystemInfoDetectionResponse = getStringEnum(config.Identity.Ec2SystemInfoDetectionResponse, booleanStringOptions, "")
IdentityConsumptionOrderOptions := map[string]bool{
"OnPrem": true,
"ECS": true,
"EC2": true,
"CustomIdentity": true,
}
config.Identity.ConsumptionOrder = getStringListEnum(
config.Identity.ConsumptionOrder,
IdentityConsumptionOrderOptions,
DefaultIdentityConsumptionOrder)
CredentialsProviderOptions := map[string]bool{
DefaultCustomIdentityCredentialsProvider: true,
}
for _, customIdentity := range config.Identity.CustomIdentities {
customIdentity.CredentialsProvider = getStringEnumMap(customIdentity.CredentialsProvider, CredentialsProviderOptions, DefaultCustomIdentityCredentialsProvider)
}
}