Complete rewrite of the bootstraper tool

This commit is contained in:
2022-06-15 17:29:45 +02:00
parent 5085bd4d69
commit b5172da6a7
28 changed files with 1263 additions and 148 deletions

View File

@ -0,0 +1,127 @@
LokiStack = {
Name: "LokiStack"
Global: {
Vars: {}
ConfigFiles: [
{
destination: /etc/hosts
source: hosts.pktpl.hcl
mode: 600
owner: root
group: root
}
]
}
Services: {
Loki: {
ConfigFiles: [
{
destination: /etc/loki/loki-local-config.yaml
source: loki-local-config.pktpl.hcl
mode: 600
owner: loki
service: loki
group: grafana
}
]
Repositories: {
Grafana: {
type: helm
name: grafana
url: https://grafana.github.io/helm-charts
enabled:true
}
AlpineTesting: {
type: apk
name: testing
url: http://mirrors.bfsu.edu.cn/alpine/edge/testing
enabled: true
}
}
Packages: {
loki: {
name: loki
action: install
}
promtail: {
name: loki-promtail
action: install
}
loki-helm: {
type: helm
name: loki
repo: grafana/loki-simple-scalable
}
}
Vars: {
AuthEnabled: false
User: loki
Group: grafana
HTTPPort: 3100
GRPCPort: 9096
AlertManagerURL: http://localhost:9093
StorageRoot: /var/loki
SharedStore: filesystem
ObjectStore: filesystem
LogLevel: error
S3: {
URL:
BucketName:
APIKey:
APISecretKey:
}
}
Daemons: {
Loki: {
name: loki
enabled: true
}
}
Users: {
loki: {
username: loki
group: grafana
home : /srv/loki
shell: /bin/nologin
}
}
}
Grafana: {
ConfigFiles: [
{
destination: /etc/grafana.ini
source: grafana.ini.pktpl.hcl
mode: 700
owner: grafana
group: grafana
}
]
Packages: {
grafana: {
name: grafana
action: install
}
}
Vars: {
AuthEnabled: false
User: toto
Group: grafana
}
Users: {
grafana: {
username: grafana
group: grafana
home: /srv/grafana
shell: /bin/nologin
}
}
Daemons: {
grafana: {
name: grafana
type: auto
enabled: true
}
}
}
}
}

View File

@ -0,0 +1,127 @@
{
"Name": "LokiStack",
"Global": {
"Vars": {},
"ConfigFiles": [
{
"destination": "/etc/hosts",
"source": "hosts.pktpl.hcl",
"mode": "600",
"owner": "root",
"group": "root"
}
]
},
"Services": {
"Loki": {
"ConfigFiles": [
{
"destination": "/etc/loki/loki-local-config.yaml",
"source": "loki-local-config.pktpl.hcl",
"mode": "600",
"owner": "loki",
"service": "loki",
"group": "grafana"
}
],
"Repositories": {
"Grafana": {
"type": "helm",
"name": "grafana",
"url": "https://grafana.github.io/helm-charts",
"enabled":true
},
"AlpineTesting": {
"type": "apk",
"name": "testing",
"url": "http://mirrors.bfsu.edu.cn/alpine/edge/testing",
"enabled": true
}
},
"Packages": {
"loki": {
"name": "loki",
"action": "install"
},
"promtail": {
"name": "loki-promtail",
"action": "install"
},
"loki-helm": {
"type": "helm",
"name": "loki",
"repo": "grafana/loki-simple-scalable"
}
},
"Vars": {
"AuthEnabled": false,
"User": "loki",
"Group": "grafana",
"HTTPPort": "3100",
"GRPCPort": "9096",
"AlertManagerURL": "http://localhost:9093",
"StorageRoot": "/var/loki",
"SharedStore": "filesystem",
"ObjectStore": "filesystem",
"LogLevel": "error",
"S3": {
"URL": "",
"BucketName": "",
"APIKey": "",
"APISecretKey": ""
}
},
"Daemons": {
"Loki": {
"name": "loki",
"enabled": true
}
},
"Users": {
"loki": {
"username": "loki",
"group": "grafana",
"home" : "/srv/loki",
"shell": "/bin/nologin"
}
}
},
"Grafana": {
"ConfigFiles": [
{
"destination": "/etc/grafana.ini",
"source": "grafana.ini.pktpl.hcl",
"mode": "700",
"owner": "grafana",
"group": "grafana"
}
],
"Packages": {
"grafana": {
"name": "grafana",
"action": "install"
}
},
"Vars": {
"AuthEnabled": false,
"User": "toto",
"Group": "grafana"
},
"Users": {
"grafana": {
"username": "grafana",
"group": "grafana",
"home": "/srv/grafana",
"shell": "/bin/nologin"
}
},
"Daemons": {
"grafana": {
"name": "grafana",
"type": "auto",
"enabled": true
}
}
}
}
}

View File

@ -1,26 +0,0 @@
{
"Name": "loki",
"ConfigFiles": [
{
"destination": "/etc/loki/loki-local-config.yaml",
"source": "loki-local-config.pktpl.hcl",
"mod": "600"
}
],
"AuthEnabled": false,
"User": "loki",
"Group": "grafana",
"HTTPPort": "3100",
"GRPCPort": "9096",
"AlertManagerURL": "http://localhost:9093",
"StorageRoot": "/var/loki",
"SharedStore": "filesystem",
"ObjectStore": "filesystem",
"LogLevel": "error",
"S3": {
"URL": "",
"BucketName": "",
"APIKey": "",
"APISecretKey": ""
}
}

View File

View File

View File

@ -0,0 +1,5 @@
%{ if Vars.AuthEnabled ~}
auth_enabled: true
%{ else }
auth_enabled: false
%{ endif }

View File

View File

@ -1,18 +1,18 @@
%{ if AuthEnabled ~}
%{ if Vars.AuthEnabled ~}
auth_enabled: true
%{ else }
auth_enabled: false
%{ endif }
server:
http_listen_port: ${HTTPPort}
grpc_listen_port: ${GRPCPort}
log_level: ${LogLevel}
http_listen_port: ${Vars.HTTPPort}
grpc_listen_port: ${Vars.GRPCPort}
log_level: ${Vars.LogLevel}
ingester:
wal:
enabled: true
dir: ${StorageRoot}/wal
dir: ${Vars.StorageRoot}/wal
flush_on_shutdown: true
lifecycler:
address: 127.0.0.1
@ -23,7 +23,7 @@ ingester:
final_sleep: 0s
chunk_idle_period: 1h # Any chunk not receiving new logs in this time will be flushed
max_chunk_age: 1h # All chunks will be flushed when they hit this age, default is 1h
chunk_target_size: 1048576 # Loki will attempt to build chunks up to 1.5MB, flushing first if chunk_idle_period or max_chunk_age is reached first
chunk_target_size: 1048576 # Vars. will attempt to build chunks up to 1.5MB, flushing first if chunk_idle_period or max_chunk_age is reached first
chunk_retain_period: 30s # Must be greater than index read cache TTL if using an index cache (Default index read cache TTL is 5m)
max_transfer_retries: 0 # Chunk transfers disabled
@ -31,31 +31,31 @@ schema_config:
configs:
- from: 2020-05-15
store: boltdb-shipper
object_store: ${ObjectStore}
object_store: ${Vars.ObjectStore}
schema: v11
index:
prefix: index_
period: 24h
storage_config:
boltdb_shipper:
active_index_directory: ${StorageRoot}/index
shared_store: ${SharedStore}
cache_location: ${StorageRoot}/cache
cache_ttl: 168h
boltdb_shipper:
active_index_directory: ${Vars.StorageRoot}/index
shared_store: ${Vars.SharedStore}
cache_location: ${Vars.StorageRoot}/cache
cache_ttl: 168h
%{ if ObjectStore == "filesystem" ~}
%{ if Vars.ObjectStore == "filesystem" ~}
filesystem:
directory: ${StorageRoot}/chunks
directory: ${Vars.StorageRoot}/chunks
%{ else }
aws:
s3: s3://${S3.APIKey}:${S3.APISecretKey}@${S3.URL}/${S3.BucketName}
s3: s3://${Vars.S3.APIKey}:${Vars.S3.APISecretKey}@${Vars.S3.URL}/${Vars.S3.BucketName}
s3forcepathstyle: true
%{ endif }
compactor:
shared_store: ${SharedStore}
working_directory: ${StorageRoot}/compactor
shared_store: ${Vars.SharedStore}
working_directory: ${Vars.StorageRoot}/compactor
compaction_interval: 10m
limits_config:
@ -73,10 +73,10 @@ ruler:
storage:
type: local
local:
directory: ${StorageRoot}/rules
rule_path: ${StorageRoot}/rules
alertmanager_url: ${AlertManagerURL}
directory: ${Vars.StorageRoot}/rules
rule_path: ${Vars.StorageRoot}/rules
alertmanager_url: ${Vars.AlertManagerURL}
ring:
kvstore:
store: inmemory
enable_api: true
enable_api: true

View File

@ -1,18 +1,18 @@
{{ if .AuthEnabled }}
{{ if .Vars.AuthEnabled }}
auth_enabled: true
{{ else }}
auth_enabled: false
{{ end }}
server:
http_listen_port: {{ .HTTPPort }}
grpc_listen_port: {{ .GRPCPort }}
http_listen_port: {{ .Vars.HTTPPort }}
grpc_listen_port: {{ .Vars.GRPCPort }}
log_level: {{ .LogLevel }}
ingester:
wal:
enabled: true
dir: {{ .StorageRoot }}/wal
dir: {{ .Vars.StorageRoot }}/wal
flush_on_shutdown: true
lifecycler:
address: 127.0.0.1
@ -31,7 +31,7 @@ schema_config:
configs:
- from: 2020-05-15
store: boltdb-shipper
object_store: {{ .ObjectStore }}
object_store: {{ .Vars.ObjectStore }}
schema: v11
index:
prefix: index_
@ -39,23 +39,23 @@ schema_config:
storage_config:
boltdb_shipper:
active_index_directory: {{ .StorageRoot }}/index
shared_store: {{ .SharedStore }}
cache_location: {{ .StorageRoot }}/cache
active_index_directory: {{ .Vars.StorageRoot }}/index
shared_store: {{ .Vars.SharedStore }}
cache_location: {{ .Vars.StorageRoot }}/cache
cache_ttl: 168h
{{ if eq (.ObjectStore) ("filesystem") }}
filesystem:
directory: {{ .StorageRoot }}/chunks
directory: {{ .Vars.StorageRoot }}/chunks
{{ else }}
aws:
s3: s3://{{ .S3.APIKey }}:{{ .S3.APISecretKey}}@{{ .S3.URL}}/{{ .S3.BucketName}}
s3: s3://{{ .Vars.S3.APIKey }}:{{ .Vars.S3.APISecretKey}}@{{ .S3.URL}}/{{ .S3.BucketName}}
s3forcepathstyle: true
{{ end }}
compactor:
shared_store: {{ .SharedStore }}
working_directory: {{ .StorageRoot }}/compactor
shared_store: {{ .Vars.SharedStore }}
working_directory: {{ .Vars.StorageRoot }}/compactor
compaction_interval: 10m
limits_config:
@ -73,9 +73,9 @@ ruler:
storage:
type: local
local:
directory: {{ .StorageRoot }}/rules
rule_path: {{ .StorageRoot }}/rules
alertmanager_url: {{ .AlertManagerURL }}
directory: {{ .Vars.StorageRoot }}/rules
rule_path: {{ .Vars.StorageRoot }}/rules
alertmanager_url: {{ .Vars.AlertManagerURL }}
ring:
kvstore:
store: inmemory