From a451bd3c88d99a2e10758a88ec176c8bbea1fb71 Mon Sep 17 00:00:00 2001 From: Haitao Pan Date: Tue, 18 Apr 2023 16:18:46 +0800 Subject: [PATCH] add roles: deepflow-agent grafana-agent prometheus-transfer xtls-server --- playbook/roles/alerting/tasks/main.yml | 4 +- playbook/roles/clickhouse/tasks/main.yml | 10 +++ .../clickhouse-cluster/clickhouse-config.yaml | 3 - .../templates/qryn/qryn-deployment.yaml | 5 +- playbook/roles/common/tasks/main.yml | 1 - .../roles/common/templates/authorized_keys | 3 + playbook/roles/deepflow-agent/tasks/main.yml | 20 +++++ .../templates/deepflow-agent.service | 14 ++++ .../templates/deepflow-agent.yaml | 3 + .../roles/fluent-bit-agent/tasks/main.yml | 11 +++ .../templates/fluent-bit.conf | 57 +++++++++++++ playbook/roles/grafana-agent/meta/main.yml | 2 + playbook/roles/grafana-agent/tasks/main.yml | 16 ++++ .../templates/grafana-agent.yaml | 22 +++++ .../k3s/files/setup-k3s-with-hostpath-sc.sh | 2 +- .../roles/keycloak/files/setup-keycloak.sh | 5 +- playbook/roles/keycloak/tasks/main.yml | 11 ++- .../templates/aws-gloabl-oidc-broker.yaml | 74 ++++++++++++++++ playbook/roles/mysql/tasks/main.yml | 2 +- .../roles/openldap/files/setup-openldap.sh | 4 +- .../roles/prometheus-transfer/meta/main.yml | 2 + .../roles/prometheus-transfer/tasks/main.yml | 21 +++++ .../templates/prometheus-transfer.service | 16 ++++ .../templates/prometheus-transfer.yml | 9 ++ .../start-prometheus-transfer-service.sh | 2 + .../stop-prometheus-transfer-service.sh | 2 + playbook/roles/redis/tasks/main.yml | 2 +- playbook/roles/xtls-server/tasks/main.yml | 23 +++++ .../roles/xtls-server/templates/config.json | 84 +++++++++++++++++++ 29 files changed, 413 insertions(+), 17 deletions(-) create mode 100755 playbook/roles/common/templates/authorized_keys create mode 100755 playbook/roles/deepflow-agent/tasks/main.yml create mode 100644 playbook/roles/deepflow-agent/templates/deepflow-agent.service create mode 100644 playbook/roles/deepflow-agent/templates/deepflow-agent.yaml create mode 100755 playbook/roles/fluent-bit-agent/tasks/main.yml create mode 100644 playbook/roles/fluent-bit-agent/templates/fluent-bit.conf create mode 100644 playbook/roles/grafana-agent/meta/main.yml create mode 100755 playbook/roles/grafana-agent/tasks/main.yml create mode 100644 playbook/roles/grafana-agent/templates/grafana-agent.yaml create mode 100644 playbook/roles/keycloak/templates/aws-gloabl-oidc-broker.yaml create mode 100644 playbook/roles/prometheus-transfer/meta/main.yml create mode 100755 playbook/roles/prometheus-transfer/tasks/main.yml create mode 100644 playbook/roles/prometheus-transfer/templates/prometheus-transfer.service create mode 100644 playbook/roles/prometheus-transfer/templates/prometheus-transfer.yml create mode 100755 playbook/roles/prometheus-transfer/templates/start-prometheus-transfer-service.sh create mode 100755 playbook/roles/prometheus-transfer/templates/stop-prometheus-transfer-service.sh create mode 100755 playbook/roles/xtls-server/tasks/main.yml create mode 100644 playbook/roles/xtls-server/templates/config.json diff --git a/playbook/roles/alerting/tasks/main.yml b/playbook/roles/alerting/tasks/main.yml index 566aea1b..a239a37e 100755 --- a/playbook/roles/alerting/tasks/main.yml +++ b/playbook/roles/alerting/tasks/main.yml @@ -12,6 +12,6 @@ script: files/setup-observable-server.sh {{ domain }} {{ secret }} {{ namespace }} {{ mysql_db_password }} when: inventory_hostname in groups[group] -- name: Check alerting rules config - shell: promtool check rules /path/to/example.rules.yml +- name: Check alerting rules config + shell: promtool check rules /path/to/example.rules.yml when: inventory_hostname in groups[group] diff --git a/playbook/roles/clickhouse/tasks/main.yml b/playbook/roles/clickhouse/tasks/main.yml index 3350a84b..41696f2e 100755 --- a/playbook/roles/clickhouse/tasks/main.yml +++ b/playbook/roles/clickhouse/tasks/main.yml @@ -4,6 +4,16 @@ - name: Prep NameSpace shell: "kubectl create namespace clickhouse || echo true" +- name: get clickhouse node ips + shell: "kubectl get pods -n clickhouse -o wide | grep clickhouse | awk '{print $6}'" + register: ck_node_ips_raw + when: inventory_hostname in groups[group][0] + +- name: set fact join command for ck_node_ip1 + set_fact: + ck_node_ip1 : "{{ ck_node_ips_raw.stdout_lines[0] }}" + when: inventory_hostname in groups[group][0] + - name: sync clickhouse deploy yaml template: src=templates/{{ item }} dest=/tmp/{{ item }} owner=root group=root mode=0644 force=yes unsafe_writes=yes with_items: diff --git a/playbook/roles/clickhouse/templates/clickhouse-cluster/clickhouse-config.yaml b/playbook/roles/clickhouse/templates/clickhouse-cluster/clickhouse-config.yaml index 34cfa116..0a92affa 100644 --- a/playbook/roles/clickhouse/templates/clickhouse-cluster/clickhouse-config.yaml +++ b/playbook/roles/clickhouse/templates/clickhouse-cluster/clickhouse-config.yaml @@ -23,14 +23,12 @@ data: /var/lib/clickhouse/coordination/log /var/lib/clickhouse/coordination/snapshots - 10000 30000 trace 10000 - 0 @@ -49,7 +47,6 @@ data: - clickhouse-0.clickhouse-service.clickhouse diff --git a/playbook/roles/clickhouse/templates/qryn/qryn-deployment.yaml b/playbook/roles/clickhouse/templates/qryn/qryn-deployment.yaml index 3a46d134..6738472f 100644 --- a/playbook/roles/clickhouse/templates/qryn/qryn-deployment.yaml +++ b/playbook/roles/clickhouse/templates/qryn/qryn-deployment.yaml @@ -24,9 +24,9 @@ spec: - name: CLICKHOUSE_AUTH value: "default" - name: CLICKHOUSE_PORT - value: "80" + value: "8123" - name: CLICKHOUSE_SERVER - value: "clickhouse.onwalk.net" + value: "{{ ck_node_ip1 }}" image: qxip/qryn name: qryn ports: @@ -34,4 +34,3 @@ spec: resources: {} restartPolicy: Always status: {} - diff --git a/playbook/roles/common/tasks/main.yml b/playbook/roles/common/tasks/main.yml index 2552fe0a..c83d3a0b 100755 --- a/playbook/roles/common/tasks/main.yml +++ b/playbook/roles/common/tasks/main.yml @@ -20,4 +20,3 @@ - name: Install packages shell: "apt install -y auditd" when: ansible_facts['distribution'] == "Ubuntu" - diff --git a/playbook/roles/common/templates/authorized_keys b/playbook/roles/common/templates/authorized_keys new file mode 100755 index 00000000..f7bb4d56 --- /dev/null +++ b/playbook/roles/common/templates/authorized_keys @@ -0,0 +1,3 @@ +{% for item in ssh_keys %} +{{ item }} +{% endfor %} diff --git a/playbook/roles/deepflow-agent/tasks/main.yml b/playbook/roles/deepflow-agent/tasks/main.yml new file mode 100755 index 00000000..13178a6c --- /dev/null +++ b/playbook/roles/deepflow-agent/tasks/main.yml @@ -0,0 +1,20 @@ +- name: Pre setting + shell: "rm -f /usr/bin/deepflow-agent; rm -f /tmp/deepflow-agent.tar.gz" + when: inventory_hostname in groups[group] + +- name: Download prometheus binary + shell: 'curl -Lo /tmp/deepflow-agent.tar.gz https://deepflow-ce.oss-cn-beijing.aliyuncs.com/bin/agent/stable/linux/amd64/deepflow-agent.tar.gz && \ + tar -zxvf /tmp/deepflow-agent.tar.gz -C /usr/sbin/' + when: inventory_hostname in groups[group] + +- name: Create deepflow-agent service + template: src=templates/deepflow-agent.service dest=/etc/systemd/system/deepflow-agent.service owner=root group=root mode=0644 + when: inventory_hostname in groups[group] + +- name: Create prometheus-agent config + template: src=templates/deepflow-agent.yaml dest=/etc/deepflow-agent.yaml owner=root group=root mode=0644 + when: inventory_hostname in groups[group] + +- name: Init prometheus-agent service + shell: "systemctl enable deepflow-agent && systemctl daemon-reload && systemctl restart deepflow-agent" + when: inventory_hostname in groups[group] diff --git a/playbook/roles/deepflow-agent/templates/deepflow-agent.service b/playbook/roles/deepflow-agent/templates/deepflow-agent.service new file mode 100644 index 00000000..fe040a8e --- /dev/null +++ b/playbook/roles/deepflow-agent/templates/deepflow-agent.service @@ -0,0 +1,14 @@ +[Unit] +Description=deepflow-agent.service +After=syslog.target network-online.target + +[Service] +Environment=GOTRACEBACK=single +LimitCORE=1G +ExecStart=/usr/sbin/deepflow-agent +Restart=always +RestartSec=10 +LimitNOFILE=1024:4096 + +[Install] +WantedBy=multi-user.target diff --git a/playbook/roles/deepflow-agent/templates/deepflow-agent.yaml b/playbook/roles/deepflow-agent/templates/deepflow-agent.yaml new file mode 100644 index 00000000..34ad178c --- /dev/null +++ b/playbook/roles/deepflow-agent/templates/deepflow-agent.yaml @@ -0,0 +1,3 @@ +controller-ips: + - {{ cluster_node }} +vtap-group-id-request: "{{ cluster_id }}" diff --git a/playbook/roles/fluent-bit-agent/tasks/main.yml b/playbook/roles/fluent-bit-agent/tasks/main.yml new file mode 100755 index 00000000..2c045bd6 --- /dev/null +++ b/playbook/roles/fluent-bit-agent/tasks/main.yml @@ -0,0 +1,11 @@ +- name: Install pkgs + shell: 'curl https://raw.githubusercontent.com/fluent/fluent-bit/master/install.sh | sh' + when: inventory_hostname in groups[group] + +- name: Create fluent-bit config + template: src=templates/fluent-bit.conf dest=/etc/fluent-bit/fluent-bit.conf owner=root group=root mode=0644 + when: inventory_hostname in groups[group] + +- name: Init fluent-bit service + shell: "systemctl enable fluent-bit && systemctl daemon-reload && systemctl restart fluent-bit" + when: inventory_hostname in groups[group] diff --git a/playbook/roles/fluent-bit-agent/templates/fluent-bit.conf b/playbook/roles/fluent-bit-agent/templates/fluent-bit.conf new file mode 100644 index 00000000..c1ce480d --- /dev/null +++ b/playbook/roles/fluent-bit-agent/templates/fluent-bit.conf @@ -0,0 +1,57 @@ +[SERVICE] + flush 1 + daemon Off + log_level info + parsers_file parsers.conf + plugins_file plugins.conf + http_server Off + http_listen 0.0.0.0 + http_port 2020 + + storage.metrics on + # storage.path /tmp/storage + # storage.sync normal + # storage.checksum off + # storage.backlog.mem_limit 5M + +[INPUT] + Name tail + Tag syslog + Path /var/log/syslog + Parser syslog-rfc5424 + Mem_Buf_Limit 5MB + Skip_Long_Lines On + Refresh_Interval 10 + +[INPUT] + Name tail + Tag authlog + Path /var/log/auth.log + Parser syslog-rfc5424 + Mem_Buf_Limit 5MB + Skip_Long_Lines On + Refresh_Interval 10 + +[INPUT] + Name systemd + Tag agent + Systemd_Filter _SYSTEMD_UNIT=prometheus-agent.service + +[OUTPUT] + name loki + match syslog + host {{ loki_host }} + port {{ loki_port }} + labels {{ label }} +[OUTPUT] + name loki + match agent + host {{ loki_host }} + port {{ loki_port }} + labels job=agent +[OUTPUT] + name loki + match authlog + host {{ loki_host }} + port {{ loki_port }} + labels job=auth diff --git a/playbook/roles/grafana-agent/meta/main.yml b/playbook/roles/grafana-agent/meta/main.yml new file mode 100644 index 00000000..cfa117fc --- /dev/null +++ b/playbook/roles/grafana-agent/meta/main.yml @@ -0,0 +1,2 @@ +dependencies: + - role: node-exporter diff --git a/playbook/roles/grafana-agent/tasks/main.yml b/playbook/roles/grafana-agent/tasks/main.yml new file mode 100755 index 00000000..60bed6aa --- /dev/null +++ b/playbook/roles/grafana-agent/tasks/main.yml @@ -0,0 +1,16 @@ +- name: Install pkgs + shell: 'curl -Lo /tmp/grafana-agent-0.32.1-1.amd64.deb https://mirrors.onwalk.net/pkgs/grafana-agent-0.32.1-1.amd64.deb && \ + dpkg -i /tmp/grafana-agent-0.32.1-1.amd64.deb && apt install -f' + when: inventory_hostname in groups[group] and ansible_facts['distribution'] = "Ubuntu" +- name: Install pkgs + shell: 'curl -Lo /tmp/grafana-agent-0.32.1-1.amd64.rpm https://mirrors.onwalk.net/pkgs/grafana-agent-0.32.1-1.amd64.rpm && \ + yum install /tmp/grafana-agent-0.32.1-1.amd64.rpm' + when: inventory_hostname in groups[group] and ansible_facts['distribution'] != "Ubuntu" + +- name: Create prometheus-agent config + template: src=templates/prometheus.yml dest=/etc/prometheus/prometheus.yml owner=oot group=root mode=0644 + when: inventory_hostname in groups[group] + +- name: Init grafana-agent service + shell: "systemctl enable grafana-agent && systemctl daemon-reload && systemctl restart grafana-agent" + when: inventory_hostname in groups[group] diff --git a/playbook/roles/grafana-agent/templates/grafana-agent.yaml b/playbook/roles/grafana-agent/templates/grafana-agent.yaml new file mode 100644 index 00000000..3b7320df --- /dev/null +++ b/playbook/roles/grafana-agent/templates/grafana-agent.yaml @@ -0,0 +1,22 @@ +integrations: + agent: + enabled: true +metrics: + wal_directory: /tmp/wal + global: + remote_write: + - url: http://localhost:9009/api/prom/push +loki: + configs: + - name: default + positions: + filename: /tmp/positions.yaml + scrape_configs: + - job_name: varlogs + static_configs: + - targets: [localhost] + labels: + job: varlogs + __path__: /var/log/*log + clients: + - url: http://qryn:3100/loki/api/v1/push diff --git a/playbook/roles/k3s/files/setup-k3s-with-hostpath-sc.sh b/playbook/roles/k3s/files/setup-k3s-with-hostpath-sc.sh index a354e5bb..aa8e628b 100644 --- a/playbook/roles/k3s/files/setup-k3s-with-hostpath-sc.sh +++ b/playbook/roles/k3s/files/setup-k3s-with-hostpath-sc.sh @@ -16,7 +16,7 @@ case `uname -m` in loongarch64) ARCH=loongarch64; ;; *) echo "un-supported arch, exit ..."; exit 1; ;; esac -rm -rf helm.tar.gz* /usr/local/bin/helm || echo true +rm -rf helm.tar.gz* /usr/local/bin/helm || echo true sudo wget --no-check-certificate https://mirrors.onwalk.net/tools/linux-${ARCH}/helm.tar.gz && sudo tar -xvpf helm.tar.gz -C /usr/local/bin/ sudo chmod 755 /usr/local/bin/helm diff --git a/playbook/roles/keycloak/files/setup-keycloak.sh b/playbook/roles/keycloak/files/setup-keycloak.sh index cfbbd538..abe91c8c 100644 --- a/playbook/roles/keycloak/files/setup-keycloak.sh +++ b/playbook/roles/keycloak/files/setup-keycloak.sh @@ -28,6 +28,7 @@ externalDatabase: password: "$keycloak_db_password" EOF -helm repo add bitnami https://charts.bitnami.com/bitnami || echo true +helm repo add stable https://artifact.onwalk.net/chartrepo/public/ || echo true helm repo update -helm upgrade --install keycloak bitnami/keycloak -n $namespace -f keycloak-values.yaml +kubectl create ns ${namespace} || echo true +helm upgrade --install keycloak stable/keycloak -n $namespace -f keycloak-values.yaml diff --git a/playbook/roles/keycloak/tasks/main.yml b/playbook/roles/keycloak/tasks/main.yml index ec783c30..eacbeb4c 100755 --- a/playbook/roles/keycloak/tasks/main.yml +++ b/playbook/roles/keycloak/tasks/main.yml @@ -1,5 +1,5 @@ - name: get db password - shell: 'kubectl get secret --namespace database postgresql -o jsonpath="{.data.postgres-password}" | base64 -d' + shell: 'kubectl get secret --namespace database postgresql -o jsonpath="{.data.postgres-password}" | base64 -d' register: command_raw when: inventory_hostname in groups[group][0] @@ -14,3 +14,12 @@ - name: Setup Keycloak Server script: files/setup-keycloak.sh {{ hostvars[groups[group][0]].keycloak_db_password }} {{ admin_password }} {{ domain }} {{ secret }} {{ namespace }} when: inventory_hostname in groups[group] + +- name: Sync aws-gloabl-oidc-broker deploy yaml + template: src=templates/{{ item }} dest=/tmp/{{ item }} owner=root group=root mode=0644 force=yes unsafe_writes=yes + with_items: + - aws-gloabl-oidc-broker.yaml + +- name: Setup aws-gloabl-oidc-broker + shell: "kubectl apply -f /tmp/aws-gloabl-oidc-broker.yaml" + when: inventory_hostname in groups[group] diff --git a/playbook/roles/keycloak/templates/aws-gloabl-oidc-broker.yaml b/playbook/roles/keycloak/templates/aws-gloabl-oidc-broker.yaml new file mode 100644 index 00000000..0aa9fd23 --- /dev/null +++ b/playbook/roles/keycloak/templates/aws-gloabl-oidc-broker.yaml @@ -0,0 +1,74 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: aws-global-oidc-broker + namespace: itsm + labels: + io.metrico.service: aws-global-oidc-broker +spec: + replicas: 1 + selector: + matchLabels: + io.metrico.service: aws-global-oidc-broker + strategy: {} + template: + metadata: + creationTimestamp: null + labels: + io.metrico.service: aws-global-oidc-broker + spec: + containers: + - name: aws-global-oidc-broker + image: artifact.onwalk.net/public/aws-global-oidc-broker:1.2.0 + ports: + - containerPort: 5000 + resources: {} + env: + - name: KEYCLOAK_CLIENT_ID + value: "aws-oidc" + - name: KEYCLOAK_WELLKNOWN + value: "https://keycloak.apollo-ev.com/realms/cloud-sso/.well-known/openid-configuration" + - name: KEYCLOAK_CLIENT_SECRET + value: "WYyZJGUOOiwooIp700PtykmjYkrsPJPi" + - name: TITLE + value: "aws-oidc" + restartPolicy: Always +--- +apiVersion: v1 +kind: Service +metadata: + creationTimestamp: null + name: aws-global-oidc-broker + namespace: itsm +spec: + ports: + - name: "5000" + port: 5000 + nodePort: 5000 + targetPort: 5000 + selector: + io.metrico.service: aws-global-oidc-broker + type: NodePort +--- +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: aws-global-oidc-broker + namespace: itsm +spec: + ingressClassName: nginx + rules: + - host: loki.apollo-ev.com + http: + paths: + - path: / + pathType: Prefix + backend: + service: + name: aws-global-oidc-broker + port: + number: 5000 + tls: + - hosts: + - loki.apollo-ev.com + secretName: keycloak-tls diff --git a/playbook/roles/mysql/tasks/main.yml b/playbook/roles/mysql/tasks/main.yml index 7a867d6c..789f3984 100755 --- a/playbook/roles/mysql/tasks/main.yml +++ b/playbook/roles/mysql/tasks/main.yml @@ -1,5 +1,5 @@ - name: Setup MySQL Server - script: files/setup-mysql.sh + script: files/setup-mysql.sh when: inventory_hostname in groups[group] - name: Post Setup MySQL Server diff --git a/playbook/roles/openldap/files/setup-openldap.sh b/playbook/roles/openldap/files/setup-openldap.sh index 20d1f24c..a477995f 100644 --- a/playbook/roles/openldap/files/setup-openldap.sh +++ b/playbook/roles/openldap/files/setup-openldap.sh @@ -38,7 +38,7 @@ ltb-passwd: - openldap-ltb.${domain} EOF -helm repo add helm-openldap https://jp-gouin.github.io/helm-openldap/ +helm repo add stable https://artifact.onwalk.net/chartrepo/public/ helm repo up kubectl create ns ${namespace} || echo true -helm upgrade --install openldap helm-openldap/openldap-stack-ha -n ${namespace} --create-namespace -f openldap-vaules.yaml +helm upgrade --install openldap stable/openldap-stack-ha -n ${namespace} --create-namespace -f openldap-vaules.yaml diff --git a/playbook/roles/prometheus-transfer/meta/main.yml b/playbook/roles/prometheus-transfer/meta/main.yml new file mode 100644 index 00000000..cfa117fc --- /dev/null +++ b/playbook/roles/prometheus-transfer/meta/main.yml @@ -0,0 +1,2 @@ +dependencies: + - role: node-exporter diff --git a/playbook/roles/prometheus-transfer/tasks/main.yml b/playbook/roles/prometheus-transfer/tasks/main.yml new file mode 100755 index 00000000..dd139d32 --- /dev/null +++ b/playbook/roles/prometheus-transfer/tasks/main.yml @@ -0,0 +1,21 @@ +- name: Pre setting + shell: "rm -f /usr/bin/prometheus; mkdir -pv /opt/prometheus/data/ && chown prometheus:prometheus /opt/prometheus/data/" + +- name: download prometheus binary + shell: 'curl -Lo /usr/bin/prometheus https://mirrors.onwalk.net/tools/linux-amd64/prometheus && chmod 755 /usr/bin/prometheus' + +- name: create prometheus-transfer service + template: src=templates/prometheus-transfer.service dest=/etc/systemd/system/prometheus-transfer.service owner=root group=root mode=0644 + +- name: create prometheus-transfer config + template: src=templates/prometheus-transfer.yml dest=/etc/prometheus/prometheus-transfer.yml owner=root group=root mode=0644 + +- name: create prometheus-transfer start script + template: src=templates/start-prometheus-transfer-service.sh dest=/usr/bin/start-prometheus-transfer-service.sh owner=root group=root mode=0755 + +- name: create prometheus-transfer stop script + template: src=templates/stop-prometheus-transfer-service.sh dest=/usr/bin/stop-prometheus-transfer-service.sh owner=root group=root mode=0755 + +- name: init prometheus-transfer service + shell: "systemctl enable prometheus-transfer && systemctl daemon-reload && systemctl restart prometheus-transfer" + diff --git a/playbook/roles/prometheus-transfer/templates/prometheus-transfer.service b/playbook/roles/prometheus-transfer/templates/prometheus-transfer.service new file mode 100644 index 00000000..99b2750a --- /dev/null +++ b/playbook/roles/prometheus-transfer/templates/prometheus-transfer.service @@ -0,0 +1,16 @@ +[Unit] +Description=Prometheus +Documentation=https://prometheus.io/ +After=network.target + +[Service] +Type=simple +User=prometheus +ExecStart=/usr/bin/start-prometheus-transfer-service.sh +ExecStop=/usr/bin/stop-prometheus-transfer-service.sh +Restart=on-failure +RestartSec=30 +StartLimitInterval=0 + +[Install] +WantedBy=multi-user.target diff --git a/playbook/roles/prometheus-transfer/templates/prometheus-transfer.yml b/playbook/roles/prometheus-transfer/templates/prometheus-transfer.yml new file mode 100644 index 00000000..f3b536bc --- /dev/null +++ b/playbook/roles/prometheus-transfer/templates/prometheus-transfer.yml @@ -0,0 +1,9 @@ +global: + scrape_interval: 3s + evaluation_interval: 3s +remote_read: + - url: '{{ remote_read }}' + read_recent: true + basic_auth: + username: '{{ remote_user }}' + password: '{{ remote_token }}' diff --git a/playbook/roles/prometheus-transfer/templates/start-prometheus-transfer-service.sh b/playbook/roles/prometheus-transfer/templates/start-prometheus-transfer-service.sh new file mode 100755 index 00000000..f9c01a30 --- /dev/null +++ b/playbook/roles/prometheus-transfer/templates/start-prometheus-transfer-service.sh @@ -0,0 +1,2 @@ +#!/bin/sh +/usr/bin/prometheus --config.file=/etc/prometheus/prometheus-transfer.yml --web.listen-address="0.0.0.0:9092" --web.enable-lifecycle --storage.tsdb.path="/opt/prometheus/data/" diff --git a/playbook/roles/prometheus-transfer/templates/stop-prometheus-transfer-service.sh b/playbook/roles/prometheus-transfer/templates/stop-prometheus-transfer-service.sh new file mode 100755 index 00000000..bb2b3914 --- /dev/null +++ b/playbook/roles/prometheus-transfer/templates/stop-prometheus-transfer-service.sh @@ -0,0 +1,2 @@ +#!/bin/sh +pkill -9 prometheus diff --git a/playbook/roles/redis/tasks/main.yml b/playbook/roles/redis/tasks/main.yml index f9a4309e..98200ff7 100755 --- a/playbook/roles/redis/tasks/main.yml +++ b/playbook/roles/redis/tasks/main.yml @@ -1,3 +1,3 @@ - name: Setup Redis Server - script: files/setup-redis.sh + script: files/setup-redis.sh when: inventory_hostname in groups[group] diff --git a/playbook/roles/xtls-server/tasks/main.yml b/playbook/roles/xtls-server/tasks/main.yml new file mode 100755 index 00000000..db355833 --- /dev/null +++ b/playbook/roles/xtls-server/tasks/main.yml @@ -0,0 +1,23 @@ +- name: Remove fluent-bit service + shell: "systemctl disable fluent-bit && systemctl stop fluent-bit" + when: inventory_hostname in groups[group] + +- name: Pre setting + shell: "rm -f /usr/bin/promtail; mkdir -pv /etc/promtail/ && touch /var/log/positions.yaml" + when: inventory_hostname in groups[group] + +- name: Download promtail binary + shell: 'curl -Lo /usr/bin/promtail https://mirrors.onwalk.net/tools/linux-amd64/promtail && chmod 755 /usr/bin/promtail' + when: inventory_hostname in groups[group] + +- name: Create promtail-agent service + template: src=templates/promtail-agent.service dest=/lib/systemd/system/promtail-agent.service owner=root group=root mode=0644 + when: inventory_hostname in groups[group] + +- name: Create promtail-agent config + template: src=templates/promtail.yaml dest=/etc/promtail/promtail.yaml owner=root group=root mode=0644 + when: inventory_hostname in groups[group] + +- name: Init promtail-agent service + shell: "systemctl enable promtail-agent && systemctl daemon-reload && systemctl restart promtail-agent" + when: inventory_hostname in groups[group] diff --git a/playbook/roles/xtls-server/templates/config.json b/playbook/roles/xtls-server/templates/config.json new file mode 100644 index 00000000..494ffc26 --- /dev/null +++ b/playbook/roles/xtls-server/templates/config.json @@ -0,0 +1,84 @@ +{ + "log": { + "loglevel": "warning" + }, + "routing": { + "domainStrategy": "IPIfNonMatch", + "rules": [ + { + "type": "field", + "ip": [ + "geoip:cn" + ], + "outboundTag": "block" + } + ] + }, + "inbounds": [ + { + "listen": "0.0.0.0", + "port": 1443, + "protocol": "vless", + "settings": { + "clients": [ + { + "id": "18d270a9-533d-4b13-b3f1-e7f55540a9b2", + "flow": "xtls-rprx-vision" + } + ], + "decryption": "none", + "fallbacks": [ + { + "dest": "8001", + "xver": 1 + }, + { + "alpn": "h2", + "dest": "8002", + "xver": 1 + } + ] + }, + "streamSettings": { + "network": "tcp", + "security": "tls", + "tlsSettings": { + "rejectUnknownSni": true, + "minVersion": "1.2", + "certificates": [ + { + "ocspStapling": 3600, + "certificateFile": "/etc/ssl/onwalk.net.pem", + "keyFile": "/etc/ssl/onwalk.net.key" + } + ] + } + }, + "sniffing": { + "enabled": true, + "destOverride": [ + "http", + "tls" + ] + } + } + ], + "outbounds": [ + { + "protocol": "freedom", + "tag": "direct" + }, + { + "protocol": "blackhole", + "tag": "block" + } + ], + "policy": { + "levels": { + "0": { + "handshake": 2, + "connIdle": 120 + } + } + } +}