From acf4e78c5b9071d82e34e2e9cda821d274ec0fa9 Mon Sep 17 00:00:00 2001 From: Haitao Pan Date: Wed, 20 Dec 2023 18:55:44 +0800 Subject: [PATCH] remove playbook iac_modules --- .github/workflows/iac-pipeline-destroy.yml | 199 ++++++++++ .github/workflows/pipeline.yml | 360 ++++++++++++++++++ Architectures.uml | 75 ++++ Layered_Architecture.uml | 30 ++ README.md | 3 + infrastructure/Pulumi.dev.yaml | 1 - infrastructure/Pulumi.yaml | 6 - infrastructure/__main__.py | 30 -- infrastructure/cloud_manager/__init__.py | 0 infrastructure/cloud_manager/aws_provider.py | 25 -- infrastructure/cloud_manager/main.py | 16 - infrastructure/cloud_manager/models.py | 30 -- .../cloud_manager/providers/__init__.py | 0 .../cloud_manager/providers/aws/__init__.py | 0 .../cloud_manager/providers/aws/ec2.py | 18 - .../cloud_manager/providers/aws/eks.py | 0 .../cloud_manager/providers/aws/iam.py | 0 .../cloud_manager/providers/aws/rds.py | 0 .../cloud_manager/providers/aws/s3.py | 0 .../cloud_manager/providers/aws/vpc.py | 0 .../cloud_manager/providers/aws_provider.py | 27 -- infrastructure/config/__init__.py | 13 - infrastructure/main.py | 16 - infrastructure/requirements.txt | 3 - infrastructure/resource/aws/__init__.py | 200 ---------- infrastructure/scripts/create_resources.py | 0 infrastructure/scripts/delete_resources.py | 0 infrastructure/scripts/migrate_resources.py | 0 infrastructure/scripts/query_resources.py | 0 infrastructure/scripts/update_resources.py | 0 playbook/.gitignore | 1 - playbook/Pulumi.dev.yaml | 1 - playbook/Pulumi.yaml | 6 - playbook/README.md | 20 - playbook/__main__.py | 55 --- playbook/ansible.cfg | 13 - playbook/hosts/id_rsa | 0 playbook/hosts/inventory | 0 playbook/jobs/init_bookinfo | 19 - playbook/jobs/init_chartmuseum | 19 - playbook/jobs/init_chatwithgpt | 18 - playbook/jobs/init_clickhouse | 10 - playbook/jobs/init_datadog_agent | 10 - playbook/jobs/init_fluxcd | 12 - playbook/jobs/init_gitlab | 23 -- playbook/jobs/init_harbor | 20 - playbook/jobs/init_jenkins | 19 - playbook/jobs/init_k3s_cluster | 26 -- playbook/jobs/init_k3s_cluster_apisix | 54 --- playbook/jobs/init_k3s_cluster_artifact | 34 -- playbook/jobs/init_k3s_cluster_bookinfo | 22 -- playbook/jobs/init_k3s_cluster_gitlab | 30 -- playbook/jobs/init_k3s_cluster_std | 30 -- playbook/jobs/init_keycloak | 19 - playbook/jobs/init_log_agent | 13 - playbook/jobs/init_metric_agent | 16 - playbook/jobs/init_mysql | 10 - playbook/jobs/init_nginx_oss | 18 - playbook/jobs/init_observability-agent | 15 - playbook/jobs/init_observability-server | 19 - playbook/jobs/init_openldap | 17 - playbook/jobs/init_postgresql | 11 - playbook/jobs/init_redis | 10 - playbook/jobs/init_ssl_cert | 12 - playbook/jobs/init_ssl_certs | 18 - playbook/jobs/roles | 1 - playbook/requirements.txt | 4 - .../alerting/files/setup-observable-server.sh | 102 ----- playbook/roles/alerting/meta/main.yml | 2 - playbook/roles/alerting/tasks/main.yml | 17 - .../roles/alerting/templates/alerting_rules | 37 -- .../roles/alerting/templates/recording_rules | 55 --- playbook/roles/bookinfo/meta/main.yml | 3 - playbook/roles/bookinfo/tasks/main.yml | 26 -- playbook/roles/bookinfo/templates/.gitignore | 2 - .../templates/datadog-apm/apline-cli.yaml | 20 - .../datadog-apm/bookinfo-details.yaml | 55 --- .../datadog-apm/bookinfo-ingress.yaml | 56 --- .../bookinfo-productpage-python.yaml | 93 ----- .../datadog-apm/bookinfo-ratings.yaml | 86 ----- .../datadog-apm/bookinfo-reviews.yaml | 245 ------------ .../templates/deepflow-apm/apline-cli.yaml | 20 - .../deepflow-apm/bookinfo-details.yaml | 55 --- .../deepflow-apm/bookinfo-ingress.yaml | 56 --- .../bookinfo-productpage-python.yaml | 61 --- .../deepflow-apm/bookinfo-ratings.yaml | 55 --- .../deepflow-apm/bookinfo-reviews.yaml | 145 ------- .../files/certs_automated_issuance.sh | 32 -- .../cert-manager/files/update-certs-secret.sh | 10 - playbook/roles/cert-manager/meta/main.yml | 2 - playbook/roles/cert-manager/tasks/main.yml | 3 - playbook/roles/chartmuseum/files/setup.sh | 37 -- playbook/roles/chartmuseum/meta/main.yml | 3 - playbook/roles/chartmuseum/tasks/main.yml | 4 - playbook/roles/chatwithgpt/meta/main.yml | 3 - playbook/roles/chatwithgpt/tasks/main.yml | 11 - .../roles/chatwithgpt/templates/.gitignore | 2 - .../chatwithgpt/templates/chatwithgpt.yaml | 104 ----- playbook/roles/clickhouse/tasks/main.yml | 38 -- .../roles/clickhouse/templates/.gitignore | 2 - .../clickhouse-cluster/clickhouse-config.yaml | 94 ----- .../clickhouse-ingress.yaml | 18 - .../clickhouse-service.yaml | 23 -- .../clickhouse-statefulset.yml | 103 ----- .../clickhouse-user-config.yaml | 19 - .../templates/qryn/qryn-deployment.yaml | 36 -- .../templates/qryn/qryn-ingress.yaml | 18 - .../templates/qryn/qryn-service.yaml | 19 - playbook/roles/common/tasks/main.yml | 22 -- .../roles/common/templates/authorized_keys | 3 - playbook/roles/common/templates/hostname | 1 - playbook/roles/common/templates/hosts | 12 - .../common/templates/logrotate-monitor-agent | 8 - playbook/roles/datadog-agent/files/setup.sh | 29 -- playbook/roles/datadog-agent/meta/main.yml | 2 - playbook/roles/datadog-agent/tasks/main.yml | 3 - playbook/roles/deepflow-agent/tasks/main.yml | 20 - .../templates/deepflow-agent.service | 14 - .../templates/deepflow-agent.yaml | 3 - playbook/roles/dts-data-x/create_keys.sh | 40 -- playbook/roles/dts-data-x/tasks/main.yml | 15 - .../roles/dts-data-x/templates/config.json | 84 ---- playbook/roles/dts-flink-cdc/create_keys.sh | 40 -- playbook/roles/dts-flink-cdc/tasks/main.yml | 15 - .../roles/dts-flink-cdc/templates/config.json | 84 ---- playbook/roles/dts-flink-x/create_keys.sh | 40 -- playbook/roles/dts-flink-x/tasks/main.yml | 15 - .../roles/dts-flink-x/templates/config.json | 84 ---- .../roles/fluent-bit-agent/tasks/main.yml | 11 - .../templates/fluent-bit.conf | 57 --- playbook/roles/fluxcd/files/setup.sh | 40 -- playbook/roles/fluxcd/meta/main.yml | 2 - playbook/roles/fluxcd/tasks/main.yml | 3 - playbook/roles/gitlab/files/post-setup.sh | 30 -- playbook/roles/gitlab/files/pre-setup.sh | 9 - .../roles/gitlab/files/setup-with-oidc.sh | 106 ------ .../roles/gitlab/files/setup-with_aws-s3.sh | 154 -------- playbook/roles/gitlab/files/setup.sh | 119 ------ playbook/roles/gitlab/meta/main.yml | 5 - playbook/roles/gitlab/tasks/main.yml | 58 --- .../roles/gitlab/templates/gitlab-backup-cfg | 5 - playbook/roles/gitlab/templates/provider.yaml | 18 - playbook/roles/grafana-agent/meta/main.yml | 2 - playbook/roles/grafana-agent/tasks/main.yml | 16 - .../templates/grafana-agent.yaml | 22 -- playbook/roles/harbor/files/post-setup.sh | 14 - playbook/roles/harbor/files/pre-setup.sh | 7 - .../harbor/files/setup-bitnami-harbor.sh | 73 ---- .../roles/harbor/files/setup-office-harbor.sh | 91 ----- playbook/roles/harbor/meta/main.yml | 5 - playbook/roles/harbor/tasks/main.yml | 38 -- .../harbor/templates/harbor-oidc-config.json | 11 - playbook/roles/jenkins/files/pre-setup.sh | 6 - .../roles/jenkins/files/setup-with-jcasc.sh | 74 ---- playbook/roles/jenkins/files/setup.sh | 60 --- playbook/roles/jenkins/howto.md | 18 - playbook/roles/jenkins/meta/main.yml | 4 - playbook/roles/jenkins/tasks/main.yml | 18 - .../k3s-addon/files/setup-dns-provider.sh | 25 -- .../roles/k3s-addon/files/setup-egress.sh | 24 -- .../roles/k3s-addon/files/setup-ingress.sh | 147 ------- playbook/roles/k3s-addon/meta/main.yml | 3 - playbook/roles/k3s-addon/tasks/main.yml | 36 -- .../templates/ingress-apisix-dashboard.yaml | 33 -- .../templates/ingress-apisix-values.yaml | 24 -- .../kubernetes-discovery-config.yaml | 65 ---- .../kubernetes-discovery-serviceaccount.yaml | 40 -- .../templates/kubernetes-discovery.yaml | 47 --- playbook/roles/k3s-reset/files/reset-k3s.sh | 32 -- playbook/roles/k3s-reset/tasks/main.yml | 4 - playbook/roles/k3s/files/setup-cni-cilium.sh | 19 - playbook/roles/k3s/files/setup-cni-kubeovn.sh | 17 - playbook/roles/k3s/files/setup-k3s.sh | 58 --- playbook/roles/k3s/meta/main.yml | 2 - playbook/roles/k3s/tasks/main.yml | 11 - .../roles/keycloak/files/setup-keycloak.sh | 35 -- playbook/roles/keycloak/meta/main.yml | 4 - playbook/roles/keycloak/tasks/main.yml | 26 -- .../templates/aws-gloabl-oidc-broker.yaml | 74 ---- playbook/roles/mysql/files/post-setup.sh | 6 - playbook/roles/mysql/files/setup-mysql.sh | 6 - playbook/roles/mysql/tasks/main.yml | 8 - playbook/roles/nginx-oss/meta/main.yml | 3 - playbook/roles/nginx-oss/tasks/main.yml | 16 - playbook/roles/nginx-oss/templates/.gitignore | 2 - .../templates/mirrors-nginx-apisix.yaml | 33 -- .../templates/mirrors-nginx-ingress.yaml | 25 -- .../nginx-oss/templates/mirrors-nginx.yaml | 110 ------ playbook/roles/node-exporter/tasks/main.yml | 23 -- .../templates/node-exporter.service | 14 - .../roles/observability-agent/files/setup.sh | 48 --- .../roles/observability-agent/meta/main.yml | 2 - .../roles/observability-agent/tasks/main.yml | 3 - .../files/setup-observable-server.sh | 122 ------ .../roles/observability-server/meta/main.yml | 5 - .../roles/observability-server/tasks/main.yml | 34 -- .../roles/openldap/files/setup-openldap.sh | 44 --- playbook/roles/openldap/meta/main.yml | 3 - playbook/roles/openldap/tasks/main.yml | 12 - playbook/roles/openldap/templates/.gitignore | 2 - .../roles/openldap/templates/ingress.yaml | 45 --- playbook/roles/postgresql/files/post-setup.sh | 16 - .../postgresql/files/setup-postgresql.sh | 8 - playbook/roles/postgresql/tasks/main.yml | 3 - playbook/roles/prometheus-agent/meta/main.yml | 3 - .../roles/prometheus-agent/tasks/main.yml | 28 -- .../templates/prometheus-agent.service | 16 - .../prometheus-agent/templates/prometheus.yml | 10 - .../start-prometheus-agent-service.sh | 2 - .../stop-prometheus-agent-service.sh | 2 - .../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/promtail-agent/meta/main.yml | 2 - playbook/roles/promtail-agent/tasks/main.yml | 19 - .../templates/promtail-agent.service | 15 - .../promtail-agent/templates/promtail.yaml | 38 -- playbook/roles/redis/files/setup-redis.sh | 4 - playbook/roles/redis/tasks/main.yml | 3 - playbook/roles/secret-manger/tasks/main.yml | 48 --- .../roles/wireguard-client/create_keys.sh | 40 -- .../roles/wireguard-client/tasks/main.yml | 15 - .../wireguard-client/templates/config.json | 84 ---- .../roles/wireguard-dateway/create_keys.sh | 40 -- .../roles/wireguard-dateway/tasks/main.yml | 15 - .../templates/create-vpn-config.sh | 35 -- playbook/roles/xtls-server/tasks/main.yml | 15 - .../roles/xtls-server/templates/config.json | 84 ---- playbook/templates/id_rsa | 1 - playbook/templates/inventory | 14 - 233 files changed, 667 insertions(+), 6296 deletions(-) create mode 100644 .github/workflows/iac-pipeline-destroy.yml create mode 100644 .github/workflows/pipeline.yml create mode 100644 Architectures.uml create mode 100644 Layered_Architecture.uml delete mode 100644 infrastructure/Pulumi.dev.yaml delete mode 100644 infrastructure/Pulumi.yaml delete mode 100644 infrastructure/__main__.py delete mode 100644 infrastructure/cloud_manager/__init__.py delete mode 100644 infrastructure/cloud_manager/aws_provider.py delete mode 100644 infrastructure/cloud_manager/main.py delete mode 100644 infrastructure/cloud_manager/models.py delete mode 100644 infrastructure/cloud_manager/providers/__init__.py delete mode 100644 infrastructure/cloud_manager/providers/aws/__init__.py delete mode 100644 infrastructure/cloud_manager/providers/aws/ec2.py delete mode 100644 infrastructure/cloud_manager/providers/aws/eks.py delete mode 100644 infrastructure/cloud_manager/providers/aws/iam.py delete mode 100644 infrastructure/cloud_manager/providers/aws/rds.py delete mode 100644 infrastructure/cloud_manager/providers/aws/s3.py delete mode 100644 infrastructure/cloud_manager/providers/aws/vpc.py delete mode 100644 infrastructure/cloud_manager/providers/aws_provider.py delete mode 100644 infrastructure/config/__init__.py delete mode 100644 infrastructure/main.py delete mode 100644 infrastructure/requirements.txt delete mode 100644 infrastructure/resource/aws/__init__.py delete mode 100644 infrastructure/scripts/create_resources.py delete mode 100644 infrastructure/scripts/delete_resources.py delete mode 100644 infrastructure/scripts/migrate_resources.py delete mode 100644 infrastructure/scripts/query_resources.py delete mode 100644 infrastructure/scripts/update_resources.py delete mode 100644 playbook/.gitignore delete mode 100644 playbook/Pulumi.dev.yaml delete mode 100644 playbook/Pulumi.yaml delete mode 100644 playbook/README.md delete mode 100644 playbook/__main__.py delete mode 100644 playbook/ansible.cfg delete mode 100755 playbook/hosts/id_rsa delete mode 100644 playbook/hosts/inventory delete mode 100644 playbook/jobs/init_bookinfo delete mode 100644 playbook/jobs/init_chartmuseum delete mode 100644 playbook/jobs/init_chatwithgpt delete mode 100644 playbook/jobs/init_clickhouse delete mode 100644 playbook/jobs/init_datadog_agent delete mode 100644 playbook/jobs/init_fluxcd delete mode 100644 playbook/jobs/init_gitlab delete mode 100644 playbook/jobs/init_harbor delete mode 100644 playbook/jobs/init_jenkins delete mode 100644 playbook/jobs/init_k3s_cluster delete mode 100644 playbook/jobs/init_k3s_cluster_apisix delete mode 100644 playbook/jobs/init_k3s_cluster_artifact delete mode 100644 playbook/jobs/init_k3s_cluster_bookinfo delete mode 100644 playbook/jobs/init_k3s_cluster_gitlab delete mode 100644 playbook/jobs/init_k3s_cluster_std delete mode 100644 playbook/jobs/init_keycloak delete mode 100644 playbook/jobs/init_log_agent delete mode 100644 playbook/jobs/init_metric_agent delete mode 100644 playbook/jobs/init_mysql delete mode 100644 playbook/jobs/init_nginx_oss delete mode 100644 playbook/jobs/init_observability-agent delete mode 100644 playbook/jobs/init_observability-server delete mode 100644 playbook/jobs/init_openldap delete mode 100644 playbook/jobs/init_postgresql delete mode 100644 playbook/jobs/init_redis delete mode 100644 playbook/jobs/init_ssl_cert delete mode 100644 playbook/jobs/init_ssl_certs delete mode 120000 playbook/jobs/roles delete mode 100644 playbook/requirements.txt delete mode 100644 playbook/roles/alerting/files/setup-observable-server.sh delete mode 100644 playbook/roles/alerting/meta/main.yml delete mode 100755 playbook/roles/alerting/tasks/main.yml delete mode 100644 playbook/roles/alerting/templates/alerting_rules delete mode 100644 playbook/roles/alerting/templates/recording_rules delete mode 100644 playbook/roles/bookinfo/meta/main.yml delete mode 100755 playbook/roles/bookinfo/tasks/main.yml delete mode 100644 playbook/roles/bookinfo/templates/.gitignore delete mode 100644 playbook/roles/bookinfo/templates/datadog-apm/apline-cli.yaml delete mode 100644 playbook/roles/bookinfo/templates/datadog-apm/bookinfo-details.yaml delete mode 100644 playbook/roles/bookinfo/templates/datadog-apm/bookinfo-ingress.yaml delete mode 100644 playbook/roles/bookinfo/templates/datadog-apm/bookinfo-productpage-python.yaml delete mode 100644 playbook/roles/bookinfo/templates/datadog-apm/bookinfo-ratings.yaml delete mode 100644 playbook/roles/bookinfo/templates/datadog-apm/bookinfo-reviews.yaml delete mode 100644 playbook/roles/bookinfo/templates/deepflow-apm/apline-cli.yaml delete mode 100644 playbook/roles/bookinfo/templates/deepflow-apm/bookinfo-details.yaml delete mode 100644 playbook/roles/bookinfo/templates/deepflow-apm/bookinfo-ingress.yaml delete mode 100644 playbook/roles/bookinfo/templates/deepflow-apm/bookinfo-productpage-python.yaml delete mode 100644 playbook/roles/bookinfo/templates/deepflow-apm/bookinfo-ratings.yaml delete mode 100644 playbook/roles/bookinfo/templates/deepflow-apm/bookinfo-reviews.yaml delete mode 100644 playbook/roles/cert-manager/files/certs_automated_issuance.sh delete mode 100644 playbook/roles/cert-manager/files/update-certs-secret.sh delete mode 100644 playbook/roles/cert-manager/meta/main.yml delete mode 100755 playbook/roles/cert-manager/tasks/main.yml delete mode 100644 playbook/roles/chartmuseum/files/setup.sh delete mode 100644 playbook/roles/chartmuseum/meta/main.yml delete mode 100755 playbook/roles/chartmuseum/tasks/main.yml delete mode 100644 playbook/roles/chatwithgpt/meta/main.yml delete mode 100755 playbook/roles/chatwithgpt/tasks/main.yml delete mode 100644 playbook/roles/chatwithgpt/templates/.gitignore delete mode 100644 playbook/roles/chatwithgpt/templates/chatwithgpt.yaml delete mode 100755 playbook/roles/clickhouse/tasks/main.yml delete mode 100644 playbook/roles/clickhouse/templates/.gitignore delete mode 100644 playbook/roles/clickhouse/templates/clickhouse-cluster/clickhouse-config.yaml delete mode 100644 playbook/roles/clickhouse/templates/clickhouse-cluster/clickhouse-ingress.yaml delete mode 100644 playbook/roles/clickhouse/templates/clickhouse-cluster/clickhouse-service.yaml delete mode 100644 playbook/roles/clickhouse/templates/clickhouse-cluster/clickhouse-statefulset.yml delete mode 100644 playbook/roles/clickhouse/templates/clickhouse-cluster/clickhouse-user-config.yaml delete mode 100644 playbook/roles/clickhouse/templates/qryn/qryn-deployment.yaml delete mode 100644 playbook/roles/clickhouse/templates/qryn/qryn-ingress.yaml delete mode 100644 playbook/roles/clickhouse/templates/qryn/qryn-service.yaml delete mode 100755 playbook/roles/common/tasks/main.yml delete mode 100755 playbook/roles/common/templates/authorized_keys delete mode 100755 playbook/roles/common/templates/hostname delete mode 100755 playbook/roles/common/templates/hosts delete mode 100644 playbook/roles/common/templates/logrotate-monitor-agent delete mode 100644 playbook/roles/datadog-agent/files/setup.sh delete mode 100644 playbook/roles/datadog-agent/meta/main.yml delete mode 100755 playbook/roles/datadog-agent/tasks/main.yml delete mode 100755 playbook/roles/deepflow-agent/tasks/main.yml delete mode 100644 playbook/roles/deepflow-agent/templates/deepflow-agent.service delete mode 100644 playbook/roles/deepflow-agent/templates/deepflow-agent.yaml delete mode 100644 playbook/roles/dts-data-x/create_keys.sh delete mode 100755 playbook/roles/dts-data-x/tasks/main.yml delete mode 100644 playbook/roles/dts-data-x/templates/config.json delete mode 100644 playbook/roles/dts-flink-cdc/create_keys.sh delete mode 100755 playbook/roles/dts-flink-cdc/tasks/main.yml delete mode 100644 playbook/roles/dts-flink-cdc/templates/config.json delete mode 100644 playbook/roles/dts-flink-x/create_keys.sh delete mode 100755 playbook/roles/dts-flink-x/tasks/main.yml delete mode 100644 playbook/roles/dts-flink-x/templates/config.json delete mode 100755 playbook/roles/fluent-bit-agent/tasks/main.yml delete mode 100644 playbook/roles/fluent-bit-agent/templates/fluent-bit.conf delete mode 100644 playbook/roles/fluxcd/files/setup.sh delete mode 100644 playbook/roles/fluxcd/meta/main.yml delete mode 100755 playbook/roles/fluxcd/tasks/main.yml delete mode 100755 playbook/roles/gitlab/files/post-setup.sh delete mode 100755 playbook/roles/gitlab/files/pre-setup.sh delete mode 100644 playbook/roles/gitlab/files/setup-with-oidc.sh delete mode 100644 playbook/roles/gitlab/files/setup-with_aws-s3.sh delete mode 100644 playbook/roles/gitlab/files/setup.sh delete mode 100644 playbook/roles/gitlab/meta/main.yml delete mode 100755 playbook/roles/gitlab/tasks/main.yml delete mode 100644 playbook/roles/gitlab/templates/gitlab-backup-cfg delete mode 100644 playbook/roles/gitlab/templates/provider.yaml delete mode 100644 playbook/roles/grafana-agent/meta/main.yml delete mode 100755 playbook/roles/grafana-agent/tasks/main.yml delete mode 100644 playbook/roles/grafana-agent/templates/grafana-agent.yaml delete mode 100644 playbook/roles/harbor/files/post-setup.sh delete mode 100644 playbook/roles/harbor/files/pre-setup.sh delete mode 100644 playbook/roles/harbor/files/setup-bitnami-harbor.sh delete mode 100644 playbook/roles/harbor/files/setup-office-harbor.sh delete mode 100644 playbook/roles/harbor/meta/main.yml delete mode 100755 playbook/roles/harbor/tasks/main.yml delete mode 100644 playbook/roles/harbor/templates/harbor-oidc-config.json delete mode 100644 playbook/roles/jenkins/files/pre-setup.sh delete mode 100644 playbook/roles/jenkins/files/setup-with-jcasc.sh delete mode 100644 playbook/roles/jenkins/files/setup.sh delete mode 100644 playbook/roles/jenkins/howto.md delete mode 100644 playbook/roles/jenkins/meta/main.yml delete mode 100755 playbook/roles/jenkins/tasks/main.yml delete mode 100644 playbook/roles/k3s-addon/files/setup-dns-provider.sh delete mode 100644 playbook/roles/k3s-addon/files/setup-egress.sh delete mode 100644 playbook/roles/k3s-addon/files/setup-ingress.sh delete mode 100644 playbook/roles/k3s-addon/meta/main.yml delete mode 100755 playbook/roles/k3s-addon/tasks/main.yml delete mode 100644 playbook/roles/k3s-addon/templates/ingress-apisix-dashboard.yaml delete mode 100644 playbook/roles/k3s-addon/templates/ingress-apisix-values.yaml delete mode 100644 playbook/roles/k3s-addon/templates/kubernetes-discovery-config.yaml delete mode 100644 playbook/roles/k3s-addon/templates/kubernetes-discovery-serviceaccount.yaml delete mode 100644 playbook/roles/k3s-addon/templates/kubernetes-discovery.yaml delete mode 100644 playbook/roles/k3s-reset/files/reset-k3s.sh delete mode 100755 playbook/roles/k3s-reset/tasks/main.yml delete mode 100644 playbook/roles/k3s/files/setup-cni-cilium.sh delete mode 100644 playbook/roles/k3s/files/setup-cni-kubeovn.sh delete mode 100644 playbook/roles/k3s/files/setup-k3s.sh delete mode 100644 playbook/roles/k3s/meta/main.yml delete mode 100755 playbook/roles/k3s/tasks/main.yml delete mode 100644 playbook/roles/keycloak/files/setup-keycloak.sh delete mode 100644 playbook/roles/keycloak/meta/main.yml delete mode 100755 playbook/roles/keycloak/tasks/main.yml delete mode 100644 playbook/roles/keycloak/templates/aws-gloabl-oidc-broker.yaml delete mode 100644 playbook/roles/mysql/files/post-setup.sh delete mode 100644 playbook/roles/mysql/files/setup-mysql.sh delete mode 100755 playbook/roles/mysql/tasks/main.yml delete mode 100644 playbook/roles/nginx-oss/meta/main.yml delete mode 100755 playbook/roles/nginx-oss/tasks/main.yml delete mode 100644 playbook/roles/nginx-oss/templates/.gitignore delete mode 100644 playbook/roles/nginx-oss/templates/mirrors-nginx-apisix.yaml delete mode 100644 playbook/roles/nginx-oss/templates/mirrors-nginx-ingress.yaml delete mode 100644 playbook/roles/nginx-oss/templates/mirrors-nginx.yaml delete mode 100755 playbook/roles/node-exporter/tasks/main.yml delete mode 100755 playbook/roles/node-exporter/templates/node-exporter.service delete mode 100644 playbook/roles/observability-agent/files/setup.sh delete mode 100644 playbook/roles/observability-agent/meta/main.yml delete mode 100755 playbook/roles/observability-agent/tasks/main.yml delete mode 100644 playbook/roles/observability-server/files/setup-observable-server.sh delete mode 100644 playbook/roles/observability-server/meta/main.yml delete mode 100755 playbook/roles/observability-server/tasks/main.yml delete mode 100644 playbook/roles/openldap/files/setup-openldap.sh delete mode 100644 playbook/roles/openldap/meta/main.yml delete mode 100755 playbook/roles/openldap/tasks/main.yml delete mode 100644 playbook/roles/openldap/templates/.gitignore delete mode 100644 playbook/roles/openldap/templates/ingress.yaml delete mode 100644 playbook/roles/postgresql/files/post-setup.sh delete mode 100644 playbook/roles/postgresql/files/setup-postgresql.sh delete mode 100755 playbook/roles/postgresql/tasks/main.yml delete mode 100644 playbook/roles/prometheus-agent/meta/main.yml delete mode 100755 playbook/roles/prometheus-agent/tasks/main.yml delete mode 100644 playbook/roles/prometheus-agent/templates/prometheus-agent.service delete mode 100644 playbook/roles/prometheus-agent/templates/prometheus.yml delete mode 100755 playbook/roles/prometheus-agent/templates/start-prometheus-agent-service.sh delete mode 100755 playbook/roles/prometheus-agent/templates/stop-prometheus-agent-service.sh delete mode 100644 playbook/roles/prometheus-transfer/meta/main.yml delete mode 100755 playbook/roles/prometheus-transfer/tasks/main.yml delete mode 100644 playbook/roles/prometheus-transfer/templates/prometheus-transfer.service delete mode 100644 playbook/roles/prometheus-transfer/templates/prometheus-transfer.yml delete mode 100755 playbook/roles/prometheus-transfer/templates/start-prometheus-transfer-service.sh delete mode 100755 playbook/roles/prometheus-transfer/templates/stop-prometheus-transfer-service.sh delete mode 100644 playbook/roles/promtail-agent/meta/main.yml delete mode 100755 playbook/roles/promtail-agent/tasks/main.yml delete mode 100644 playbook/roles/promtail-agent/templates/promtail-agent.service delete mode 100644 playbook/roles/promtail-agent/templates/promtail.yaml delete mode 100644 playbook/roles/redis/files/setup-redis.sh delete mode 100755 playbook/roles/redis/tasks/main.yml delete mode 100755 playbook/roles/secret-manger/tasks/main.yml delete mode 100644 playbook/roles/wireguard-client/create_keys.sh delete mode 100755 playbook/roles/wireguard-client/tasks/main.yml delete mode 100644 playbook/roles/wireguard-client/templates/config.json delete mode 100644 playbook/roles/wireguard-dateway/create_keys.sh delete mode 100755 playbook/roles/wireguard-dateway/tasks/main.yml delete mode 100644 playbook/roles/wireguard-dateway/templates/create-vpn-config.sh delete mode 100755 playbook/roles/xtls-server/tasks/main.yml delete mode 100644 playbook/roles/xtls-server/templates/config.json delete mode 100644 playbook/templates/id_rsa delete mode 100644 playbook/templates/inventory diff --git a/.github/workflows/iac-pipeline-destroy.yml b/.github/workflows/iac-pipeline-destroy.yml new file mode 100644 index 00000000..635330cc --- /dev/null +++ b/.github/workflows/iac-pipeline-destroy.yml @@ -0,0 +1,199 @@ +name: Destroy Resources by IAC tools + +env: + STATE: "destroy" # 可以根据需要更改初始状态, 可选create,update, destroy + CLOUD: "gcp" # 选择云服务商, 可选: gcp, aws, ali, azure + +on: + pull_request: + push: + paths: + - '.github/workflows/iac-pipeline-destroy.yml' + workflow_dispatch: + branches: + - main + +jobs: + gcs: + runs-on: ubuntu-latest + needs: + - vhost + - network + - key_pair + - firewall + + steps: + - name: Checkout code + uses: actions/checkout@v2 + with: + submodules: 'recursive' + + - name: Pre Setup + run: | + sudo apt-get update + sudo apt-get install -y python3-pip jq + python -m pip install --upgrade pip jinja2 + + - name: Set up Terraform + uses: hashicorp/setup-terraform@v1 + with: + terraform_version: 1.6.4 + + - name: Authenticate with Google Cloud + uses: google-github-actions/auth@v1 + with: + credentials_json: ${{ secrets.GCP_CREDENTIALS_JSON }} + + - name: Set up Google Cloud SDK + uses: 'google-github-actions/setup-gcloud@v1' + with: + version: '>= 363.0.0' + + - name: Delete Google Cloud Storage Bucket + run: | + gsutil -m rm -r gs://iac_gcp_terraform_state || true + gcloud storage buckets delete gs://iac_gcp_terraform_state --quiet || true + network: + runs-on: ubuntu-latest + needs: + - vhost + + steps: + - name: Checkout code + uses: actions/checkout@v2 + with: + submodules: 'recursive' + + - name: Pre Setup + run: | + sudo apt-get update + sudo apt-get install -y python3-pip jq + python -m pip install --upgrade pip jinja2 + + - name: Set up Terraform + uses: hashicorp/setup-terraform@v1 + with: + terraform_version: 1.6.4 + + - name: Authenticate with Google Cloud + uses: google-github-actions/auth@v1 + with: + credentials_json: ${{ secrets.GCP_CREDENTIALS_JSON }} + + - name: Terraform Init And Apply + run: | + bash run_terraform.sh + working-directory: iac_modules/terraform/${{ env.CLOUD }}/network/ + vhost: + runs-on: ubuntu-latest + + steps: + - name: Checkout code + uses: actions/checkout@v2 + with: + submodules: 'recursive' + + - name: Pre Setup + run: | + sudo apt-get update + sudo apt-get install -y python3-pip jq + python -m pip install --upgrade pip jinja2 + + - name: Set up Terraform + uses: hashicorp/setup-terraform@v1 + with: + terraform_version: 1.6.4 + + - name: Authenticate with Google Cloud + uses: google-github-actions/auth@v1 + with: + credentials_json: ${{ secrets.GCP_CREDENTIALS_JSON }} + + - name: Fetch SSH Keys + run: echo "${{ secrets.SSH_PUBLIC_KEY }}" > ssh_keys.pub + working-directory: iac_modules/terraform/${{ env.CLOUD }}/vhost/ + + - name: Terraform Init And Apply + run: | + python3 scripts/init.py && bash scripts/run_terraform.sh + working-directory: iac_modules/terraform/${{ env.CLOUD }}/vhost/ + + key_pair: + runs-on: ubuntu-latest + needs: + - vhost + + steps: + - name: Checkout code + uses: actions/checkout@v2 + with: + submodules: 'recursive' + + - name: Pre Setup + run: | + sudo apt-get update + sudo apt-get install -y python3-pip jq + python -m pip install --upgrade pip jinja2 + + - name: Set up Terraform + uses: hashicorp/setup-terraform@v1 + with: + terraform_version: 1.6.4 + + - name: Authenticate with Google Cloud + uses: google-github-actions/auth@v1 + with: + credentials_json: ${{ secrets.GCP_CREDENTIALS_JSON }} + + - name: Set up Google Cloud SDK + uses: 'google-github-actions/setup-gcloud@v1' + with: + version: '>= 363.0.0' + + - name: Check if SSH Metadata exists + id: check_ssh_metadata + run: bash scripts/check_ssh_metadata.sh + working-directory: iac_modules/terraform/${{ env.CLOUD }}/key_pair/ + + - name: Fetch SSH Keys + if: steps.check_ssh_metadata.outputs.ssh_metadata_exists == 'false' + run: echo "${{ secrets.SSH_PUBLIC_KEY }}" > ssh_keys.pub + working-directory: iac_modules/terraform/${{ env.CLOUD }}/key_pair/ + + - name: Terraform Init And Apply + if: steps.check_ssh_metadata.outputs.ssh_metadata_exists == 'false' + run: | + python3 scripts/init.py && bash scripts/run_terraform.sh + working-directory: iac_modules/terraform/${{ env.CLOUD }}/key_pair/ + + firewall: + runs-on: ubuntu-latest + needs: + - vhost + + steps: + - name: Checkout code + uses: actions/checkout@v2 + with: + submodules: 'recursive' + + - name: Pre Setup + run: | + sudo apt-get update + sudo apt-get install -y python3-pip jq + python -m pip install --upgrade pip jinja2 + + - name: Set up Terraform + uses: hashicorp/setup-terraform@v1 + with: + terraform_version: 1.6.4 + + - name: Authenticate with Google Cloud + uses: google-github-actions/auth@v1 + with: + credentials_json: ${{ secrets.GCP_CREDENTIALS_JSON }} + + - name: Terraform Init And Apply + run: | + python3 scripts/init.py && bash scripts/run_terraform.sh + working-directory: iac_modules/terraform/${{ env.CLOUD }}/firewall/ diff --git a/.github/workflows/pipeline.yml b/.github/workflows/pipeline.yml new file mode 100644 index 00000000..a1510304 --- /dev/null +++ b/.github/workflows/pipeline.yml @@ -0,0 +1,360 @@ +name: Create Resources by IAC tools + +env: + STATE: "create" # 可以根据需要更改初始状态, 可选create,update, destroy + CLOUD: "gcp" # 选择云服务商, 可选: gcp, aws, ali, azure + TZ: Asia/Shanghai + REPO: "artifact.onwalk.net" + IMAGE: base/${{ github.repository }} + TAG: ${{ github.sha }} + DNS_AK: ${{ secrets.DNS_AK }} + DNS_SK: ${{ secrets.DNS_SK }} + OSS_AK: ${{ secrets.OSS_AK }} + OSS_SK: ${{ secrets.OSS_SK }} + ROOT_PASSWORD: ${{ secrets.ADMIN_INIT_PASSWORD }} + SMTP_PASSWORD: ${{ secrets.SMTP_PASSWORD }} + GITLAB_OIDC_CLIENT_TOKEN: ${{ secrets.GITLAB_OIDC_CLIENT_TOKEN }} + HARBOR_OIDC_CLIENT_TOKEN: ${{ secrets.HARBOR_OIDC_CLIENT_TOKEN }} + SSH_USER: ${{ secrets.HOST_USER }} + SSH_HOST_DOMAIN: ${{ secrets.HOST_DOMAIN }} + SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }} + +on: + pull_request: + push: + paths: + - '.github/workflows/pipeline.yml' + workflow_dispatch: + branches: + - main + +jobs: + gcs: + runs-on: ubuntu-latest + + steps: + - name: Checkout code + uses: actions/checkout@v2 + with: + submodules: 'recursive' + + - name: Pre Setup + run: | + sudo apt-get update + sudo apt-get install -y python3-pip jq + python -m pip install --upgrade pip jinja2 + + - name: Set up Terraform + uses: hashicorp/setup-terraform@v1 + with: + terraform_version: 1.6.4 + + - name: Authenticate with Google Cloud + uses: google-github-actions/auth@v1 + with: + credentials_json: ${{ secrets.GCP_CREDENTIALS_JSON }} + + - name: Set up Google Cloud SDK + uses: 'google-github-actions/setup-gcloud@v1' + with: + version: '>= 363.0.0' + + - name: Check if GCS bucket exists + id: check_bucket + run: | + BUCKET_NAME="iac_gcp_terraform_state" + gsutil ls -b gs://${BUCKET_NAME} || echo "::set-output name=bucket_exists::false" + + - name: Terraform Init And Apply + if: steps.check_bucket.outputs.bucket_exists == 'false' + run: | + bash run_terraform.sh + working-directory: iac_modules/terraform/${{ env.CLOUD }}/gcs/ + network: + runs-on: ubuntu-latest + needs: + - gcs + + steps: + - name: Checkout code + uses: actions/checkout@v2 + with: + submodules: 'recursive' + + - name: Pre Setup + run: | + sudo apt-get update + sudo apt-get install -y python3-pip jq + python -m pip install --upgrade pip jinja2 + + - name: Set up Terraform + uses: hashicorp/setup-terraform@v1 + with: + terraform_version: 1.6.4 + + - name: Authenticate with Google Cloud + uses: google-github-actions/auth@v1 + with: + credentials_json: ${{ secrets.GCP_CREDENTIALS_JSON }} + + - name: Terraform Init And Apply + run: | + bash run_terraform.sh + working-directory: iac_modules/terraform/${{ env.CLOUD }}/network/ + vhost: + runs-on: ubuntu-latest + needs: + - gcs + - network + - key_pair + + steps: + - name: Checkout code + uses: actions/checkout@v2 + with: + submodules: 'recursive' + + - name: Pre Setup + run: | + sudo apt-get update + sudo apt-get install -y python3-pip jq + python -m pip install --upgrade pip jinja2 + + - name: Set up Terraform + uses: hashicorp/setup-terraform@v1 + with: + terraform_version: 1.6.4 + + - name: Authenticate with Google Cloud + uses: google-github-actions/auth@v1 + with: + credentials_json: ${{ secrets.GCP_CREDENTIALS_JSON }} + + - name: Fetch SSH Keys + run: echo "${{ secrets.SSH_PUBLIC_KEY }}" > ssh_keys.pub + working-directory: iac_modules/terraform/${{ env.CLOUD }}/vhost/ + + - name: Terraform Init And Apply + run: | + python3 scripts/init.py && bash scripts/run_terraform.sh + working-directory: iac_modules/terraform/${{ env.CLOUD }}/vhost/ + + key_pair: + runs-on: ubuntu-latest + needs: + - gcs + + steps: + - name: Checkout code + uses: actions/checkout@v2 + with: + submodules: 'recursive' + + - name: Pre Setup + run: | + sudo apt-get update + sudo apt-get install -y python3-pip jq + python -m pip install --upgrade pip jinja2 + + - name: Set up Terraform + uses: hashicorp/setup-terraform@v1 + with: + terraform_version: 1.6.4 + + - name: Authenticate with Google Cloud + uses: google-github-actions/auth@v1 + with: + credentials_json: ${{ secrets.GCP_CREDENTIALS_JSON }} + + - name: Set up Google Cloud SDK + uses: 'google-github-actions/setup-gcloud@v1' + with: + version: '>= 363.0.0' + + - name: Check if SSH Metadata exists + id: check_ssh_metadata + run: bash scripts/check_ssh_metadata.sh + working-directory: iac_modules/terraform/${{ env.CLOUD }}/key_pair/ + + - name: Fetch SSH Keys + if: steps.check_ssh_metadata.outputs.ssh_metadata_exists == 'false' + run: echo "${{ secrets.SSH_PUBLIC_KEY }}" > ssh_keys.pub + working-directory: iac_modules/terraform/${{ env.CLOUD }}/key_pair/ + + - name: Terraform Init And Apply + if: steps.check_ssh_metadata.outputs.ssh_metadata_exists == 'false' + run: | + python3 scripts/init.py && bash scripts/run_terraform.sh + working-directory: iac_modules/terraform/${{ env.CLOUD }}/key_pair/ + + firewall: + runs-on: ubuntu-latest + needs: + - gcs + - network + + steps: + - name: Checkout code + uses: actions/checkout@v2 + with: + submodules: 'recursive' + + - name: Pre Setup + run: | + sudo apt-get update + sudo apt-get install -y python3-pip jq + python -m pip install --upgrade pip jinja2 + + - name: Set up Terraform + uses: hashicorp/setup-terraform@v1 + with: + terraform_version: 1.6.4 + + - name: Authenticate with Google Cloud + uses: google-github-actions/auth@v1 + with: + credentials_json: ${{ secrets.GCP_CREDENTIALS_JSON }} + + - name: Terraform Init And Apply + run: | + python3 scripts/init.py && bash scripts/run_terraform.sh + working-directory: iac_modules/terraform/${{ env.CLOUD }}/firewall/ + build: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v2 + + - name: Sync aritfacts + run: echo "to do" + + test: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v2 + + - name: Test aritfacts + run: echo "to do" + + setup-k3s: + runs-on: ubuntu-latest + needs: + - build + - test + - vhost + + steps: + - name: Checkout code + uses: actions/checkout@v3 + with: + submodules: 'recursive' + + - name: Pre Setup + run: | + sudo apt-get update + sudo apt-get install -y python3-pip jq + python -m pip install --upgrade pip jinja2 + + - name: Set up Terraform + uses: hashicorp/setup-terraform@v1 + with: + terraform_version: 1.6.4 + + - name: Authenticate with Google Cloud + uses: google-github-actions/auth@v1 + with: + credentials_json: ${{ secrets.GCP_CREDENTIALS_JSON }} + + - name: Set GitHub Actions output variables + id: terraform-output + run: | + python3 scripts/init.py && terraform init + terraform output | while read -r line; do + if [ -z "$line" ]; then + break + else + k_v=$(echo "$line" | tr -d ' ' | awk -F= '{print $1"="$2}') + echo "$k_v" >> $GITHUB_OUTPUT + fi + done + working-directory: iac_modules/terraform/${{ env.CLOUD }}/vhost/ + + - name: Update playbook hosts + run: | + bash pre_setup.sh + env: + SSH_HOST_IP: ${{ steps.terraform-output.outputs.server }} + working-directory: playbook/ + + - name: Setup K3S Cluster + shell: bash + run: | + export ANSIBLE_HOST_KEY_CHECKING=False + ansible-playbook -i hosts/inventory init_k3s_cluster_std -D + working-directory: playbook/ + deploy-Apps: + runs-on: ubuntu-latest + needs: + - setup-k3s + + steps: + - name: Checkout code + uses: actions/checkout@v3 + with: + submodules: 'recursive' + + - name: Pre Setup + run: | + sudo apt-get update + sudo apt-get install -y python3-pip jq + python -m pip install --upgrade pip jinja2 + + - name: Set up Terraform + uses: hashicorp/setup-terraform@v1 + with: + terraform_version: 1.6.4 + + - name: Authenticate with Google Cloud + uses: google-github-actions/auth@v1 + with: + credentials_json: ${{ secrets.GCP_CREDENTIALS_JSON }} + + - name: Set GitHub Actions output variables + id: terraform-output + run: | + python3 scripts/init.py && terraform init + terraform output | while read -r line; do + if [ -z "$line" ]; then + break + else + k_v=$(echo "$line" | tr -d ' ' | awk -F= '{print $1"="$2}') + echo "$k_v" >> $GITHUB_OUTPUT + fi + done + working-directory: iac_modules/terraform/${{ env.CLOUD }}/vhost/ + + - name: Update playbook hosts + run: | + bash pre_setup.sh + env: + SSH_HOST_IP: ${{ steps.terraform-output.outputs.server }} + working-directory: playbook/ + + - name: Deploy Gitlab + run: | + export ANSIBLE_HOST_KEY_CHECKING=False + ansible-playbook -i hosts/inventory init_gitlab -D + working-directory: playbook/ + + - name: Deploy Harbor + run: | + export ANSIBLE_HOST_KEY_CHECKING=False + ansible-playbook -i hosts/inventory init_harbor -D + working-directory: playbook/ + + - name: Deploy Chartmuseum + run: | + export ANSIBLE_HOST_KEY_CHECKING=False + ansible-playbook -i hosts/inventory init_chartmuseum -D + working-directory: playbook/ diff --git a/Architectures.uml b/Architectures.uml new file mode 100644 index 00000000..e3eb2c45 --- /dev/null +++ b/Architectures.uml @@ -0,0 +1,75 @@ +@startuml +!define RECTANGLE class + +RECTANGLE GitHubCI +RECTANGLE Pulumi +RECTANGLE GitHub +RECTANGLE Harbor +RECTANGLE Loki +RECTANGLE Deepflow +RECTANGLE Prometheus +RECTANGLE Alertmanager +RECTANGLE Clickhouse +RECTANGLE Grafana +RECTANGLE Nginx +RECTANGLE DNS +RECTANGLE APIGateway + +' 多环境定义 +folder "Development Environment" { + RECTANGLE Dev_Kubernetes + RECTANGLE Dev_k3s +} +folder "Testing Environment" { + RECTANGLE Test_Kubernetes + RECTANGLE Test_k3s +} +folder "Production Environment" { + RECTANGLE Prod_Kubernetes + RECTANGLE Prod_k3s +} + +GitHubCI --> GitHub : 使用 +GitHub --> Pulumi : 配置 +Pulumi --> Dev_Kubernetes +Pulumi --> Dev_k3s +Pulumi --> Test_Kubernetes +Pulumi --> Test_k3s +Pulumi --> Prod_Kubernetes +Pulumi --> Prod_k3s + +Dev_Kubernetes --> Harbor : 容器注册 +Dev_k3s --> Harbor : 容器注册 +Test_Kubernetes --> Harbor : 容器注册 +Test_k3s --> Harbor : 容器注册 +Prod_Kubernetes --> Harbor : 容器注册 +Prod_k3s --> Harbor : 容器注册 + +Dev_Kubernetes --> Nginx : Ingress +Dev_k3s --> Nginx : Ingress +Test_Kubernetes --> Nginx : Ingress +Test_k3s --> Nginx : Ingress +Prod_Kubernetes --> Nginx : Ingress +Prod_k3s --> Nginx : Ingress + +Dev_Kubernetes --> Loki : 日志 +Dev_k3s --> Loki : 日志 +Test_Kubernetes --> Loki : 日志 +Test_k3s --> Loki : 日志 +Prod_Kubernetes --> Loki : 日志 +Prod_k3s --> Loki : 日志 + +Loki --> Grafana : 可视化 +Deepflow --> Grafana : 可视化 +Prometheus --> Grafana : 可视化 +Alertmanager --> Prometheus : 通知 +Clickhouse --> Grafana : 数据存储 + +DNS --> APIGateway : 解析 +APIGateway --> Dev_Kubernetes : 路由 +APIGateway --> Dev_k3s : 路由 +APIGateway --> Test_Kubernetes : 路由 +APIGateway --> Test_k3s : 路由 +APIGateway --> Prod_Kubernetes : 路由 +APIGateway --> Prod_k3s : 路由 +@enduml diff --git a/Layered_Architecture.uml b/Layered_Architecture.uml new file mode 100644 index 00000000..2d59187c --- /dev/null +++ b/Layered_Architecture.uml @@ -0,0 +1,30 @@ +@startuml +!define RECTANGLE class + +' Central Container Platform +RECTANGLE ContainerPlatform { + RECTANGLE ServiceMeshSolutions +} + +' Microservices at the top +RECTANGLE Microservices + +' DevOps Solutions and Federated Identity Solutions on the left +RECTANGLE DevOpsSolutions +RECTANGLE FederatedIdentitySolutions + +' Observability Platform Solutions on the right +RECTANGLE ObservabilityPlatformSolutions + +' LangChainAI at the bottom +RECTANGLE LangChainAI + +' Define relationships +Microservices -down- ContainerPlatform : "Supported by\n" +DevOpsSolutions -right- ContainerPlatform : "Integrated with\n" +FederatedIdentitySolutions -right- ContainerPlatform : "Secured by\n" +ObservabilityPlatformSolutions -left- ContainerPlatform : "Monitored by\n" +LangChainAI -up- ContainerPlatform : "Enhanced by\n" +ServiceMeshSolutions -- ContainerPlatform : "Interconnected within\n" + +@enduml diff --git a/README.md b/README.md index 4b4de3ff..c421958d 100644 --- a/README.md +++ b/README.md @@ -9,6 +9,9 @@ We define modern app architectures as those driven by four characteristics: scal - Resiliency – Can fail over to newly spun‑up clusters or virtual environments in different availability regions, clouds, or data centers. - Agility – Ability to update through automated CI/CD pipelines with higher code velocity and more frequent code pushes. +![PlantUML Diagram](https://www.plantuml.com/plantuml/png/XPL1JnD15CVlxrECN3nnwis3WPIcD9A6A7UpRL_BfhkpP6QsQ8o9qKXY0ke1HNlGH2NqOglnO3WGlWopYz_26RAbmylkq5Ft_N_px__jpBokI1K8bSOHtEbXF-J87ZRgMwljvaQ3TQD0Ie15eHcgzRHJRpcbpJHAun0eunJM0z59X5FOI8RkWZN4dNwKxBgc8ebHRMCgdU9gX4B50Gy6wBhLex0xt4vIYMu84VGDwLJQWv0_SN-r_SZrtcmr0uMxmLE0kqp_6ETlP_hRApqTNvo-WNuIzL2mfJKSOPJinCWLQ_1HA19klo-nPy3CnsrfzFX1sa71KQ4i4OSr2S-lVRTGgf0F_9uM8gP49Qxc9VRIhWeJxZUs734cQc4Cy-rdoyltYtrczzZ5sNb-E2b4AnLdmaZ_NX_aPrCeder4tWnLXZMtH5kc4iLf8rIoEDmCOCNYW9guUdggFq-oFnEzjmz57Wz1ujr6-ir8-5j8lrbfbrSNm80jFX0efTiVrKXd7gR2W7JZOIeCIZkmSyCWsT6nFZzoybE5fYydoXVJv5L4-MAmZxO-7q16qkzcboTxUlyZp0TT9R0OUvM8EmIl86UDkMylnldNOrYCHEAJVVYL7Kprpq_wvGJ0Z42hEyFF89SdtxClxs5HAxcs5lixomz_bs73MhLETyR7UOteBdcv6qOho7lstmx-0m00) + + ## Modern Container Application Reference Architectures This repository provides a reference architecture for modern container applications. It focuses on the following key principles: diff --git a/infrastructure/Pulumi.dev.yaml b/infrastructure/Pulumi.dev.yaml deleted file mode 100644 index cc192fc3..00000000 --- a/infrastructure/Pulumi.dev.yaml +++ /dev/null @@ -1 +0,0 @@ -encryptionsalt: v1:5xsaM2aqu0Q=:v1:SKSxqD3qXFYZl1I2:RCwJV1UL9uatyI/CtjvL+wFRY8bmQA== diff --git a/infrastructure/Pulumi.yaml b/infrastructure/Pulumi.yaml deleted file mode 100644 index f592741d..00000000 --- a/infrastructure/Pulumi.yaml +++ /dev/null @@ -1,6 +0,0 @@ -name: Modern-Container-Application-Reference-Architecture -runtime: - name: python - options: - virtualenv: venv -description: A minimal AWS Python Pulumi program diff --git a/infrastructure/__main__.py b/infrastructure/__main__.py deleted file mode 100644 index 498ebf51..00000000 --- a/infrastructure/__main__.py +++ /dev/null @@ -1,30 +0,0 @@ -"""An AWS Python Pulumi AWS Module""" -import aws -import config -import pulumi -import pulumi_command - -vpc_id = aws.vpc() -az_list = aws.availability_zones() -sg_id = aws.security_group( vpc_id ) -igw_id = aws.internet_gateway( vpc_id ) -route_table_id = aws.route_table( vpc_id, igw_id ) -subnets = aws.subnets(vpc_id, az_list, route_table_id, 'public' ) - -ssh_key = config.get_env('SSH_PUBLIC_KEY') -key_pair = aws.key_pair(resource_name="my_ssh_key", public_key=ssh_key) - -k3s_server = aws.ec2( - arch = 'arm64', - ec2_type = 't4g.small', - ec2_name = 'tky.onwalk.net', - key_name = key_pair, - subnet_id = subnets[0], - security_group_id = sg_id - ) - -pulumi.export("vpc", vpc_id) -pulumi.export("sg", sg_id) -pulumi.export("subnets", subnets) -pulumi.export("key_pair", key_pair) -pulumi.export("k3s_server_public_ip", k3s_server.public_ip ) diff --git a/infrastructure/cloud_manager/__init__.py b/infrastructure/cloud_manager/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/infrastructure/cloud_manager/aws_provider.py b/infrastructure/cloud_manager/aws_provider.py deleted file mode 100644 index 0852010d..00000000 --- a/infrastructure/cloud_manager/aws_provider.py +++ /dev/null @@ -1,25 +0,0 @@ -import pulumi -from pulumi_aws import s3, ec2 - -class AWSProvider: - def __init__(self): - self.resources = {} - - def create_resources(self, resource_type, resource_config): - if resource_type == 's3': - self.resources['s3'] = s3.Bucket(resource_config['name']) - elif resource_type == 'ec2': - self.resources['ec2'] = ec2.Instance(resource_config['name'], - instance_type=resource_config['instance_type'], - ami=resource_config['ami']) - - def delete_resources(self): - for resource in self.resources.values(): - pulumi.destroy(resource) - - def update_resources(self): - print("Updating AWS resources...") - - def query_resources(self): - print("Querying AWS resources...") - return [] diff --git a/infrastructure/cloud_manager/main.py b/infrastructure/cloud_manager/main.py deleted file mode 100644 index 1d4e82c1..00000000 --- a/infrastructure/cloud_manager/main.py +++ /dev/null @@ -1,16 +0,0 @@ -from fastapi import FastAPI -from cloud_manager.models import ResourceConfig, CloudManager -from cloud_manager.providers.aws_provider import AWSProvider - -app = FastAPI() - -@app.post("/resources") -async def create_resource(resource: ResourceConfig): - if resource.provider == 'aws': - provider = AWSProvider() - else: - return {"error": "Unsupported provider"} - - manager = CloudManager(provider, resource.resource_type, resource.config) - manager.create_resources() - return {"message": "Resource created successfully"} diff --git a/infrastructure/cloud_manager/models.py b/infrastructure/cloud_manager/models.py deleted file mode 100644 index 9d5f8b44..00000000 --- a/infrastructure/cloud_manager/models.py +++ /dev/null @@ -1,30 +0,0 @@ -from pydantic import BaseModel - -class ResourceConfig(BaseModel): - provider: str - resource_type: str - config: dict - -class CloudManager: - def __init__(self, provider, resource_type, resource_config): - self.provider = provider - self.resource_type = resource_type - self.resource_config = resource_config - - def create_resources(self): - self.provider.create_resources(self.resource_type, self.resource_config) - - def delete_resources(self): - self.provider.delete_resources() - - def update_resources(self): - self.provider.update_resources() - - def query_resources(self): - return self.provider.query_resources() - - def migrate_resources(self, to_provider): - resources = self.query_resources() - to_provider.create_resources(resources) - self.delete_resources() - diff --git a/infrastructure/cloud_manager/providers/__init__.py b/infrastructure/cloud_manager/providers/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/infrastructure/cloud_manager/providers/aws/__init__.py b/infrastructure/cloud_manager/providers/aws/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/infrastructure/cloud_manager/providers/aws/ec2.py b/infrastructure/cloud_manager/providers/aws/ec2.py deleted file mode 100644 index 0ee18b45..00000000 --- a/infrastructure/cloud_manager/providers/aws/ec2.py +++ /dev/null @@ -1,18 +0,0 @@ -class EC2: - @staticmethod - def create(config): - # 创建 EC2 实例的代码... - pass - - def delete(self): - # 删除 EC2 实例的代码... - pass - - def update(self): - # 更新 EC2 实例的代码... - pass - - def query(self): - # 查询 EC2 实例的代码... - pass - diff --git a/infrastructure/cloud_manager/providers/aws/eks.py b/infrastructure/cloud_manager/providers/aws/eks.py deleted file mode 100644 index e69de29b..00000000 diff --git a/infrastructure/cloud_manager/providers/aws/iam.py b/infrastructure/cloud_manager/providers/aws/iam.py deleted file mode 100644 index e69de29b..00000000 diff --git a/infrastructure/cloud_manager/providers/aws/rds.py b/infrastructure/cloud_manager/providers/aws/rds.py deleted file mode 100644 index e69de29b..00000000 diff --git a/infrastructure/cloud_manager/providers/aws/s3.py b/infrastructure/cloud_manager/providers/aws/s3.py deleted file mode 100644 index e69de29b..00000000 diff --git a/infrastructure/cloud_manager/providers/aws/vpc.py b/infrastructure/cloud_manager/providers/aws/vpc.py deleted file mode 100644 index e69de29b..00000000 diff --git a/infrastructure/cloud_manager/providers/aws_provider.py b/infrastructure/cloud_manager/providers/aws_provider.py deleted file mode 100644 index 75c0a6a7..00000000 --- a/infrastructure/cloud_manager/providers/aws_provider.py +++ /dev/null @@ -1,27 +0,0 @@ -from .aws import ec2, s3, rds, iam, vpc, eks - -class AWSProvider: - def __init__(self): - self.resources = {} - - def create_resources(self, resource_type, resource_config): - if resource_type == 's3': - self.resources['s3'] = s3.create(resource_config) - elif resource_type == 'ec2': - self.resources['ec2'] = ec2.create(resource_config) - # ...其他服务的创建逻辑... - - def delete_resources(self): - for resource in self.resources.values(): - resource.delete() - - def update_resources(self): - for resource in self.resources.values(): - resource.update() - - def query_resources(self): - resources = {} - for name, resource in self.resources.items(): - resources[name] = resource.query() - return resources - diff --git a/infrastructure/config/__init__.py b/infrastructure/config/__init__.py deleted file mode 100644 index 4ed97b9f..00000000 --- a/infrastructure/config/__init__.py +++ /dev/null @@ -1,13 +0,0 @@ -from pulumi_command import local -from pulumi_command import remote - -def get_env( name ): - env = local.Command( - "command", - create=f"printenv {name}" - ) - return env.stdout - -def local_run( command: str ): - command = local.Command("local_command", create=command ) - return command.stdout diff --git a/infrastructure/main.py b/infrastructure/main.py deleted file mode 100644 index 1d4e82c1..00000000 --- a/infrastructure/main.py +++ /dev/null @@ -1,16 +0,0 @@ -from fastapi import FastAPI -from cloud_manager.models import ResourceConfig, CloudManager -from cloud_manager.providers.aws_provider import AWSProvider - -app = FastAPI() - -@app.post("/resources") -async def create_resource(resource: ResourceConfig): - if resource.provider == 'aws': - provider = AWSProvider() - else: - return {"error": "Unsupported provider"} - - manager = CloudManager(provider, resource.resource_type, resource.config) - manager.create_resources() - return {"message": "Resource created successfully"} diff --git a/infrastructure/requirements.txt b/infrastructure/requirements.txt deleted file mode 100644 index a9c63396..00000000 --- a/infrastructure/requirements.txt +++ /dev/null @@ -1,3 +0,0 @@ -pulumi==3.58.0 -pulumi-aws==5.32.0 -pulumi_command==0.7.0 diff --git a/infrastructure/resource/aws/__init__.py b/infrastructure/resource/aws/__init__.py deleted file mode 100644 index 00b70cb3..00000000 --- a/infrastructure/resource/aws/__init__.py +++ /dev/null @@ -1,200 +0,0 @@ -import pulumi -import pulumi_aws - -#-----------global vars---------------# -stack_name = pulumi.get_stack() -project_name = pulumi.get_project() -#------------------------------------# -def vpc(): - vpc = pulumi_aws.ec2.Vpc( - resource_name=f"eks-{project_name}-{stack_name}", - cidr_block="10.100.0.0/16", - enable_dns_support=True, - enable_dns_hostnames=True, - instance_tenancy='default', - tags={ - "Project": project_name, - "Stack": stack_name - } - ) - return vpc.id -#------------------------------------# -def key_pair( resource_name: str, public_key: str ): - key_pair = pulumi_aws.ec2.KeyPair( resource_name=resource_name, public_key=public_key ) - return key_pair.key_name -#------------------------------------# -def ec2( arch, ec2_name, ec2_type, key_name, subnet_id, security_group_id ): - if arch == 'amd64': - ami = pulumi_aws.ec2.get_ami( - owners = ["099720109477"], - filters = [ - pulumi_aws.ec2.GetAmiFilterArgs( - name = "name", - values = ["ubuntu/images/hvm-ssd/ubuntu-jammy-22.04-amd64-server-*"] - )], - most_recent = True) - - if arch == 'arm64': - ami = pulumi_aws.ec2.get_ami( - owners = ["099720109477"], - filters = [ - pulumi_aws.ec2.GetAmiFilterArgs( - name = "name", - values = ["ubuntu/images/hvm-ssd/ubuntu-jammy-22.04-arm64-server-*"] - )], - most_recent = True) - - root_ebs = { - "deleteOnTermination": True, - "volume_size": 100, - "volumeType": 'gp3', - "encrypted": False - } - - instance = pulumi_aws.ec2.Instance( - ami=ami.id, - resource_name = ec2_name, - instance_type = ec2_type, - key_name = key_name, - subnet_id = subnet_id, - root_block_device = root_ebs, - vpc_security_group_ids = [ security_group_id ], - tags = { - "Name": ec2_name - } - ) - return instance -#------------------------------------# -def availability_zones(): - az_list = pulumi_aws.get_availability_zones(state="available").names - return az_list -#------------------------------------# -def internet_gateway( vpc_id ): - igw = pulumi_aws.ec2.InternetGateway( - resource_name=f'vpc-igw-{project_name}-{stack_name}', - vpc_id=vpc_id, - tags={ - "Project": project_name, - "Stack": stack_name - } - ) - return igw.id - -#------------------------------------# -def route_table( vpc_id, igw_id ): - route_table = pulumi_aws.ec2.RouteTable( - resource_name = f'vpc-route-table-{project_name}-{stack_name}', - vpc_id = vpc_id, - routes = [ - pulumi_aws.ec2.RouteTableRouteArgs( - cidr_block='0.0.0.0/0', - gateway_id=igw_id - ) - ], - tags = { - "Project": project_name, - "Stack": stack_name - } - ) - return route_table.id - -#------------------------------------# -def security_group( vpc_id ): - security_group = pulumi_aws.ec2.SecurityGroup( - resource_name = f'ec2-default-sg-{project_name}-{stack_name}', - vpc_id = vpc_id, - description = "Allow all HTTP(s) traffic to EKS Cluster", - ingress = [ - pulumi_aws.ec2.SecurityGroupIngressArgs( - protocol='tcp', - from_port=22, - to_port=22, - cidr_blocks=['0.0.0.0/0'], - description='Allow sshd connect'), - pulumi_aws.ec2.SecurityGroupIngressArgs( - protocol='tcp', - from_port=80, - to_port=80, - cidr_blocks=['0.0.0.0/0'], - description='Allow http 80'), - pulumi_aws.ec2.SecurityGroupIngressArgs( - protocol='tcp', - from_port=389, - to_port=389, - cidr_blocks=['0.0.0.0/0'], - description='Allow LDAP 389'), - pulumi_aws.ec2.SecurityGroupIngressArgs( - protocol='tcp', - from_port=443, - to_port=443, - cidr_blocks=['0.0.0.0/0'], - description='Allow https 443') - ], - egress=[ - pulumi_aws.ec2.SecurityGroupEgressArgs( - from_port=0, - to_port=0, - protocol="-1", - cidr_blocks=["0.0.0.0/0"] - )], - tags = { - "Project": project_name, - "Stack": stack_name - } - ) - return security_group.id - -#------------------------------------# -def subnets( vpc_id, az_name, route_table_id, net_type='private' ): - -# If you wanted to double the number of subnets because you have few -# availability zones, you can redefine the variable below to something -# like: list(itertools.chain(azs, azs)) which would just repeat the -# same list of AZs twice. The iteration logic will pick it up for -# subnet creation and create unique names. - - subnets = [] - - az_list = availability_zones() - az_enum = list(az_list) - - if len(az_list) <= 0: - raise ValueError("There are no usable availability zones") - if len(az_list) == 1: - pulumi.log.warn("There is only a single usable availability zone") - elif len(az_list) == 2: - pulumi.log.warn("There are only two usable availability zones") - - for i, az in enumerate(az_enum): - - if net_type == 'public': - subnet_addr = i - map_eip=True - if net_type == 'private': - subnet_addr = (i + 1) * 16 - map_eip=False - - if not isinstance(az, str): - raise f'availability zone specified [{i}] is not a valid string value: [{az}]' - if az.strip() == "": - raise f'availability zone specified [{i}] is an empty string' - - subnet_instance = pulumi_aws.ec2.Subnet( - resource_name = f'{az}-{net_type}-{project_name}-{stack_name}-{i}', - vpc_id=vpc_id, - availability_zone=az, - cidr_block=f"10.100.{subnet_addr}.0/24", - map_public_ip_on_launch=map_eip, - tags={ - "Project": project_name, - "Stack": stack_name, - } - ) - pulumi_aws.ec2.RouteTableAssociation( - f"route-table-assoc-{net_type}-{az}-{i}", - route_table_id=route_table_id, - subnet_id=subnet_instance.id - ) - subnets.append(subnet_instance.id) - - return subnets diff --git a/infrastructure/scripts/create_resources.py b/infrastructure/scripts/create_resources.py deleted file mode 100644 index e69de29b..00000000 diff --git a/infrastructure/scripts/delete_resources.py b/infrastructure/scripts/delete_resources.py deleted file mode 100644 index e69de29b..00000000 diff --git a/infrastructure/scripts/migrate_resources.py b/infrastructure/scripts/migrate_resources.py deleted file mode 100644 index e69de29b..00000000 diff --git a/infrastructure/scripts/query_resources.py b/infrastructure/scripts/query_resources.py deleted file mode 100644 index e69de29b..00000000 diff --git a/infrastructure/scripts/update_resources.py b/infrastructure/scripts/update_resources.py deleted file mode 100644 index e69de29b..00000000 diff --git a/playbook/.gitignore b/playbook/.gitignore deleted file mode 100644 index b51fc974..00000000 --- a/playbook/.gitignore +++ /dev/null @@ -1 +0,0 @@ -osts/* diff --git a/playbook/Pulumi.dev.yaml b/playbook/Pulumi.dev.yaml deleted file mode 100644 index 83600e25..00000000 --- a/playbook/Pulumi.dev.yaml +++ /dev/null @@ -1 +0,0 @@ -encryptionsalt: v1:Yoj83pTAoq0=:v1:tLvk4ziwEsWJTRX7:Hxa7QbAwaerJCEBuuIZgDB0boChyDQ== diff --git a/playbook/Pulumi.yaml b/playbook/Pulumi.yaml deleted file mode 100644 index f592741d..00000000 --- a/playbook/Pulumi.yaml +++ /dev/null @@ -1,6 +0,0 @@ -name: Modern-Container-Application-Reference-Architecture -runtime: - name: python - options: - virtualenv: venv -description: A minimal AWS Python Pulumi program diff --git a/playbook/README.md b/playbook/README.md deleted file mode 100644 index 2026168c..00000000 --- a/playbook/README.md +++ /dev/null @@ -1,20 +0,0 @@ -# playbook - -# Getting started - -## Delpoy Test -ansible-playbook -i hosts/aws-hosts jobs/init_ec2_monitoring -D -C -ansible-playbook -i hosts/aws-hosts jobs/init_ec2_monitoring_sit -D -C -ansible-playbook -i hosts/aws-hosts jobs/init_ec2_monitoring_uat -D -C -ansible-playbook -i hosts/aws-hosts jobs/init_ec2_monitoring_common -D -C - -## Deploy - -ansible-playbook -i hosts/aws-hosts jobs/init_ec2_monitoring -D -ansible-playbook -i hosts/aws-hosts jobs/init_ec2_monitoring_sit -D -ansible-playbook -i hosts/aws-hosts jobs/init_ec2_monitoring_uat -D -ansible-playbook -i hosts/aws-hosts jobs/init_ec2_monitoring_common -D - -## Troubleshooting - -ansible -i hosts/aws-hosts sit -m shell -a 'sudo pkill -9 prometheus' diff --git a/playbook/__main__.py b/playbook/__main__.py deleted file mode 100644 index b22daf71..00000000 --- a/playbook/__main__.py +++ /dev/null @@ -1,55 +0,0 @@ -"""An AWS Python Pulumi AWS Module""" - -import os -import sys -import json -import stat -import jinja2 -import subprocess -import pulumi -import pulumi_command - -THIS_DIR = os.path.dirname(os.path.abspath(__file__)) - -def run_cmd(cmd): - retcode, output = subprocess.getstatusoutput( cmd ) - assert retcode == 0 - return output - -def render_template( template_source, template_result, template_vars ): - inventory_env = jinja2.Environment( loader=jinja2.FileSystemLoader(THIS_DIR), trim_blocks=True ) - inventory_template = inventory_env.get_template(template_source) - inventory_output = inventory_template.render(vars=template_vars) - with open(template_result, "w+") as f: - f.write(inventory_output) - -data = json.loads( - run_cmd('pulumi stack output --json') - ) - -vars = {} -vars['dns_ak'] = os.environ['DNS_AK'] -vars['dns_sk'] = os.environ['DNS_SK'] -vars['ssh_private_key'] = os.environ['SSH_PRIVATE_KEY'] -vars['db_server_public_ip'] = data['db_server_public_ip'] -vars['k3s_server_public_ip'] = data['k3s_server_public_ip'] - -render_template('templates/id_rsa', 'hosts/id_rsa', vars) -render_template('templates/inventory', 'hosts/inventory', vars) - -setup_permission = pulumi_command.local.Command( - "SetupPermission", - create="chmod 0400 hosts/id_rsa" - ) - -install_k3s_cluster = pulumi_command.local.Command( - "SetupK3S", - create="ansible-playbook -i hosts/inventory jobs/init_k3s_cluster -D", - opts=pulumi.ResourceOptions(depends_on=[setup_permission]) - ) - -install_log_agent = pulumi_command.local.Command( - "InstallAgent", - create="ansible-playbook -i hosts/inventory jobs/init_log_agent -D", - opts=pulumi.ResourceOptions(depends_on=[install_k3s_cluster]) - ) diff --git a/playbook/ansible.cfg b/playbook/ansible.cfg deleted file mode 100644 index be676397..00000000 --- a/playbook/ansible.cfg +++ /dev/null @@ -1,13 +0,0 @@ -[inventory] -cache: yes -cache_plugin: ansible.builtin.jsonfile - -[defaults] -timeout = 10 -forks = 10 -poll_interval = 10 -transport = smart -gathering = smart -stdout_callback = skippy -host_key_checking = False -deprecation_warnings = False diff --git a/playbook/hosts/id_rsa b/playbook/hosts/id_rsa deleted file mode 100755 index e69de29b..00000000 diff --git a/playbook/hosts/inventory b/playbook/hosts/inventory deleted file mode 100644 index e69de29b..00000000 diff --git a/playbook/jobs/init_bookinfo b/playbook/jobs/init_bookinfo deleted file mode 100644 index a6218aea..00000000 --- a/playbook/jobs/init_bookinfo +++ /dev/null @@ -1,19 +0,0 @@ -- name: set bookinfo with helm - hosts: all - user: root - become: yes - gather_facts: yes - tasks: - - include_role: - name: bookinfo - vars: - group: master - domain: onwalk.net - namespace: bookinfo - auto_issuance: false - update_secret: true - storage_type: oss - tls: - - secret_name: bookinfo-tls - keyfile: /etc/ssl/onwalk.net.key - certfile: /etc/ssl/onwalk.net.pem diff --git a/playbook/jobs/init_chartmuseum b/playbook/jobs/init_chartmuseum deleted file mode 100644 index e51e73d9..00000000 --- a/playbook/jobs/init_chartmuseum +++ /dev/null @@ -1,19 +0,0 @@ -- name: setup harbor - hosts: all - user: root - become: yes - gather_facts: yes - tasks: - - include_role: - name: chartmuseum - vars: - group: master - namespace: harbor - domain: onwalk.net - auto_issuance: true - update_secret: true - storage_type: oss - tls: - - secret_name: chartmuseum-tls - keyfile: /etc/ssl/onwalk.net.key - certfile: /etc/ssl/onwalk.net.pem diff --git a/playbook/jobs/init_chatwithgpt b/playbook/jobs/init_chatwithgpt deleted file mode 100644 index 978cf7c7..00000000 --- a/playbook/jobs/init_chatwithgpt +++ /dev/null @@ -1,18 +0,0 @@ -- name: setup chatwithgpt app in k3s - hosts: all - user: root - become: yes - gather_facts: yes - tasks: - - include_role: - name: chatwithgpt - vars: - group: master - namespace: chatwithgpt - domain: onwalk.net - auto_issuance: true - update_secret: true - tls: - - secret_name: chatwithgpt-tls - keyfile: /etc/ssl/onwalk.net.key - certfile: /etc/ssl/onwalk.net.pem diff --git a/playbook/jobs/init_clickhouse b/playbook/jobs/init_clickhouse deleted file mode 100644 index 79c824da..00000000 --- a/playbook/jobs/init_clickhouse +++ /dev/null @@ -1,10 +0,0 @@ -- name: set k3s cluster with ec2 nodes - hosts: all - user: root - become: yes - gather_facts: yes - tasks: - - include_role: - name: clickhouse - vars: - group: master diff --git a/playbook/jobs/init_datadog_agent b/playbook/jobs/init_datadog_agent deleted file mode 100644 index db851fa2..00000000 --- a/playbook/jobs/init_datadog_agent +++ /dev/null @@ -1,10 +0,0 @@ -- name: set datadog-agent with helm - hosts: all - user: root - become: yes - gather_facts: yes - tasks: - - include_role: - name: datadog-agent - vars: - group: master diff --git a/playbook/jobs/init_fluxcd b/playbook/jobs/init_fluxcd deleted file mode 100644 index 9821edd6..00000000 --- a/playbook/jobs/init_fluxcd +++ /dev/null @@ -1,12 +0,0 @@ -- name: set k3s cluster with vhosts - hosts: all - user: root - become: yes - gather_facts: yes - tasks: - - include_role: - name: fluxcd - vars: - group: master - version: '2.7.0' - namespace: fluxcd diff --git a/playbook/jobs/init_gitlab b/playbook/jobs/init_gitlab deleted file mode 100644 index 3e7411c7..00000000 --- a/playbook/jobs/init_gitlab +++ /dev/null @@ -1,23 +0,0 @@ -- name: setup gitlab - hosts: all - user: root - become: yes - gather_facts: yes - tasks: - - include_role: - name: gitlab - vars: - group: master - gitlab_version: '7.0.4' - namespace: gitlab - db_namespace: database - domain: onwalk.net - auto_issuance: false - update_secret: true - tls: - - secret_name: gitlab-tls - keyfile: /etc/ssl/onwalk.net.key - certfile: /etc/ssl/onwalk.net.pem - gitlab_oidc_client_id: gitlab-oidc - gitlab_oidc_isser: 'https://keycloak.onwalk.net/realms/cloud-sso' - gitlab_oidc_redirect_uri: 'https://gitlab.onwalk.net/users/auth/openid_connect/callback' diff --git a/playbook/jobs/init_harbor b/playbook/jobs/init_harbor deleted file mode 100644 index 33c3c5b0..00000000 --- a/playbook/jobs/init_harbor +++ /dev/null @@ -1,20 +0,0 @@ -- name: setup harbor - hosts: all - user: root - become: yes - gather_facts: yes - tasks: - - include_role: - name: harbor - vars: - group: master - namespace: harbor - domain: onwalk.net - db_namespace: database - auto_issuance: true - update_secret: true - storage_type: oss - tls: - - secret_name: harbor-tls - keyfile: /etc/ssl/onwalk.net.key - certfile: /etc/ssl/onwalk.net.pem diff --git a/playbook/jobs/init_jenkins b/playbook/jobs/init_jenkins deleted file mode 100644 index e68d0e0c..00000000 --- a/playbook/jobs/init_jenkins +++ /dev/null @@ -1,19 +0,0 @@ -- name: setup jenkins server - hosts: all - user: root - become: yes - gather_facts: yes - tasks: - - include_role: - name: jenkins - vars: - group: master - namespace: jenkins - db_namespace: database - domain: onwalk.net - auto_issuance: false - update_secret: true - tls: - - secret_name: jenkins-tls - keyfile: /etc/ssl/onwalk.net.key - certfile: /etc/ssl/onwalk.net.pem diff --git a/playbook/jobs/init_k3s_cluster b/playbook/jobs/init_k3s_cluster deleted file mode 100644 index fdb0f9a2..00000000 --- a/playbook/jobs/init_k3s_cluster +++ /dev/null @@ -1,26 +0,0 @@ -- name: set k3s cluster with vhosts - hosts: all - user: root - become: yes - gather_facts: yes - tasks: - - include_role: - name: k3s - vars: - group: master - namespace: ingress - domain: onwalk.net - auto_issuance: false - update_secret: false - version: 'v1.24.7+k3s1' - cni: kubeovn - ingress: nginx - external_dns: enable - pod_cidr: '10.10.0.0/16' - pod_gateway: '10.10.0.1' - svc_cidr: '172.16.0.0/16' - cluster_dns: '172.16.0.10' - cluster_reset: false - join_cidr: '100.64.0.0/16' - cni_iface: 'eth0' - cni_tunnel: 'geneve' diff --git a/playbook/jobs/init_k3s_cluster_apisix b/playbook/jobs/init_k3s_cluster_apisix deleted file mode 100644 index 6d7975e1..00000000 --- a/playbook/jobs/init_k3s_cluster_apisix +++ /dev/null @@ -1,54 +0,0 @@ -- name: set apisix cluster with vhosts - hosts: all - user: root - become: yes - gather_facts: yes - tasks: - - include_role: - name: k3s-reset - vars: - group: master - cluster_reset: 'disable' - - include_role: - name: k3s - vars: - group: master - cni: default - version: 'v1.27.2+k3s1' - pod_cidr: '10.10.0.0/16' - pod_gateway: '10.10.0.1' - svc_cidr: '172.16.0.0/16' - cluster_dns: '172.16.0.10' - node_ip: '10.170.0.8' - join_cidr: '100.64.0.0/16' - - include_role: - name: k3s-addon - vars: - group: master - ingress: apisix - domain: onwalk.net - namespace: ingress - auto_issuance: true - update_secret: false - svc_discovery: enable - external_dns: disable - - include_role: - name: secret-manger - vars: - group: master - namespace: ingress - update_secret: true - tls: - - secret_name: apisix-tls - keyfile: /etc/ssl/onwalk.net.key - certfile: /etc/ssl/onwalk.net.pem - - include_role: - name: secret-manger - vars: - group: master - namespace: nginx - update_secret: true - tls: - - secret_name: nginx-tls - keyfile: /etc/ssl/onwalk.net.key - certfile: /etc/ssl/onwalk.net.pem diff --git a/playbook/jobs/init_k3s_cluster_artifact b/playbook/jobs/init_k3s_cluster_artifact deleted file mode 100644 index 8bf215d3..00000000 --- a/playbook/jobs/init_k3s_cluster_artifact +++ /dev/null @@ -1,34 +0,0 @@ -- name: set artifact cluster with vhosts - hosts: all - user: root - become: yes - gather_facts: yes - tasks: - - include_role: - name: k3s-reset - vars: - group: master - cluster_reset: 'enable' - - include_role: - name: k3s - vars: - group: master - cni: default - version: 'v1.27.2+k3s1' - pod_cidr: '10.10.0.0/16' - pod_gateway: '10.10.0.1' - svc_cidr: '172.16.0.0/16' - cluster_dns: '172.16.0.10' - node_ip: '10.170.0.8' - join_cidr: '100.64.0.0/16' - - include_role: - name: k3s-addon - vars: - group: master - ingress: nginx - domain: onwalk.net - namespace: ingress - auto_issuance: true - external_dns: disable - svc_discovery: disable - update_secret: disable diff --git a/playbook/jobs/init_k3s_cluster_bookinfo b/playbook/jobs/init_k3s_cluster_bookinfo deleted file mode 100644 index 33b514db..00000000 --- a/playbook/jobs/init_k3s_cluster_bookinfo +++ /dev/null @@ -1,22 +0,0 @@ -- name: set apisix cluster with vhosts - hosts: all - user: root - become: yes - gather_facts: yes - tasks: - - include_role: - name: k3s - vars: - group: master - cni: kubeovn - ingress: apisix - external_dns: disable - version: 'v1.24.7+k3s1' - pod_cidr: '10.20.0.0/16' - pod_gateway: '10.20.0.1' - svc_cidr: '172.16.0.0/16' - cluster_dns: '172.16.0.10' - cluster_domain: 'cluster.local' - join_cidr: '100.64.0.0/16' - cni_iface: 'eth0' - cni_tunnel: 'geneve' diff --git a/playbook/jobs/init_k3s_cluster_gitlab b/playbook/jobs/init_k3s_cluster_gitlab deleted file mode 100644 index c016995f..00000000 --- a/playbook/jobs/init_k3s_cluster_gitlab +++ /dev/null @@ -1,30 +0,0 @@ -- name: set artifact cluster with vhosts - hosts: all - user: root - become: yes - gather_facts: yes - tasks: - - include_role: - name: k3s-reset - vars: - group: master - cluster_reset: 'enable' - - include_role: - name: k3s - vars: - group: master - cni: default - version: 'v1.27.2+k3s1' - pod_cidr: '10.10.0.0/16' - svc_cidr: '172.16.0.0/16' - - include_role: - name: k3s-addon - vars: - group: master - ingress: default - domain: onwalk.net - namespace: ingress - external_dns: enable - auto_issuance: false - update_secret: false - svc_discovery: disable diff --git a/playbook/jobs/init_k3s_cluster_std b/playbook/jobs/init_k3s_cluster_std deleted file mode 100644 index 1a9f0cc1..00000000 --- a/playbook/jobs/init_k3s_cluster_std +++ /dev/null @@ -1,30 +0,0 @@ -- name: set artifact cluster with vhosts - hosts: all - user: root - become: yes - gather_facts: yes - tasks: - - include_role: - name: k3s-reset - vars: - group: master - cluster_reset: 'enable' - - include_role: - name: k3s - vars: - group: master - cni: default - version: 'v1.27.2+k3s1' - pod_cidr: '10.10.0.0/16' - svc_cidr: '172.16.0.0/16' - - include_role: - name: k3s-addon - vars: - group: master - ingress: nginx - domain: onwalk.net - namespace: ingress - external_dns: enable - auto_issuance: false - update_secret: false - svc_discovery: disable diff --git a/playbook/jobs/init_keycloak b/playbook/jobs/init_keycloak deleted file mode 100644 index 742e7201..00000000 --- a/playbook/jobs/init_keycloak +++ /dev/null @@ -1,19 +0,0 @@ -- name: setup keycloak - hosts: all - user: root - become: yes - gather_facts: yes - tasks: - - include_role: - name: keycloak - vars: - group: master - namespace: itsm - db_namespace: database - domain: onwalk.net - auto_issuance: true - update_secret: true - tls: - - secret_name: keycloak-tls - keyfile: /etc/ssl/onwalk.net.key - certfile: /etc/ssl/onwalk.net.pem diff --git a/playbook/jobs/init_log_agent b/playbook/jobs/init_log_agent deleted file mode 100644 index 7344c791..00000000 --- a/playbook/jobs/init_log_agent +++ /dev/null @@ -1,13 +0,0 @@ -- name: set log agent for common group ec2 nodes - hosts: all - user: root - become: yes - gather_facts: yes - tasks: - - include_role: - name: promtail-agent - vars: - group: all - label: "env: dev" - loki_host: "data-gateway.onwalk.net" - loki_port: "3100" diff --git a/playbook/jobs/init_metric_agent b/playbook/jobs/init_metric_agent deleted file mode 100644 index 368e4f90..00000000 --- a/playbook/jobs/init_metric_agent +++ /dev/null @@ -1,16 +0,0 @@ -- name: set metric agent for all ec2 nodes - hosts: all - user: root - become: yes - gather_facts: yes - tasks: - - include_role: - name: common - vars: - group: all - - include_role: - name: prometheus-agent - vars: - group: all - label: "cluster: dev" - remote_write: 'https://prometheus.onwalk.net/api/v1/write' diff --git a/playbook/jobs/init_mysql b/playbook/jobs/init_mysql deleted file mode 100644 index fd6af4d6..00000000 --- a/playbook/jobs/init_mysql +++ /dev/null @@ -1,10 +0,0 @@ -- name: set k3s cluster with ec2 nodes - hosts: all - user: root - become: yes - gather_facts: yes - tasks: - - include_role: - name: mysql - vars: - group: master diff --git a/playbook/jobs/init_nginx_oss b/playbook/jobs/init_nginx_oss deleted file mode 100644 index 8e24f307..00000000 --- a/playbook/jobs/init_nginx_oss +++ /dev/null @@ -1,18 +0,0 @@ -- name: setup nginx-oss - hosts: all - user: root - become: yes - gather_facts: yes - tasks: - - include_role: - name: nginx-oss - vars: - group: master - namespace: nginx - domain: onwalk.net - auto_issuance: true - update_secret: true - tls: - - secret_name: nginx-tls - keyfile: /etc/ssl/onwalk.net.key - certfile: /etc/ssl/onwalk.net.pem diff --git a/playbook/jobs/init_observability-agent b/playbook/jobs/init_observability-agent deleted file mode 100644 index 4b86335e..00000000 --- a/playbook/jobs/init_observability-agent +++ /dev/null @@ -1,15 +0,0 @@ -- name: setup observability agent - hosts: all - user: root - become: yes - gather_facts: yes - tasks: - - include_role: - name: observability-agent - vars: - group: master - namespace: monitoring - observableserver: prometheus.onwalk.net - port: 3100 - deepflowserverip: 34.85.43.134 - deepflowserverid: d-N5rfICv2PS diff --git a/playbook/jobs/init_observability-server b/playbook/jobs/init_observability-server deleted file mode 100644 index 12817230..00000000 --- a/playbook/jobs/init_observability-server +++ /dev/null @@ -1,19 +0,0 @@ -- name: setup observability server - hosts: all - user: root - become: yes - gather_facts: yes - tasks: - - include_role: - name: observability-server - vars: - group: master - namespace: monitoring - db_namespace: database - domain: onwalk.net - auto_issuance: true - update_secret: true - tls: - - secret_name: obs-tls - keyfile: /etc/ssl/onwalk.net.key - certfile: /etc/ssl/onwalk.net.pem diff --git a/playbook/jobs/init_openldap b/playbook/jobs/init_openldap deleted file mode 100644 index fc9fdc38..00000000 --- a/playbook/jobs/init_openldap +++ /dev/null @@ -1,17 +0,0 @@ -- name: setup openldap - hosts: all - user: root - become: yes - gather_facts: yes - tasks: - - include_role: - name: openldap - vars: - group: master - namespace: itsm - domain: onwalk.net - auto_issuance: true - tls: - - secret_name: openldap-tls - keyfile: /etc/ssl/onwalk.net.key - certfile: /etc.ssl/onwalk.net.pem diff --git a/playbook/jobs/init_postgresql b/playbook/jobs/init_postgresql deleted file mode 100644 index e019a8dd..00000000 --- a/playbook/jobs/init_postgresql +++ /dev/null @@ -1,11 +0,0 @@ -- name: set postgresql - hosts: all - user: root - become: yes - gather_facts: yes - tasks: - - include_role: - name: postgresql - vars: - group: master - db_namespace: database diff --git a/playbook/jobs/init_redis b/playbook/jobs/init_redis deleted file mode 100644 index e4726d10..00000000 --- a/playbook/jobs/init_redis +++ /dev/null @@ -1,10 +0,0 @@ -- name: setup redis - hosts: all - user: root - become: yes - gather_facts: yes - tasks: - - include_role: - name: redis - vars: - group: master diff --git a/playbook/jobs/init_ssl_cert b/playbook/jobs/init_ssl_cert deleted file mode 100644 index 51663648..00000000 --- a/playbook/jobs/init_ssl_cert +++ /dev/null @@ -1,12 +0,0 @@ -- name: create ssl cert - hosts: all - user: root - become: yes - gather_facts: yes - tasks: - - include_role: - name: cert-manager - vars: - group: master - domain: onwalk.net - auto_issuance: true diff --git a/playbook/jobs/init_ssl_certs b/playbook/jobs/init_ssl_certs deleted file mode 100644 index 8e24f307..00000000 --- a/playbook/jobs/init_ssl_certs +++ /dev/null @@ -1,18 +0,0 @@ -- name: setup nginx-oss - hosts: all - user: root - become: yes - gather_facts: yes - tasks: - - include_role: - name: nginx-oss - vars: - group: master - namespace: nginx - domain: onwalk.net - auto_issuance: true - update_secret: true - tls: - - secret_name: nginx-tls - keyfile: /etc/ssl/onwalk.net.key - certfile: /etc/ssl/onwalk.net.pem diff --git a/playbook/jobs/roles b/playbook/jobs/roles deleted file mode 120000 index d8c4472c..00000000 --- a/playbook/jobs/roles +++ /dev/null @@ -1 +0,0 @@ -../roles \ No newline at end of file diff --git a/playbook/requirements.txt b/playbook/requirements.txt deleted file mode 100644 index e2914821..00000000 --- a/playbook/requirements.txt +++ /dev/null @@ -1,4 +0,0 @@ -pulumi==3.58.0 -pulumi-aws==5.32.0 -pulumi_command==0.7.0 -jinja2==3.1.2 diff --git a/playbook/roles/alerting/files/setup-observable-server.sh b/playbook/roles/alerting/files/setup-observable-server.sh deleted file mode 100644 index 848ebe09..00000000 --- a/playbook/roles/alerting/files/setup-observable-server.sh +++ /dev/null @@ -1,102 +0,0 @@ -#!/bin/bash - -export domain=$1 -export secret=$2 -export namespace=$3 -export mysql_db_password=$4 - -kubectl label nodes k3s-server prometheus=true --overwrite - -cat > values.yaml << EOF -deepflow: - enabled: true - clickhouse: - enabled: false - mysql: - enabled: false - grafana: - enabled: true - ingress: - enabled: true - ingressClassName: nginx - hosts: - - grafana.${domain} - tls: - - secretName: ${secret} - hosts: - - grafana.${domain} - global: - externalClickHouse: - enabled: true - type: ep - clusterName: default - storagePolicy: default - username: default - password: '' - hosts: - - ip: 10.1.2.3 - port: 9000 - - ip: 10.1.2.4 - port: 9000 - - ip: 10.1.2.5 - port: 9000 - externalMySQL: - enabled: true - ip: mysql.database.svc.cluster.local - port: 3306 - username: root - password: {{ mysql_db_password }} -prometheus: - enabled: true - alertmanager: - enabled: false - prometheus-pushgateway: - enabled: false - kube-state-metrics: - enabled: false - server: - ingress: - ingressClassName: nginx - hosts: - - prometheus.${domain} - tls: - - secretName: ${secret} - hosts: - - prometheus.${domain} - alertmanagers: - - static_configs: - - targets: - - alertmanager.${domain} - serverFiles: - prometheus.yml: - rule_files: - - /etc/config/recording_rules.yml - - /etc/config/alerting_rules.yml -alertmanager: - configmapReload: - enabled: false - config: - global: - resolve_timeout: 5m - smtp_smarthost: 'smtp.qq.com:465' - smtp_from: '11111111@qq.com' - smtp_auth_username: '11111111@qq.com' - smtp_auth_password: '123456' - smtp_require_tls: false - templates: - - '/etc/alertmanager/*.tmpl' - receivers: - - name: 'default-receiver' - email_configs: - - to: '{{ template "email.to" . }}' - html: '{{ template "email.to.html" . }}' - route: - group_wait: 10s - group_interval: 5m - receiver: default-receiver - repeat_interval: 1h -EOF - -helm repo add stable https://artifact.onwalk.net/chartrepo/public/ || echo true -helm repo update -helm upgrade --install observable-server stable/observableserver -n ${namspace} -f values.yaml diff --git a/playbook/roles/alerting/meta/main.yml b/playbook/roles/alerting/meta/main.yml deleted file mode 100644 index 83cef7b5..00000000 --- a/playbook/roles/alerting/meta/main.yml +++ /dev/null @@ -1,2 +0,0 @@ -dependencies: - - role: cert-manager diff --git a/playbook/roles/alerting/tasks/main.yml b/playbook/roles/alerting/tasks/main.yml deleted file mode 100755 index cd7f06e3..00000000 --- a/playbook/roles/alerting/tasks/main.yml +++ /dev/null @@ -1,17 +0,0 @@ -roles/alerting/tasks/main.yml- name: get db password - shell: 'kubectl get secret --namespace database postgresql -o jsonpath="{.data.postgres-password}" | base64 -d' - register: command_raw - when: inventory_hostname in groups[group][0] - -- name: set fact join command - set_fact: - mysql_db_password : "{{ command_raw.stdout_lines[0] }}" - when: inventory_hostname in groups[group][0] - -- name: Setup OpenLdap Server - 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 - when: inventory_hostname in groups[group] diff --git a/playbook/roles/alerting/templates/alerting_rules b/playbook/roles/alerting/templates/alerting_rules deleted file mode 100644 index 6b8a01e9..00000000 --- a/playbook/roles/alerting/templates/alerting_rules +++ /dev/null @@ -1,37 +0,0 @@ -data: - alerting_rules.yml: | - groups: - - name: host-monitoring - rules: - - alert: HighLoad - expr: node_load1 > 2.0 - for: 5m - labels: - severity: warning - annotations: - summary: High load on {{ $labels.instance }} - description: "Load is {{ $value }} (threshold: 2.0)" - - alert: HighCpuUsage - expr: 100 - (avg by (instance) (irate(node_cpu_seconds_total{mode="idle"}[5m])) * 100) > 90 - for: 5m - labels: - severity: critical - annotations: - summary: High CPU usage on {{ $labels.instance }} - description: "CPU usage is {{ $value }}%" - - alert: HighMemoryUsage - expr: (node_memory_MemTotal_bytes - node_memory_MemFree_bytes - node_memory_Buffers_bytes - node_memory_Cached_bytes) / node_memory_MemTotal_bytes * 100 > 90 - for: 5m - labels: - severity: warning - annotations: - summary: High memory usage on {{ $labels.instance }} - description: "Memory usage is {{ $value }}%" - - alert: HighDiskUsage - expr: node_filesystem_avail_bytes{fstype="ext4"} / node_filesystem_size_bytes{fstype="ext4"} * 100 < 10 - for: 5m - labels: - severity: critical - annotations: - summary: High disk usage on {{ $labels.instance }} - description: "Disk usage is {{ $value }}% diff --git a/playbook/roles/alerting/templates/recording_rules b/playbook/roles/alerting/templates/recording_rules deleted file mode 100644 index 061e1c5e..00000000 --- a/playbook/roles/alerting/templates/recording_rules +++ /dev/null @@ -1,55 +0,0 @@ -data: - recording_rules.yml: | - groups: - - name: host-monitoring - rules: - - record: node_load1 - expr: node_load1 - - record: node_cpu_usage - expr: 100 - (avg by (instance) (irate(node_cpu_seconds_total{mode="idle"}[5m])) * 100) - - record: node_memory_usage - expr: (node_memory_MemTotal_bytes - node_memory_MemFree_bytes - node_memory_Buffers_bytes - node_memory_Cached_bytes) / node_memory_MemTotal_bytes * 100 - - record: node_disk_usage - expr: 100 - (avg by (instance) (node_filesystem_avail_bytes{fstype="ext4"} / node_filesystem_size_bytes{fstype="ext4"}) * 100) -groups: -- name: 实例存活告警规则 - rules: - - alert: 实例存活告警 - expr: up == 0 - for: 1m - labels: - user: prometheus - severity: warning - annotations: - summary: "主机宕机 !!!" - description: "该实例主机已经宕机超过一分钟了。" -- name: 内存报警规则 - rules: - - alert: 内存使用率告警 - expr: (1 - (node_memory_MemAvailable_bytes / (node_memory_MemTotal_bytes))) * 100 > 50 - for: 1m - labels: - severity: warning - annotations: - summary: "服务器可用内存不足。" - description: "内存使用率已超过50%(当前值:{{ $value }}%)" -- name: CPU报警规则 - rules: - - alert: CPU使用率告警 - expr: 100 - (avg by (instance)(irate(node_cpu_seconds_total{mode="idle"}[1m]) )) * 100 > 50 - for: 1m - labels: - severity: warning - annotations: - summary: "CPU使用率正在飙升。" - description: "CPU使用率超过50%(当前值:{{ $value }}%)" -- name: 磁盘使用率报警规则 - rules: - - alert: 磁盘使用率告警 - expr: 100 - node_filesystem_free_bytes{fstype=~"xfs|ext4"} / node_filesystem_size_bytes{fstype=~"xfs|ext4"} * 100 > 80 - for: 20m - labels: - severity: warning - annotations: - summary: "硬盘分区使用率过高" - description: "分区使用大于80%(当前值:{{ $value }}%)" diff --git a/playbook/roles/bookinfo/meta/main.yml b/playbook/roles/bookinfo/meta/main.yml deleted file mode 100644 index 6fc3ce8b..00000000 --- a/playbook/roles/bookinfo/meta/main.yml +++ /dev/null @@ -1,3 +0,0 @@ -dependencies: - - role: cert-manager - - role: secret-manger diff --git a/playbook/roles/bookinfo/tasks/main.yml b/playbook/roles/bookinfo/tasks/main.yml deleted file mode 100755 index 935ec33f..00000000 --- a/playbook/roles/bookinfo/tasks/main.yml +++ /dev/null @@ -1,26 +0,0 @@ -- name: Prep DIR - shell: "mkdir -pv /tmp/bookinfo/datadog-apm/" - -- name: Prep NameSpace - shell: "kubectl create namespace default || echo true" - -- name: Sync bookinfo deploy yaml - template: src=templates/{{ item }} dest=/tmp/bookinfo/{{ item }} owner=root group=root mode=0644 force=yes unsafe_writes=yes - with_items: - - datadog-apm/apline-cli.yaml - - datadog-apm/bookinfo-productpage-python.yaml - - datadog-apm/bookinfo-reviews.yaml - - datadog-apm/bookinfo-details.yaml - - datadog-apm/bookinfo-ratings.yaml - - datadog-apm/bookinfo-ingress.yaml - -- name: Setup bookinfo app - shell: "kubectl apply -f /tmp/bookinfo/{{ item }}" - when: inventory_hostname in groups[group] - with_items: - - datadog-apm/apline-cli.yaml - - datadog-apm/bookinfo-productpage-python.yaml - - datadog-apm/bookinfo-reviews.yaml - - datadog-apm/bookinfo-details.yaml - - datadog-apm/bookinfo-ratings.yaml - - datadog-apm/bookinfo-ingress.yaml diff --git a/playbook/roles/bookinfo/templates/.gitignore b/playbook/roles/bookinfo/templates/.gitignore deleted file mode 100644 index a194b200..00000000 --- a/playbook/roles/bookinfo/templates/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -/clickhouse-keeper-k8s.iml -/.idea/ diff --git a/playbook/roles/bookinfo/templates/datadog-apm/apline-cli.yaml b/playbook/roles/bookinfo/templates/datadog-apm/apline-cli.yaml deleted file mode 100644 index 1c457c54..00000000 --- a/playbook/roles/bookinfo/templates/datadog-apm/apline-cli.yaml +++ /dev/null @@ -1,20 +0,0 @@ -apiVersion: v1 -kind: Namespace -metadata: - name: bookinfo ---- -apiVersion: v1 -kind: Pod -metadata: - name: alpine - namespace: bookinfo -spec: - containers: - - image: alpine:3.13 - command: - - /bin/sh - - "-c" - - "sleep 600m" - imagePullPolicy: IfNotPresent - name: alpine - restartPolicy: Always diff --git a/playbook/roles/bookinfo/templates/datadog-apm/bookinfo-details.yaml b/playbook/roles/bookinfo/templates/datadog-apm/bookinfo-details.yaml deleted file mode 100644 index e2200560..00000000 --- a/playbook/roles/bookinfo/templates/datadog-apm/bookinfo-details.yaml +++ /dev/null @@ -1,55 +0,0 @@ -################################################################################################## -# Details service -################################################################################################## -apiVersion: v1 -kind: Service -metadata: - name: details - namespace: bookinfo - labels: - app: details - service: details -spec: - ports: - - port: 9080 - name: http - selector: - app: details ---- -apiVersion: v1 -kind: ServiceAccount -metadata: - name: bookinfo-details - namespace: bookinfo - labels: - account: details ---- -apiVersion: apps/v1 -kind: Deployment -metadata: - name: details-v1 - namespace: bookinfo - labels: - app: details - version: v1 -spec: - replicas: 1 - selector: - matchLabels: - app: details - version: v1 - template: - metadata: - labels: - app: details - version: v1 - spec: - serviceAccountName: bookinfo-details - containers: - - name: details - image: docker.io/istio/examples-bookinfo-details-v1:1.17.0 - imagePullPolicy: IfNotPresent - ports: - - containerPort: 9080 - securityContext: - runAsUser: 1000 diff --git a/playbook/roles/bookinfo/templates/datadog-apm/bookinfo-ingress.yaml b/playbook/roles/bookinfo/templates/datadog-apm/bookinfo-ingress.yaml deleted file mode 100644 index a9b01f81..00000000 --- a/playbook/roles/bookinfo/templates/datadog-apm/bookinfo-ingress.yaml +++ /dev/null @@ -1,56 +0,0 @@ -apiVersion: networking.k8s.io/v1 -kind: Ingress -metadata: - name: bookinfo - namespace: bookinfo -spec: - ingressClassName: nginx - rules: - - host: bookinfo.onwalk.net - http: - paths: - - backend: - service: - name: productpage - port: - number: 9080 - path: / - pathType: Prefix - tls: - - hosts: - - bookinfo.onwalk.net - secretName: bookinfo-tls ---- -apiVersion: apisix.apache.org/v2 -kind: ApisixRoute -metadata: - name: bookinfo - namespace: bookinfo -spec: - http: - - name: root - match: - hosts: - - bookinfo.onwalk.net - paths: - - '/*' - backends: - - serviceName: productpage - servicePort: 9080 - plugins: - - config: - http_to_https: true - enable: true - name: redirect ---- -apiVersion: apisix.apache.org/v2 -kind: ApisixTls -metadata: - name: bookinfo - namespace: bookinfo -spec: - hosts: - - bookinfo.onwalk.net - secret: - name: bookinfo-tls - namespace: bookinfo diff --git a/playbook/roles/bookinfo/templates/datadog-apm/bookinfo-productpage-python.yaml b/playbook/roles/bookinfo/templates/datadog-apm/bookinfo-productpage-python.yaml deleted file mode 100644 index 8e6888ff..00000000 --- a/playbook/roles/bookinfo/templates/datadog-apm/bookinfo-productpage-python.yaml +++ /dev/null @@ -1,93 +0,0 @@ -################################################################################################## -# Productpage services -################################################################################################## -apiVersion: v1 -kind: Service -metadata: - name: productpage - namespace: bookinfo - labels: - app: productpage - service: productpage -spec: - ports: - - port: 9080 - name: http - selector: - app: productpage ---- -apiVersion: v1 -kind: ServiceAccount -metadata: - name: bookinfo-productpage - namespace: bookinfo - labels: - account: productpage ---- -apiVersion: apps/v1 -kind: Deployment -metadata: - name: productpage-v1 - namespace: bookinfo - labels: - tags.datadoghq.com/env: "dev" - tags.datadoghq.com/service: "productpage" - tags.datadoghq.com/version: "v1" - app: productpage - version: v1 -spec: - replicas: 1 - selector: - matchLabels: - app: productpage - version: v1 - template: - metadata: - labels: - tags.datadoghq.com/env: "dev" - tags.datadoghq.com/service: "productpage" - tags.datadoghq.com/version: "v1" - admission.datadoghq.com/enabled: "true" - app: productpage - version: v1 - annotations: - admission.datadoghq.com/python-lib.version: v1.12.0 - spec: - serviceAccountName: bookinfo-productpage - containers: - - name: productpage - image: docker.io/istio/examples-bookinfo-productpage-v1:1.17.0 - imagePullPolicy: IfNotPresent - env: - - name: DATADOG_HOST - value: datadog-agent - - name: DD_LOGS_INJECTION - value: "true" - - name: DD_AGENT_HOST - value: datadog-agent - - name: DD_TRACE_AGENT_PORT - value: "8126" - - name: DD_TRACE_SAMPLE_RATE - value: "1" - - name: DD_ENV - valueFrom: - fieldRef: - fieldPath: metadata.labels['tags.datadoghq.com/env'] - - name: DD_SERVICE - valueFrom: - fieldRef: - fieldPath: metadata.labels['tags.datadoghq.com/service'] - - name: DD_VERSION - valueFrom: - fieldRef: - fieldPath: metadata.labels['tags.datadoghq.com/version'] - ports: - - containerPort: 9080 - volumeMounts: - - name: tmp - mountPath: /tmp - securityContext: - runAsUser: 1000 - volumes: - - name: tmp - emptyDir: {} diff --git a/playbook/roles/bookinfo/templates/datadog-apm/bookinfo-ratings.yaml b/playbook/roles/bookinfo/templates/datadog-apm/bookinfo-ratings.yaml deleted file mode 100644 index 9557b505..00000000 --- a/playbook/roles/bookinfo/templates/datadog-apm/bookinfo-ratings.yaml +++ /dev/null @@ -1,86 +0,0 @@ -################################################################################################## -# Ratings service -################################################################################################## -apiVersion: v1 -kind: Service -metadata: - name: ratings - namespace: bookinfo - labels: - app: ratings - service: ratings -spec: - ports: - - port: 9080 - name: http - selector: - app: ratings ---- -apiVersion: v1 -kind: ServiceAccount -metadata: - name: bookinfo-ratings - namespace: bookinfo - labels: - account: ratings ---- -apiVersion: apps/v1 -kind: Deployment -metadata: - name: ratings-v1 - labels: - tags.datadoghq.com/env: "dev" - tags.datadoghq.com/service: "ratings" - tags.datadoghq.com/version: "v1" - app: ratings - version: v1 -spec: - replicas: 1 - selector: - matchLabels: - app: ratings - version: v1 - template: - metadata: - labels: - tags.datadoghq.com/env: "dev" - tags.datadoghq.com/service: "ratings" - tags.datadoghq.com/version: "v1" - admission.datadoghq.com/enabled: "true" - app: ratings - version: v1 - annotations: - admission.datadoghq.com/js-lib.version: v3.17.1 - spec: - serviceAccountName: bookinfo-ratings - containers: - - name: ratings - image: docker.io/istio/examples-bookinfo-ratings-v1:1.17.0 - imagePullPolicy: IfNotPresent - ports: - - containerPort: 9080 - securityContext: - runAsUser: 1000 - env: - - name: DD_LOGS_INJECTION - value: "true" - - name: DD_AGENT_HOST - value: datadog-agent - - name: DD_TRACE_AGENT_PORT - value: "8126" - - name: DD_TRACE_SAMPLE_RATE - value: "1" - - name: DATADOG_HOST - value: datadog-agent - - name: DD_ENV - valueFrom: - fieldRef: - fieldPath: metadata.labels['tags.datadoghq.com/env'] - - name: DD_SERVICE - valueFrom: - fieldRef: - fieldPath: metadata.labels['tags.datadoghq.com/service'] - - name: DD_VERSION - valueFrom: - fieldRef: - fieldPath: metadata.labels['tags.datadoghq.com/version'] diff --git a/playbook/roles/bookinfo/templates/datadog-apm/bookinfo-reviews.yaml b/playbook/roles/bookinfo/templates/datadog-apm/bookinfo-reviews.yaml deleted file mode 100644 index 7d6f5d0f..00000000 --- a/playbook/roles/bookinfo/templates/datadog-apm/bookinfo-reviews.yaml +++ /dev/null @@ -1,245 +0,0 @@ -################################################################################################## -# Reviews service -################################################################################################## -apiVersion: v1 -kind: Service -metadata: - name: reviews - namespace: bookinfo - labels: - app: reviews - service: reviews -spec: - ports: - - port: 9080 - name: http - selector: - app: reviews ---- -apiVersion: v1 -kind: ServiceAccount -metadata: - name: bookinfo-reviews - namespace: bookinfo - labels: - account: reviews ---- -apiVersion: apps/v1 -kind: Deployment -metadata: - name: reviews-v1 - namespace: bookinfo - labels: - tags.datadoghq.com/env: "dev" - tags.datadoghq.com/service: "reviews" - tags.datadoghq.com/version: "v1" - app: reviews - version: v1 -spec: - replicas: 1 - selector: - matchLabels: - app: reviews - version: v1 - template: - metadata: - labels: - tags.datadoghq.com/env: "dev" - tags.datadoghq.com/service: "reviews" - tags.datadoghq.com/version: "v1" - admission.datadoghq.com/enabled: "true" - app: reviews - version: v1 - annotations: - admission.datadoghq.com/java-lib.version: v1.12.1 - spec: - serviceAccountName: bookinfo-reviews - containers: - - name: reviews - image: docker.io/istio/examples-bookinfo-reviews-v1:1.17.0 - imagePullPolicy: IfNotPresent - env: - - name: LOG_DIR - value: "/tmp/logs" - - name: DD_LOGS_INJECTION - value: "true" - - name: DD_AGENT_HOST - value: datadog-agent - - name: DD_TRACE_AGENT_PORT - value: "8126" - - name: DD_TRACE_SAMPLE_RATE - value: "1" - - name: DATADOG_HOST - value: datadog-agent - - name: DD_ENV - valueFrom: - fieldRef: - fieldPath: metadata.labels['tags.datadoghq.com/env'] - - name: DD_SERVICE - valueFrom: - fieldRef: - fieldPath: metadata.labels['tags.datadoghq.com/service'] - - name: DD_VERSION - valueFrom: - fieldRef: - fieldPath: metadata.labels['tags.datadoghq.com/version'] - ports: - - containerPort: 9080 - volumeMounts: - - name: tmp - mountPath: /tmp - - name: wlp-output - mountPath: /opt/ibm/wlp/output - securityContext: - runAsUser: 1000 - volumes: - - name: wlp-output - emptyDir: {} - - name: tmp - emptyDir: {} ---- -apiVersion: apps/v1 -kind: Deployment -metadata: - name: reviews-v2 - labels: - tags.datadoghq.com/env: "dev" - tags.datadoghq.com/service: "reviews" - tags.datadoghq.com/version: "v2" - app: reviews - version: v2 -spec: - replicas: 1 - selector: - matchLabels: - app: reviews - version: v2 - template: - metadata: - labels: - tags.datadoghq.com/env: "dev" - tags.datadoghq.com/service: "reviews" - tags.datadoghq.com/version: "v2" - admission.datadoghq.com/enabled: "true" - app: reviews - version: v2 - annotations: - admission.datadoghq.com/java-lib.version: v1.12.1 - spec: - serviceAccountName: bookinfo-reviews - containers: - - name: reviews - image: docker.io/istio/examples-bookinfo-reviews-v2:1.17.0 - imagePullPolicy: IfNotPresent - env: - - name: DD_LOGS_INJECTION - value: "true" - - name: LOG_DIR - value: "/tmp/logs" - - name: DD_AGENT_HOST - value: datadog-agent - - name: DD_TRACE_AGENT_PORT - value: "8126" - - name: DD_TRACE_SAMPLE_RATE - value: "1" - - name: DATADOG_HOST - value: datadog-agent - - name: DD_ENV - valueFrom: - fieldRef: - fieldPath: metadata.labels['tags.datadoghq.com/env'] - - name: DD_SERVICE - valueFrom: - fieldRef: - fieldPath: metadata.labels['tags.datadoghq.com/service'] - - name: DD_VERSION - valueFrom: - fieldRef: - fieldPath: metadata.labels['tags.datadoghq.com/version'] - ports: - - containerPort: 9080 - volumeMounts: - - name: tmp - mountPath: /tmp - - name: wlp-output - mountPath: /opt/ibm/wlp/output - securityContext: - runAsUser: 1000 - volumes: - - name: wlp-output - emptyDir: {} - - name: tmp - emptyDir: {} ---- -apiVersion: apps/v1 -kind: Deployment -metadata: - name: reviews-v3 - labels: - tags.datadoghq.com/env: "dev" - tags.datadoghq.com/service: "reviews" - tags.datadoghq.com/version: "v3" - app: reviews - version: v3 -spec: - replicas: 1 - selector: - matchLabels: - app: reviews - version: v3 - template: - metadata: - labels: - tags.datadoghq.com/env: "dev" - tags.datadoghq.com/service: "reviews" - tags.datadoghq.com/version: "v3" - admission.datadoghq.com/enabled: "true" - app: reviews - version: v3 - annotations: - admission.datadoghq.com/java-lib.version: v1.12.1 - spec: - serviceAccountName: bookinfo-reviews - containers: - - name: reviews - image: docker.io/istio/examples-bookinfo-reviews-v3:1.17.0 - imagePullPolicy: IfNotPresent - env: - - name: LOG_DIR - value: "/tmp/logs" - - name: DATADOG_HOST - value: datadog-agent - - name: DD_AGENT_HOST - value: datadog-agent - - name: DD_TRACE_AGENT_PORT - value: "8126" - - name: DD_LOGS_INJECTION - value: "true" - - name: DD_TRACE_SAMPLE_RATE - value: "1" - - name: DD_ENV - valueFrom: - fieldRef: - fieldPath: metadata.labels['tags.datadoghq.com/env'] - - name: DD_SERVICE - valueFrom: - fieldRef: - fieldPath: metadata.labels['tags.datadoghq.com/service'] - - name: DD_VERSION - valueFrom: - fieldRef: - fieldPath: metadata.labels['tags.datadoghq.com/version'] - ports: - - containerPort: 9080 - volumeMounts: - - name: tmp - mountPath: /tmp - - name: wlp-output - mountPath: /opt/ibm/wlp/output - securityContext: - runAsUser: 1000 - volumes: - - name: wlp-output - emptyDir: {} - - name: tmp - emptyDir: {} diff --git a/playbook/roles/bookinfo/templates/deepflow-apm/apline-cli.yaml b/playbook/roles/bookinfo/templates/deepflow-apm/apline-cli.yaml deleted file mode 100644 index 1c457c54..00000000 --- a/playbook/roles/bookinfo/templates/deepflow-apm/apline-cli.yaml +++ /dev/null @@ -1,20 +0,0 @@ -apiVersion: v1 -kind: Namespace -metadata: - name: bookinfo ---- -apiVersion: v1 -kind: Pod -metadata: - name: alpine - namespace: bookinfo -spec: - containers: - - image: alpine:3.13 - command: - - /bin/sh - - "-c" - - "sleep 600m" - imagePullPolicy: IfNotPresent - name: alpine - restartPolicy: Always diff --git a/playbook/roles/bookinfo/templates/deepflow-apm/bookinfo-details.yaml b/playbook/roles/bookinfo/templates/deepflow-apm/bookinfo-details.yaml deleted file mode 100644 index e2200560..00000000 --- a/playbook/roles/bookinfo/templates/deepflow-apm/bookinfo-details.yaml +++ /dev/null @@ -1,55 +0,0 @@ -################################################################################################## -# Details service -################################################################################################## -apiVersion: v1 -kind: Service -metadata: - name: details - namespace: bookinfo - labels: - app: details - service: details -spec: - ports: - - port: 9080 - name: http - selector: - app: details ---- -apiVersion: v1 -kind: ServiceAccount -metadata: - name: bookinfo-details - namespace: bookinfo - labels: - account: details ---- -apiVersion: apps/v1 -kind: Deployment -metadata: - name: details-v1 - namespace: bookinfo - labels: - app: details - version: v1 -spec: - replicas: 1 - selector: - matchLabels: - app: details - version: v1 - template: - metadata: - labels: - app: details - version: v1 - spec: - serviceAccountName: bookinfo-details - containers: - - name: details - image: docker.io/istio/examples-bookinfo-details-v1:1.17.0 - imagePullPolicy: IfNotPresent - ports: - - containerPort: 9080 - securityContext: - runAsUser: 1000 diff --git a/playbook/roles/bookinfo/templates/deepflow-apm/bookinfo-ingress.yaml b/playbook/roles/bookinfo/templates/deepflow-apm/bookinfo-ingress.yaml deleted file mode 100644 index a9b01f81..00000000 --- a/playbook/roles/bookinfo/templates/deepflow-apm/bookinfo-ingress.yaml +++ /dev/null @@ -1,56 +0,0 @@ -apiVersion: networking.k8s.io/v1 -kind: Ingress -metadata: - name: bookinfo - namespace: bookinfo -spec: - ingressClassName: nginx - rules: - - host: bookinfo.onwalk.net - http: - paths: - - backend: - service: - name: productpage - port: - number: 9080 - path: / - pathType: Prefix - tls: - - hosts: - - bookinfo.onwalk.net - secretName: bookinfo-tls ---- -apiVersion: apisix.apache.org/v2 -kind: ApisixRoute -metadata: - name: bookinfo - namespace: bookinfo -spec: - http: - - name: root - match: - hosts: - - bookinfo.onwalk.net - paths: - - '/*' - backends: - - serviceName: productpage - servicePort: 9080 - plugins: - - config: - http_to_https: true - enable: true - name: redirect ---- -apiVersion: apisix.apache.org/v2 -kind: ApisixTls -metadata: - name: bookinfo - namespace: bookinfo -spec: - hosts: - - bookinfo.onwalk.net - secret: - name: bookinfo-tls - namespace: bookinfo diff --git a/playbook/roles/bookinfo/templates/deepflow-apm/bookinfo-productpage-python.yaml b/playbook/roles/bookinfo/templates/deepflow-apm/bookinfo-productpage-python.yaml deleted file mode 100644 index c2801378..00000000 --- a/playbook/roles/bookinfo/templates/deepflow-apm/bookinfo-productpage-python.yaml +++ /dev/null @@ -1,61 +0,0 @@ -################################################################################################## -# Productpage services -################################################################################################## -apiVersion: v1 -kind: Service -metadata: - name: productpage - namespace: bookinfo - labels: - app: productpage - service: productpage -spec: - ports: - - port: 9080 - name: http - selector: - app: productpage ---- -apiVersion: v1 -kind: ServiceAccount -metadata: - name: bookinfo-productpage - namespace: bookinfo - labels: - account: productpage ---- -apiVersion: apps/v1 -kind: Deployment -metadata: - name: productpage-v1 - namespace: bookinfo - labels: - app: productpage - version: v1 -spec: - replicas: 1 - selector: - matchLabels: - app: productpage - version: v1 - template: - metadata: - labels: - app: productpage - version: v1 - spec: - serviceAccountName: bookinfo-productpage - containers: - - name: productpage - image: docker.io/istio/examples-bookinfo-productpage-v1:1.17.0 - imagePullPolicy: IfNotPresent - ports: - - containerPort: 9080 - volumeMounts: - - name: tmp - mountPath: /tmp - securityContext: - runAsUser: 1000 - volumes: - - name: tmp - emptyDir: {} diff --git a/playbook/roles/bookinfo/templates/deepflow-apm/bookinfo-ratings.yaml b/playbook/roles/bookinfo/templates/deepflow-apm/bookinfo-ratings.yaml deleted file mode 100644 index bc0bbf7b..00000000 --- a/playbook/roles/bookinfo/templates/deepflow-apm/bookinfo-ratings.yaml +++ /dev/null @@ -1,55 +0,0 @@ -################################################################################################## -# Ratings service -################################################################################################## -apiVersion: v1 -kind: Service -metadata: - name: ratings - namespace: bookinfo - labels: - app: ratings - service: ratings -spec: - ports: - - port: 9080 - name: http - selector: - app: ratings ---- -apiVersion: v1 -kind: ServiceAccount -metadata: - name: bookinfo-ratings - namespace: bookinfo - labels: - account: ratings ---- -apiVersion: apps/v1 -kind: Deployment -metadata: - name: ratings-v1 - namespace: bookinfo - labels: - app: ratings - version: v1 -spec: - replicas: 1 - selector: - matchLabels: - app: ratings - version: v1 - template: - metadata: - labels: - app: ratings - version: v1 - spec: - serviceAccountName: bookinfo-ratings - containers: - - name: ratings - image: docker.io/istio/examples-bookinfo-ratings-v1:1.17.0 - imagePullPolicy: IfNotPresent - ports: - - containerPort: 9080 - securityContext: - runAsUser: 1000 diff --git a/playbook/roles/bookinfo/templates/deepflow-apm/bookinfo-reviews.yaml b/playbook/roles/bookinfo/templates/deepflow-apm/bookinfo-reviews.yaml deleted file mode 100644 index a3fe6e0e..00000000 --- a/playbook/roles/bookinfo/templates/deepflow-apm/bookinfo-reviews.yaml +++ /dev/null @@ -1,145 +0,0 @@ -################################################################################################## -# Reviews service -################################################################################################## -apiVersion: v1 -kind: Service -metadata: - name: reviews - namespace: bookinfo - labels: - app: reviews - service: reviews -spec: - ports: - - port: 9080 - name: http - selector: - app: reviews ---- -apiVersion: v1 -kind: ServiceAccount -metadata: - name: bookinfo-reviews - namespace: bookinfo - labels: - account: reviews ---- -apiVersion: apps/v1 -kind: Deployment -metadata: - name: reviews-v1 - namespace: bookinfo - labels: - app: reviews - version: v1 -spec: - replicas: 1 - selector: - matchLabels: - app: reviews - version: v1 - template: - metadata: - labels: - app: reviews - version: v1 - spec: - serviceAccountName: bookinfo-reviews - containers: - - name: reviews - image: docker.io/istio/examples-bookinfo-reviews-v1:1.17.0 - imagePullPolicy: IfNotPresent - ports: - - containerPort: 9080 - volumeMounts: - - name: tmp - mountPath: /tmp - - name: wlp-output - mountPath: /opt/ibm/wlp/output - securityContext: - runAsUser: 1000 - volumes: - - name: wlp-output - emptyDir: {} - - name: tmp - emptyDir: {} ---- -apiVersion: apps/v1 -kind: Deployment -metadata: - name: reviews-v2 - namespace: bookinfo - labels: - app: reviews - version: v2 -spec: - replicas: 1 - selector: - matchLabels: - app: reviews - version: v2 - template: - metadata: - labels: - app: reviews - version: v2 - spec: - serviceAccountName: bookinfo-reviews - containers: - - name: reviews - image: docker.io/istio/examples-bookinfo-reviews-v2:1.17.0 - imagePullPolicy: IfNotPresent - ports: - - containerPort: 9080 - volumeMounts: - - name: tmp - mountPath: /tmp - - name: wlp-output - mountPath: /opt/ibm/wlp/output - securityContext: - runAsUser: 1000 - volumes: - - name: wlp-output - emptyDir: {} - - name: tmp - emptyDir: {} ---- -apiVersion: apps/v1 -kind: Deployment -metadata: - name: reviews-v3 - namespace: bookinfo - labels: - app: reviews - version: v3 -spec: - replicas: 1 - selector: - matchLabels: - app: reviews - version: v3 - template: - metadata: - labels: - app: reviews - version: v3 - spec: - serviceAccountName: bookinfo-reviews - containers: - - name: reviews - image: docker.io/istio/examples-bookinfo-reviews-v3:1.17.0 - imagePullPolicy: IfNotPresent - ports: - - containerPort: 9080 - volumeMounts: - - name: tmp - mountPath: /tmp - - name: wlp-output - mountPath: /opt/ibm/wlp/output - securityContext: - runAsUser: 1000 - volumes: - - name: wlp-output - emptyDir: {} - - name: tmp - emptyDir: {} diff --git a/playbook/roles/cert-manager/files/certs_automated_issuance.sh b/playbook/roles/cert-manager/files/certs_automated_issuance.sh deleted file mode 100644 index d316f860..00000000 --- a/playbook/roles/cert-manager/files/certs_automated_issuance.sh +++ /dev/null @@ -1,32 +0,0 @@ -#!/bin/bash - - -#!/bin/bash -set -x -export domain=$1 -export Ali_Key=$2 -export Ali_Secret=$3 - -rm -rvf ${Domain}.* -f -rm -rvf /etc/ssl/${Domain}.* -f - -# Try to issue a certificate from ZeroSSL. If it fails, try Let's Encrypt. - -curl https://get.acme.sh | sh -s email=156405189@qq.com -sh ~/.acme.sh/acme.sh --set-default-ca --server zerossl --issue --force --dns dns_ali -d ${domain} -d "*.${domain}"; -if [ $? -eq 0 ]; then - echo "Certificate from zerossl successfully issued" -else - sh ~/.acme.sh/acme.sh --set-default-ca --server letsencrypt --issue --force --dns dns_ali -d ${domain} -d "*.${domain}" - if [ $? -eq 0 ]; then - echo "Certificate from letsencrypt successfully issued" - else - echo "Command failed" - exit 1 - fi -fi - -cat ~/.acme.sh/${domain}_ecc/${domain}.cer > ${domain}.pem -cat ~/.acme.sh/${domain}_ecc/ca.cer >> ${domain}.pem -cat ~/.acme.sh/${domain}_ecc/${domain}.key > ${domain}.key -sudo cp ${domain}.pem /etc/ssl/ -f && sudo cp ${domain}.key /etc/ssl/ -f diff --git a/playbook/roles/cert-manager/files/update-certs-secret.sh b/playbook/roles/cert-manager/files/update-certs-secret.sh deleted file mode 100644 index d7af4296..00000000 --- a/playbook/roles/cert-manager/files/update-certs-secret.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash - -export secret=$1 -export key_file=$2 -export cert_file=$3 -export namespace=$4 - -kubectl create namespace $namespace || echo true -kubectl delete secret tls $secret -n $namespace || echo true -kubectl create secret tls $secret --cert=$cert_file --key=$key_file -n $namespace diff --git a/playbook/roles/cert-manager/meta/main.yml b/playbook/roles/cert-manager/meta/main.yml deleted file mode 100644 index 9711b330..00000000 --- a/playbook/roles/cert-manager/meta/main.yml +++ /dev/null @@ -1,2 +0,0 @@ -dependencies: - - role: common diff --git a/playbook/roles/cert-manager/tasks/main.yml b/playbook/roles/cert-manager/tasks/main.yml deleted file mode 100755 index 1b109f6c..00000000 --- a/playbook/roles/cert-manager/tasks/main.yml +++ /dev/null @@ -1,3 +0,0 @@ -- name: certs automated issuance - script: files/certs_automated_issuance.sh {{ domain }} {{ dns_ak }} {{ dns_sk }} - when: (inventory_hostname in groups[group]) and (auto_issuance == true) diff --git a/playbook/roles/chartmuseum/files/setup.sh b/playbook/roles/chartmuseum/files/setup.sh deleted file mode 100644 index f1f870f4..00000000 --- a/playbook/roles/chartmuseum/files/setup.sh +++ /dev/null @@ -1,37 +0,0 @@ -#!/bin/bash - -domain=$1 -namespace=$2 -admin_password=$3 -secret_name=$4 -storage_type=$5 - -cat > values.yaml << EOF -env: - open: - STORAGE: local - DISABLE_API: false - AUTH_ANONYMOUS_GET: true - secret: - BASIC_AUTH_USER: admin - BASIC_AUTH_PASS: '$admin_password' -ingress: - enabled: true - hosts: - - name: charts.$domain - path: / - tls: true - tlsSecret: $secret_name - ingressClassName: nginx -persistence: - enabled: true - accessMode: ReadWriteOnce - size: 8Gi - path: /storage - storageClass: "local-path" -EOF - -export KUBECONFIG=/etc/rancher/k3s/k3s.yaml -helm repo add chartmuseum https://chartmuseum.github.io/charts -helm repo update -helm upgrade --install chartmuseum chartmuseum/chartmuseum -f values.yaml -n $namespace diff --git a/playbook/roles/chartmuseum/meta/main.yml b/playbook/roles/chartmuseum/meta/main.yml deleted file mode 100644 index 6fc3ce8b..00000000 --- a/playbook/roles/chartmuseum/meta/main.yml +++ /dev/null @@ -1,3 +0,0 @@ -dependencies: - - role: cert-manager - - role: secret-manger diff --git a/playbook/roles/chartmuseum/tasks/main.yml b/playbook/roles/chartmuseum/tasks/main.yml deleted file mode 100755 index 02d9e659..00000000 --- a/playbook/roles/chartmuseum/tasks/main.yml +++ /dev/null @@ -1,4 +0,0 @@ -- name: Setup Chartmuseum Server - script: files/setup.sh {{ domain }} {{ namespace }} {{ admin_password }} {{ item.secret_name }} - loop: "{{ tls }}" - when: inventory_hostname in groups[group] diff --git a/playbook/roles/chatwithgpt/meta/main.yml b/playbook/roles/chatwithgpt/meta/main.yml deleted file mode 100644 index 6fc3ce8b..00000000 --- a/playbook/roles/chatwithgpt/meta/main.yml +++ /dev/null @@ -1,3 +0,0 @@ -dependencies: - - role: cert-manager - - role: secret-manger diff --git a/playbook/roles/chatwithgpt/tasks/main.yml b/playbook/roles/chatwithgpt/tasks/main.yml deleted file mode 100755 index 2d260410..00000000 --- a/playbook/roles/chatwithgpt/tasks/main.yml +++ /dev/null @@ -1,11 +0,0 @@ -- name: Pre setup - shell: "kubectl create namespace chatwithgpt || echo true; rm -f /tmp/chatwithgpt.yaml || echo true" - -- name: Sync chatwithgpt deploy yaml - template: src=templates/{{ item }} dest=/tmp/{{ item }} owner=root group=root mode=0644 force=yes unsafe_writes=yes - with_items: - - chatwithgpt.yaml - -- name: Setup ChatWithGPT Server - shell: "kubectl apply -f /tmp/chatwithgpt.yaml" - when: inventory_hostname in groups[group] diff --git a/playbook/roles/chatwithgpt/templates/.gitignore b/playbook/roles/chatwithgpt/templates/.gitignore deleted file mode 100644 index a194b200..00000000 --- a/playbook/roles/chatwithgpt/templates/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -/clickhouse-keeper-k8s.iml -/.idea/ diff --git a/playbook/roles/chatwithgpt/templates/chatwithgpt.yaml b/playbook/roles/chatwithgpt/templates/chatwithgpt.yaml deleted file mode 100644 index 11da71df..00000000 --- a/playbook/roles/chatwithgpt/templates/chatwithgpt.yaml +++ /dev/null @@ -1,104 +0,0 @@ -apiVersion: v1 -kind: Service -metadata: - annotations: - meta.helm.sh/release-name: chatwithgpt - meta.helm.sh/release-namespace: chatwithgpt - labels: - app.kubernetes.io/name: chargpt - app.kubernetes.io/version: 0.2.0 - app.kubernetes.io/instance: chatwithgpt - name: chatwithgpt - namespace: chatwithgpt -spec: - internalTrafficPolicy: Cluster - ipFamilies: - - IPv4 - ipFamilyPolicy: SingleStack - ports: - - name: http - port: 3000 - protocol: TCP - targetPort: http - selector: - app.kubernetes.io/name: chatwithgpt - app.kubernetes.io/instance: chatwithgpt - sessionAffinity: None - type: ClusterIP ---- -apiVersion: apps/v1 -kind: Deployment -metadata: - labels: - app.kubernetes.io/instance: chatwithgpt - app.kubernetes.io/name: chatwithgpt - name: chatwithgpt - namespace: chatwithgpt -spec: - progressDeadlineSeconds: 600 - replicas: 1 - revisionHistoryLimit: 10 - selector: - matchLabels: - app.kubernetes.io/name: chatwithgpt - app.kubernetes.io/instance: chatwithgpt - strategy: - rollingUpdate: - maxSurge: 25% - maxUnavailable: 25% - type: RollingUpdate - template: - metadata: - creationTimestamp: null - labels: - app.kubernetes.io/name: chatwithgpt - app.kubernetes.io/instance: chatwithgpt - spec: - containers: - - name: chatwithgpt - image: artifact.onwalk.net/public/chatwithgpt:latest - imagePullPolicy: Always - env: - - name: PORT - value: "3000" - - name: WEBAPP_PORT - value: "3000" - ports: - - containerPort: 3000 - name: http - protocol: TCP - resources: {} - securityContext: {} - terminationMessagePath: /dev/termination-log - terminationMessagePolicy: File - dnsPolicy: ClusterFirst - restartPolicy: Always - schedulerName: default-scheduler - securityContext: {} - terminationGracePeriodSeconds: 30 ---- -apiVersion: networking.k8s.io/v1 -kind: Ingress -metadata: - labels: - app.kubernetes.io/name: chatwithgpt - app.kubernetes.io/instance: chatwithgpt - name: chatwithgpt - namespace: chatwithgpt -spec: - ingressClassName: nginx - rules: - - host: chatwithgpt.onwalk.net - http: - paths: - - backend: - service: - name: chatwithgpt - port: - number: 3000 - path: / - pathType: ImplementationSpecific - tls: - - hosts: - - chatwithgpt.onwalk.net - secretName: chatwithgpt-tls diff --git a/playbook/roles/clickhouse/tasks/main.yml b/playbook/roles/clickhouse/tasks/main.yml deleted file mode 100755 index 096259ce..00000000 --- a/playbook/roles/clickhouse/tasks/main.yml +++ /dev/null @@ -1,38 +0,0 @@ -- name: Prep DIR - shell: "mkdir -pv /tmp/clickhouse-cluster/ && mkdir -pv /tmp/qryn" - -- name: Prep NameSpace - shell: "kubectl create namespace clickhouse || echo true" - -- 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: - - clickhouse-cluster/clickhouse-config.yaml - - clickhouse-cluster/clickhouse-service.yaml - - clickhouse-cluster/clickhouse-user-config.yaml - - clickhouse-cluster/clickhouse-statefulset.yml - -- name: Setup ClickHouse Server - shell: "cd /tmp/clickhouse-cluster && kubectl apply -f ." - when: inventory_hostname in groups[group] - -- name: get clickhouse node ip - shell: "kubectl get pods -n clickhouse -o wide | grep clickhouse | awk '{print $6}'" - register: ck_node_ip_raw - when: inventory_hostname in groups[group][0] - -- name: set fact join command for ck_node_ip - set_fact: - ck_node_ip : "{{ ck_node_ip_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: - - qryn/qryn-deployment.yaml - - qryn/qryn-service.yaml - - qryn/qryn-ingress.yaml - -- name: Setup Qryn Server - shell: "cd /tmp/qryn && kubectl apply -f ." - when: inventory_hostname in groups[group] diff --git a/playbook/roles/clickhouse/templates/.gitignore b/playbook/roles/clickhouse/templates/.gitignore deleted file mode 100644 index a194b200..00000000 --- a/playbook/roles/clickhouse/templates/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -/clickhouse-keeper-k8s.iml -/.idea/ diff --git a/playbook/roles/clickhouse/templates/clickhouse-cluster/clickhouse-config.yaml b/playbook/roles/clickhouse/templates/clickhouse-cluster/clickhouse-config.yaml deleted file mode 100644 index 0a92affa..00000000 --- a/playbook/roles/clickhouse/templates/clickhouse-cluster/clickhouse-config.yaml +++ /dev/null @@ -1,94 +0,0 @@ -apiVersion: v1 -kind: ConfigMap -metadata: - name: clickhouse-config - namespace: clickhouse -data: - keeper.xml: | - - - 0.0.0.0 - - trace - 1 - - - - - - - - - 2181 - - /var/lib/clickhouse/coordination/log - /var/lib/clickhouse/coordination/snapshots - - 10000 - 30000 - trace - 10000 - - - - 0 - clickhouse-0.clickhouse-service.clickhouse - 9444 - - - 1 - clickhouse-1.clickhouse-service.clickhouse - 9444 - - - 2 - clickhouse-2.clickhouse-service.clickhouse - 9444 - - - - - - clickhouse-0.clickhouse-service.clickhouse - 2181 - - - clickhouse-1.clickhouse-service.clickhouse - 2181 - - - clickhouse-2.clickhouse-service.clickhouse - 2181 - - - - - cluster.xml: | - - - - - - - clickhouse-0.clickhouse-service.clickhouse - 9000 - - - - - clickhouse-1.clickhouse-service.clickhouse - 9000 - - - - - - macros.xml: | - - - - testcluster - - 1 - - diff --git a/playbook/roles/clickhouse/templates/clickhouse-cluster/clickhouse-ingress.yaml b/playbook/roles/clickhouse/templates/clickhouse-cluster/clickhouse-ingress.yaml deleted file mode 100644 index e8a0864f..00000000 --- a/playbook/roles/clickhouse/templates/clickhouse-cluster/clickhouse-ingress.yaml +++ /dev/null @@ -1,18 +0,0 @@ -apiVersion: networking.k8s.io/v1 -kind: Ingress -metadata: - name: clickhouse - namespace: clickhouse -spec: - ingressClassName: nginx - rules: - - host: clickhouse.onwalk.net - http: - paths: - - backend: - service: - name: clickhouse-service - port: - number: 8123 - path: / - pathType: Prefix diff --git a/playbook/roles/clickhouse/templates/clickhouse-cluster/clickhouse-service.yaml b/playbook/roles/clickhouse/templates/clickhouse-cluster/clickhouse-service.yaml deleted file mode 100644 index eeb1728f..00000000 --- a/playbook/roles/clickhouse/templates/clickhouse-cluster/clickhouse-service.yaml +++ /dev/null @@ -1,23 +0,0 @@ -kind: Service -apiVersion: v1 -metadata: - labels: - app: clickhouse - name: clickhouse-service - namespace: clickhouse -spec: - ports: - - name: rest - port: 8123 - - name: keeper - port: 2181 - - name: replica-a - port: 9000 - - name: replica-b - port: 9009 - - name: raft - port: 9444 - - clusterIP: None - selector: - app: clickhouse diff --git a/playbook/roles/clickhouse/templates/clickhouse-cluster/clickhouse-statefulset.yml b/playbook/roles/clickhouse/templates/clickhouse-cluster/clickhouse-statefulset.yml deleted file mode 100644 index 7bd5f7b0..00000000 --- a/playbook/roles/clickhouse/templates/clickhouse-cluster/clickhouse-statefulset.yml +++ /dev/null @@ -1,103 +0,0 @@ -apiVersion: apps/v1 -kind: StatefulSet -metadata: - name: clickhouse - namespace: clickhouse -spec: - selector: - matchLabels: - app: clickhouse - serviceName: clickhouse-service - replicas: 3 - podManagementPolicy: "Parallel" - # podManagementPolicy: OrderedReady - template: - metadata: - labels: - app: clickhouse - spec: - containers: - - name: clickhouse - image: clickhouse/clickhouse-server:22.4.5 - imagePullPolicy: IfNotPresent - workingDir: / - command: - - /bin/bash - - -c - - |- - export CK_INDEX=${HOSTNAME##*-} - echo CK_INDEX=${CK_INDEX} - ./entrypoint.sh - env: - - name: HOSTNAME - valueFrom: - fieldRef: - fieldPath: metadata.name - ports: - - name: rest - containerPort: 8123 - - name: keeper - containerPort: 2181 - - name: replica-a - containerPort: 9000 - - name: replica-b - containerPort: 9009 - - name: raft - containerPort: 9444 - volumeMounts: - - name: clickhouse-config - mountPath: /etc/clickhouse-server/config.d/ - - name: clickhouse-user-config - mountPath: /etc/clickhouse-server/users.d/ - - name: clickhouse-meta - mountPath: /var/lib/clickhouse/coordination/ - - name: clickhouse-data - mountPath: /var/lib/clickhouse/ - volumes: - - name: clickhouse-config - configMap: - name: clickhouse-config - items: - - key: keeper.xml - path: keeper.xml - - key: cluster.xml - path: cluster.xml - - key: macros.xml - path: macros.xml - - name: clickhouse-user-config - configMap: - name: clickhouse-user-config - items: - - key: user.xml - path: user.xml - volumeClaimTemplates: - - apiVersion: v1 - kind: PersistentVolumeClaim - metadata: - labels: - app.kubernetes.io/component: clickhouse - app.kubernetes.io/instance: clickhouse - app.kubernetes.io/name: clickhouse - name: clickhouse-meta - spec: - accessModes: - - ReadWriteOnce - resources: - requests: - storage: 1Gi - volumeMode: Filesystem - - apiVersion: v1 - kind: PersistentVolumeClaim - metadata: - labels: - app.kubernetes.io/component: clickhouse - app.kubernetes.io/instance: clickhouse - app.kubernetes.io/name: clickhouse - name: clickhouse-data - spec: - accessModes: - - ReadWriteOnce - resources: - requests: - storage: 5Gi - volumeMode: Filesystem diff --git a/playbook/roles/clickhouse/templates/clickhouse-cluster/clickhouse-user-config.yaml b/playbook/roles/clickhouse/templates/clickhouse-cluster/clickhouse-user-config.yaml deleted file mode 100644 index 88e41b3f..00000000 --- a/playbook/roles/clickhouse/templates/clickhouse-cluster/clickhouse-user-config.yaml +++ /dev/null @@ -1,19 +0,0 @@ -apiVersion: v1 -kind: ConfigMap -metadata: - name: clickhouse-user-config - namespace: clickhouse -data: - user.xml: | - - - - - 10000000000 - 4000 - 4096 - 4096 - random - - - diff --git a/playbook/roles/clickhouse/templates/qryn/qryn-deployment.yaml b/playbook/roles/clickhouse/templates/qryn/qryn-deployment.yaml deleted file mode 100644 index 9a551db4..00000000 --- a/playbook/roles/clickhouse/templates/qryn/qryn-deployment.yaml +++ /dev/null @@ -1,36 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - name: qryn - namespace: clickhouse - labels: - io.metrico.service: qryn -spec: - replicas: 2 - selector: - matchLabels: - io.metrico.service: qryn - strategy: {} - template: - metadata: - annotations: - qryn.cmd: qryn.dev - creationTimestamp: null - labels: - io.metrico.service: qryn - spec: - containers: - - env: - - name: CLICKHOUSE_AUTH - value: "default" - - name: CLICKHOUSE_PORT - value: "8123" - - name: CLICKHOUSE_SERVER - value: "{{ hostvars[groups[group][0]].ck_node_ip }}" - image: qxip/qryn - name: qryn - ports: - - containerPort: 3100 - resources: {} - restartPolicy: Always -status: {} diff --git a/playbook/roles/clickhouse/templates/qryn/qryn-ingress.yaml b/playbook/roles/clickhouse/templates/qryn/qryn-ingress.yaml deleted file mode 100644 index 423e71ac..00000000 --- a/playbook/roles/clickhouse/templates/qryn/qryn-ingress.yaml +++ /dev/null @@ -1,18 +0,0 @@ -apiVersion: networking.k8s.io/v1 -kind: Ingress -metadata: - name: data-gateway - namespace: clickhouse -spec: - ingressClassName: nginx - rules: - - host: data-gateway.onwalk.net - http: - paths: - - backend: - service: - name: qryn - port: - number: 3100 - path: / - pathType: Prefix diff --git a/playbook/roles/clickhouse/templates/qryn/qryn-service.yaml b/playbook/roles/clickhouse/templates/qryn/qryn-service.yaml deleted file mode 100644 index 3ac7c397..00000000 --- a/playbook/roles/clickhouse/templates/qryn/qryn-service.yaml +++ /dev/null @@ -1,19 +0,0 @@ -apiVersion: v1 -kind: Service -metadata: - creationTimestamp: null - labels: - io.metrico.service: qryn - name: qryn - namespace: clickhouse -spec: - ports: - - name: "3100" - port: 3100 - nodePort: 3100 - targetPort: 3100 - selector: - io.metrico.service: qryn - type: NodePort -status: - loadBalancer: {} diff --git a/playbook/roles/common/tasks/main.yml b/playbook/roles/common/tasks/main.yml deleted file mode 100755 index 7792ff20..00000000 --- a/playbook/roles/common/tasks/main.yml +++ /dev/null @@ -1,22 +0,0 @@ -- name: Set timezone - shell: "timedatectl set-timezone Asia/Shanghai" - -- name: Set hostname - shell: "hostname -F /etc/hostname" - -- name: update /etc/hostname - template: src=templates/hostname dest=/etc/hostname owner=root group=root mode=0644 unsafe_writes=yes - -- name: Update /etc/hosts - template: src=templates/hosts dest=/etc/hosts owner=root group=root mode=0644 force=yes unsafe_writes=yes - -#- name: enable ip_forward -# shell: 'echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf; echo "net.ipv4.conf.all.proxy_arp = 1" >> /etc/sysctl.conf ; sysctl -p /etc/sysctl.conf' - -#- name: Install packages -# shell: "apt update && apt install -y auditd" -# when: (ansible_facts['distribution'] == "Ubuntu") or (ansible_facts['distribution'] == "Debian") -# -#- name: Install packages -# shell: "yum makecache && yum install -y audit container-selinux" -# when: (ansible_facts['distribution'] != "Ubuntu") or (ansible_facts['distribution'] != "Debian") diff --git a/playbook/roles/common/templates/authorized_keys b/playbook/roles/common/templates/authorized_keys deleted file mode 100755 index f7bb4d56..00000000 --- a/playbook/roles/common/templates/authorized_keys +++ /dev/null @@ -1,3 +0,0 @@ -{% for item in ssh_keys %} -{{ item }} -{% endfor %} diff --git a/playbook/roles/common/templates/hostname b/playbook/roles/common/templates/hostname deleted file mode 100755 index 1fad51f6..00000000 --- a/playbook/roles/common/templates/hostname +++ /dev/null @@ -1 +0,0 @@ -{{ inventory_hostname }} diff --git a/playbook/roles/common/templates/hosts b/playbook/roles/common/templates/hosts deleted file mode 100755 index 374810a8..00000000 --- a/playbook/roles/common/templates/hosts +++ /dev/null @@ -1,12 +0,0 @@ -127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 -::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 - -{% for item in groups[group] %} -{{ hostvars[item]['ansible_host'] }} {{ item }} -{% endfor %} - -{% if extra_domain is defined %} -{% for ip, domain_name in extra_domain.items() %} -{{ ip }} {{ domain_name }} -{% endfor %} -{% endif %} diff --git a/playbook/roles/common/templates/logrotate-monitor-agent b/playbook/roles/common/templates/logrotate-monitor-agent deleted file mode 100644 index b4120cee..00000000 --- a/playbook/roles/common/templates/logrotate-monitor-agent +++ /dev/null @@ -1,8 +0,0 @@ -/var/log/prometheus-agent.log -/var/log/prometheus-transfer.log { - rotate 12 - monthly - compress - missingok - notifempty -} diff --git a/playbook/roles/datadog-agent/files/setup.sh b/playbook/roles/datadog-agent/files/setup.sh deleted file mode 100644 index 27e9f80c..00000000 --- a/playbook/roles/datadog-agent/files/setup.sh +++ /dev/null @@ -1,29 +0,0 @@ -#!/bin/bash - -export token=$1 - -helm repo add datadog https://helm.datadoghq.com -helm repo update -cat > datadog-values.yaml << EOF -#registry: artifact.onwalk.net/public/datadog -targetSystem: "linux" -clusterAgent: - enabled: true - admissionController: - enabled: true - mutateUnlabelled: true -datadog: - site: 'datadoghq.eu' - apiKeyExistingSecret: datadog-agent - apm: - portEnabled: true - networkMonitoring: - enabled: false - logs: - enabled: false - containerCollectAll: false -EOF -kubectl create namespace datadog || echo true -kubectl delete secret datadog-agent --namespace=datadog || echo true -kubectl create secret generic datadog-agent --from-literal api-key=$token --namespace=datadog -helm upgrade --install datadog-agent -n datadog --create-namespace -f datadog-values.yaml datadog/datadog diff --git a/playbook/roles/datadog-agent/meta/main.yml b/playbook/roles/datadog-agent/meta/main.yml deleted file mode 100644 index 9711b330..00000000 --- a/playbook/roles/datadog-agent/meta/main.yml +++ /dev/null @@ -1,2 +0,0 @@ -dependencies: - - role: common diff --git a/playbook/roles/datadog-agent/tasks/main.yml b/playbook/roles/datadog-agent/tasks/main.yml deleted file mode 100755 index 2e80f381..00000000 --- a/playbook/roles/datadog-agent/tasks/main.yml +++ /dev/null @@ -1,3 +0,0 @@ -- name: Setup Datadog Agent - script: files/setup.sh {{ datadog_token }} - when: inventory_hostname in groups[group] diff --git a/playbook/roles/deepflow-agent/tasks/main.yml b/playbook/roles/deepflow-agent/tasks/main.yml deleted file mode 100755 index 13178a6c..00000000 --- a/playbook/roles/deepflow-agent/tasks/main.yml +++ /dev/null @@ -1,20 +0,0 @@ -- 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 deleted file mode 100644 index fe040a8e..00000000 --- a/playbook/roles/deepflow-agent/templates/deepflow-agent.service +++ /dev/null @@ -1,14 +0,0 @@ -[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 deleted file mode 100644 index 34ad178c..00000000 --- a/playbook/roles/deepflow-agent/templates/deepflow-agent.yaml +++ /dev/null @@ -1,3 +0,0 @@ -controller-ips: - - {{ cluster_node }} -vtap-group-id-request: "{{ cluster_id }}" diff --git a/playbook/roles/dts-data-x/create_keys.sh b/playbook/roles/dts-data-x/create_keys.sh deleted file mode 100644 index 44c39a84..00000000 --- a/playbook/roles/dts-data-x/create_keys.sh +++ /dev/null @@ -1,40 +0,0 @@ -#!/bin/bash - -export name=$1 -export server_key=$2 -export server_ip=$3 -export client_ip=$4 - -sudo rm -rvf /etc/wireguard/keys/$name -sudo mkdir -pv /etc/wireguard/keys/$name -cd /etc/wireguard/keys/$name -wg genkey > ${name}.key -wg pubkey < ${name}.key > ${name}.pub - -KEY=`cat ${name}.key` -PUBKEY=`cat ${name}.pub` - -cat > ${name}-wg0.conf << EOF -[Interface] -PrivateKey = ${KEY} -ListenPort = 54321 -Address = ${client_ip}/24 -DNS = 10.1.0.2, 114.114.114.114 -MTU = 1420 -[Peer] -PublicKey = ${server_key} -AllowedIPs = 10.255.0.0/24, 10.1.0.0/16 -Endpoint = ${server_ip}:51820 -PersistentKeepalive = 25 -EOF - - -# brew install wireguard-tools && sudo wg-quick up wg0 -# apt install qrencode --assume-yes qrencode --read-from=client-wg0.conf --type=UTF8 - -cat >> /etc/wireguard/wg0.conf << EOF -[Peer] - # ${name} - PublicKey = ${PUBKEY} - AllowedIPs = ${client_ip}/32 -EOF diff --git a/playbook/roles/dts-data-x/tasks/main.yml b/playbook/roles/dts-data-x/tasks/main.yml deleted file mode 100755 index fcbc572d..00000000 --- a/playbook/roles/dts-data-x/tasks/main.yml +++ /dev/null @@ -1,15 +0,0 @@ -- 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: 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 Wireguard Service - shell: 'apt update && apt install wireguard-tools wireguard-dkms -y' - when: inventory_hostname in groups[group] - -- name: Remove fluent-bit service - shell: "systemctl disable fluent-bit && systemctl stop fluent-bit" - when: inventory_hostname in groups[group] diff --git a/playbook/roles/dts-data-x/templates/config.json b/playbook/roles/dts-data-x/templates/config.json deleted file mode 100644 index 494ffc26..00000000 --- a/playbook/roles/dts-data-x/templates/config.json +++ /dev/null @@ -1,84 +0,0 @@ -{ - "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 - } - } - } -} diff --git a/playbook/roles/dts-flink-cdc/create_keys.sh b/playbook/roles/dts-flink-cdc/create_keys.sh deleted file mode 100644 index 44c39a84..00000000 --- a/playbook/roles/dts-flink-cdc/create_keys.sh +++ /dev/null @@ -1,40 +0,0 @@ -#!/bin/bash - -export name=$1 -export server_key=$2 -export server_ip=$3 -export client_ip=$4 - -sudo rm -rvf /etc/wireguard/keys/$name -sudo mkdir -pv /etc/wireguard/keys/$name -cd /etc/wireguard/keys/$name -wg genkey > ${name}.key -wg pubkey < ${name}.key > ${name}.pub - -KEY=`cat ${name}.key` -PUBKEY=`cat ${name}.pub` - -cat > ${name}-wg0.conf << EOF -[Interface] -PrivateKey = ${KEY} -ListenPort = 54321 -Address = ${client_ip}/24 -DNS = 10.1.0.2, 114.114.114.114 -MTU = 1420 -[Peer] -PublicKey = ${server_key} -AllowedIPs = 10.255.0.0/24, 10.1.0.0/16 -Endpoint = ${server_ip}:51820 -PersistentKeepalive = 25 -EOF - - -# brew install wireguard-tools && sudo wg-quick up wg0 -# apt install qrencode --assume-yes qrencode --read-from=client-wg0.conf --type=UTF8 - -cat >> /etc/wireguard/wg0.conf << EOF -[Peer] - # ${name} - PublicKey = ${PUBKEY} - AllowedIPs = ${client_ip}/32 -EOF diff --git a/playbook/roles/dts-flink-cdc/tasks/main.yml b/playbook/roles/dts-flink-cdc/tasks/main.yml deleted file mode 100755 index fcbc572d..00000000 --- a/playbook/roles/dts-flink-cdc/tasks/main.yml +++ /dev/null @@ -1,15 +0,0 @@ -- 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: 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 Wireguard Service - shell: 'apt update && apt install wireguard-tools wireguard-dkms -y' - when: inventory_hostname in groups[group] - -- name: Remove fluent-bit service - shell: "systemctl disable fluent-bit && systemctl stop fluent-bit" - when: inventory_hostname in groups[group] diff --git a/playbook/roles/dts-flink-cdc/templates/config.json b/playbook/roles/dts-flink-cdc/templates/config.json deleted file mode 100644 index 494ffc26..00000000 --- a/playbook/roles/dts-flink-cdc/templates/config.json +++ /dev/null @@ -1,84 +0,0 @@ -{ - "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 - } - } - } -} diff --git a/playbook/roles/dts-flink-x/create_keys.sh b/playbook/roles/dts-flink-x/create_keys.sh deleted file mode 100644 index 44c39a84..00000000 --- a/playbook/roles/dts-flink-x/create_keys.sh +++ /dev/null @@ -1,40 +0,0 @@ -#!/bin/bash - -export name=$1 -export server_key=$2 -export server_ip=$3 -export client_ip=$4 - -sudo rm -rvf /etc/wireguard/keys/$name -sudo mkdir -pv /etc/wireguard/keys/$name -cd /etc/wireguard/keys/$name -wg genkey > ${name}.key -wg pubkey < ${name}.key > ${name}.pub - -KEY=`cat ${name}.key` -PUBKEY=`cat ${name}.pub` - -cat > ${name}-wg0.conf << EOF -[Interface] -PrivateKey = ${KEY} -ListenPort = 54321 -Address = ${client_ip}/24 -DNS = 10.1.0.2, 114.114.114.114 -MTU = 1420 -[Peer] -PublicKey = ${server_key} -AllowedIPs = 10.255.0.0/24, 10.1.0.0/16 -Endpoint = ${server_ip}:51820 -PersistentKeepalive = 25 -EOF - - -# brew install wireguard-tools && sudo wg-quick up wg0 -# apt install qrencode --assume-yes qrencode --read-from=client-wg0.conf --type=UTF8 - -cat >> /etc/wireguard/wg0.conf << EOF -[Peer] - # ${name} - PublicKey = ${PUBKEY} - AllowedIPs = ${client_ip}/32 -EOF diff --git a/playbook/roles/dts-flink-x/tasks/main.yml b/playbook/roles/dts-flink-x/tasks/main.yml deleted file mode 100755 index fcbc572d..00000000 --- a/playbook/roles/dts-flink-x/tasks/main.yml +++ /dev/null @@ -1,15 +0,0 @@ -- 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: 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 Wireguard Service - shell: 'apt update && apt install wireguard-tools wireguard-dkms -y' - when: inventory_hostname in groups[group] - -- name: Remove fluent-bit service - shell: "systemctl disable fluent-bit && systemctl stop fluent-bit" - when: inventory_hostname in groups[group] diff --git a/playbook/roles/dts-flink-x/templates/config.json b/playbook/roles/dts-flink-x/templates/config.json deleted file mode 100644 index 494ffc26..00000000 --- a/playbook/roles/dts-flink-x/templates/config.json +++ /dev/null @@ -1,84 +0,0 @@ -{ - "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 - } - } - } -} diff --git a/playbook/roles/fluent-bit-agent/tasks/main.yml b/playbook/roles/fluent-bit-agent/tasks/main.yml deleted file mode 100755 index 2c045bd6..00000000 --- a/playbook/roles/fluent-bit-agent/tasks/main.yml +++ /dev/null @@ -1,11 +0,0 @@ -- 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 deleted file mode 100644 index c1ce480d..00000000 --- a/playbook/roles/fluent-bit-agent/templates/fluent-bit.conf +++ /dev/null @@ -1,57 +0,0 @@ -[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/fluxcd/files/setup.sh b/playbook/roles/fluxcd/files/setup.sh deleted file mode 100644 index a48b8397..00000000 --- a/playbook/roles/fluxcd/files/setup.sh +++ /dev/null @@ -1,40 +0,0 @@ -#!/bin/bash - -export version=$1 -export namespace=$2 - -cat > flux-values.yaml << EOF -imagePullSecrets: - - name: artifact-registry-tls -cli: - image: flux-cli - tag: v0.31.3-customized -helmcontroller: - create: true - image: flux-helm-controller - tag: v0.22.1-customized -imageautomationcontroller: - image: flux-image-automation-controller - tag: v0.23.4-customized -imagereflectorcontroller: - create: true - image: flux-image-reflector-controller - tag: v0.19.2-customized -kustomizecontroller: - create: true - image: flux-kustomize-controller - tag: v0.26.2-customized -notificationcontroller: - create: true - image: flux-notification-controller - tag: v0.24.0-customized -sourcecontroller: - create: true - image: flux-source-controller - tag: v0.24.0-customized -EOF - -helm repo add fluxcd https://fluxcd-community.github.io/helm-charts -helm repo update -kubectl create namespace $namespace || echo true -helm upgrade --install fluxcd fluxcd/flux2 -n $namespace --version=$version diff --git a/playbook/roles/fluxcd/meta/main.yml b/playbook/roles/fluxcd/meta/main.yml deleted file mode 100644 index 9711b330..00000000 --- a/playbook/roles/fluxcd/meta/main.yml +++ /dev/null @@ -1,2 +0,0 @@ -dependencies: - - role: common diff --git a/playbook/roles/fluxcd/tasks/main.yml b/playbook/roles/fluxcd/tasks/main.yml deleted file mode 100755 index 15d66257..00000000 --- a/playbook/roles/fluxcd/tasks/main.yml +++ /dev/null @@ -1,3 +0,0 @@ -- name: Setup FluxCD Chart - script: files/setup.sh {{ version }} {{ namespace }} - when: inventory_hostname in groups[group] diff --git a/playbook/roles/gitlab/files/post-setup.sh b/playbook/roles/gitlab/files/post-setup.sh deleted file mode 100755 index c9942714..00000000 --- a/playbook/roles/gitlab/files/post-setup.sh +++ /dev/null @@ -1,30 +0,0 @@ -#!/bin/bash - -kubectl delete hpa --all -A - -# 获取所有部署 -DEPLOYMENTS=$(kubectl get deploy -n gitlab -o jsonpath='{.items[*].metadata.name}') - -# 遍历部署并设置副本数为1 -for DEPLOY in $DEPLOYMENTS -do - echo "Setting replicas=1 for deployment $DEPLOY" - kubectl scale deploy/$DEPLOY -n gitlab --replicas=1 -done - -# 遍历部署并获取 CPU 和内存配置 -for DEPLOY in $DEPLOYMENTS -do - echo "Deployment: $DEPLOY" - echo "====================" - kubectl get deploy $DEPLOY -n gitlab -o=jsonpath='{range .spec.template.spec.containers[*]}{.name}:{"\n"}{"\t"}cpu: {.resources.requests.cpu}{"\n"}{"\t"}mem: {.resources.requests.memory}{"\n"}{end}' - echo "====================" -done - -# 遍历部署并设置 CPU 和内存请求 -#for DEPLOY in $DEPLOYMENTS -#do -# echo "Setting cpu=0.1 and mem=100m for deployment $DEPLOY" -# kubectl patch deployment $DEPLOY -n gitlab -p '{"spec": {"template": {"spec": {"containers": [{"name": "'$DEPLOY'", "resources": {"requests": {"cpu": "0.1", "memory": "100m"}}}]}}}}' -# echo "====================" -#done diff --git a/playbook/roles/gitlab/files/pre-setup.sh b/playbook/roles/gitlab/files/pre-setup.sh deleted file mode 100755 index 34a5c712..00000000 --- a/playbook/roles/gitlab/files/pre-setup.sh +++ /dev/null @@ -1,9 +0,0 @@ -#!/bin/bash -set +x - -export namespace=$1 -export POSTGRES_PASSWORD=$(kubectl get secret --namespace $namespace postgresql -o jsonpath="{.data.postgres-password}" | base64 -d) - -kubectl run postgresql-client --rm --tty -i --restart='Never' --namespace $namespace --image docker.io/bitnami/postgresql:15.2.0-debian-11-r11 --env="PGPASSWORD=$POSTGRES_PASSWORD" --command -- psql --host postgresql -U postgres -d postgres -p 5432 -w -c "CREATE DATABASE gitlabhq_production OWNER postgres;" || echo true - -kubectl run postgresql-client --rm --tty -i --restart='Never' --namespace $namespace --image docker.io/bitnami/postgresql:15.2.0-debian-11-r11 --env="PGPASSWORD=$POSTGRES_PASSWORD" --command -- psql --host postgresql -U postgres -d gitlabhq_production -p 5432 -w -c "CREATE EXTENSION IF NOT EXISTS plpgsql; CREATE EXTENSION IF NOT EXISTS pg_trgm; CREATE EXTENSION IF NOT EXISTS btree_gist;" || echo true diff --git a/playbook/roles/gitlab/files/setup-with-oidc.sh b/playbook/roles/gitlab/files/setup-with-oidc.sh deleted file mode 100644 index b9948876..00000000 --- a/playbook/roles/gitlab/files/setup-with-oidc.sh +++ /dev/null @@ -1,106 +0,0 @@ -#!/bin/bash - -domain=$1 -namespace=$2 -object_bucket=$3 -gitlab_secret=$4 -gitlab_stmp_secret=$5 -smtp_port=$7 -smtp_domain=$8 -smtp_address=$9 -smtp_username=$10 -smtp_emailfrom=$11 -smtp_display_name=$12 -oidc_issuer_url=$13 -oidc_client_id=$14 -oidc_client_token=$15 - -cat > gitlab-values.yaml < gitlab-values.yaml < gitlab-values.yaml < harbor-config.yaml << EOF -exposureType: ingress -ingress: - core: - ingressClassName: "nginx" - hostname: artifact.${domain} - extraTls: - - hosts: - - artifact.${domain} - secretName: "$secret_name" -externalURL: https://artifact.${domain} - -postgresql: - enabled: false -redis: - enabled: false -notary: - enabled: false -trivy: - enabled: false - -externalDatabase: - host: postgresql.database.svc.cluster.local - user: postgres - port: 5432 - password: "$pg_db_password" - sslmode: disable - coreDatabase: harbor_core - clairDatabase: harbor_clair - clairUsername: "postgres" - clairPassword: "$pg_db_password" - notaryServerDatabase: harbor_notary_server - notaryServerUsername: "postgres" - notaryServerPassword: "$pg_db_password" - notarySignerDatabase: harbor_notary_signer - notarySignerUsername: "postgres" - notarySignerPassword: "$pg_db_password" -externalRedis: - host: redis-master.redis.svc.cluster.local - port: 6379 - password: "$redis_password" -persistence: - enabled: true - imageChartStorage: - type: $storage_type - oss: - accesskeyid: $ak - accesskeysecret: $sk - region: "oss-cn-wulanchabu" - bucket: "oss-artifacts" - endpoint: "oss-cn-wulanchabu.aliyuncs.com" - s3: - region: ap-east-1 - bucket: artifact-s3 - accesskey: $ak - secretkey: $sk -EOF - -export KUBECONFIG=/etc/rancher/k3s/k3s.yaml -helm repo add bitnami https://charts.bitnami.com/bitnami -helm repo update -helm upgrade --install artifact bitnami/harbor --version=16.7.0 -f harbor-config.yaml -n $namespace diff --git a/playbook/roles/harbor/files/setup-office-harbor.sh b/playbook/roles/harbor/files/setup-office-harbor.sh deleted file mode 100644 index 97b1a9a9..00000000 --- a/playbook/roles/harbor/files/setup-office-harbor.sh +++ /dev/null @@ -1,91 +0,0 @@ -#!/bin/bash - -ak=$1 -sk=$2 -domain=$3 -namespace=$4 -secret_name=$5 -redis_password=$6 -pg_db_password=$7 -storage_type=$8 - -cat > harbor-arm-config.yaml << EOF -portal: - image: - repository: ghcr.io/octohelm/harbor/harbor-portal - tag: v2.7.0@sha256:b3f4e0e990500362b554338579497ad89af5473e024564731563704ceab9305b -core: - image: - repository: ghcr.io/octohelm/harbor/harbor-core - tag: v2.7.0@sha256:dd7f3898f32caf8e03cee046596f03034f4297231458d4de39775dd58709b55a -jobservice: - image: - repository: ghcr.io/octohelm/harbor/harbor-jobservice - tag: v2.7.0@sha256:7abd6694f546172ffec4a87e389e8ba425fa6ee82479782693c120a89a291435 -registry: - registry: - image: - repository: ghcr.io/octohelm/harbor/registry-photon - tag: v2.7.0@sha256:d5f23b2bc4271b2eb1ec002eb0c0c51e708015944316e5bd17c61de73ea54415 - controller: - image: - repository: ghcr.io/svc-design/harbor-multi-arch-images/harbor-registryctl - tag: v2.7.0@sha256:ba2412c1a629ca1c2ca4584ba51eb05e964c7eef7b1f9f6ddb39d67512debaf5 -chartmuseum: - enabled: true - image: - repository: ghcr.io/octohelm/harbor/chartmuseum-photon - tag: v2.7.0@sha256:0815066d46474b9403b2d2e5f6f9e2ae44d067d8d2f8523b95ea3d3f20f3d058 -trivy: - enabled: false -notary: - enabled: false -expose: - type: ingress - tls: - enabled: true - certSource: secret - secret: - secretName: $secret_name - notarySecretName: $secret_name - ingress: - hosts: - core: artifact.${domain} - notary: artifact-notary.${domain} - className: "nginx" -externalURL: https://artifact.${domain} -database: - type: external - external: - host: "postgresql.database.svc.cluster.local" - port: "5432" - username: "postgres" - password: "$pg_db_password" - coreDatabase: "registry" - notaryServerDatabase: "notary_server" - notarySignerDatabase: "notary_signer" -redis: - type: external - external: - addr: "redis-master.redis.svc.cluster.local:6379" - password: "$redis_password" -persistence: - imageChartStorage: - type: $storage_type - oss: - accesskeyid: $ak - accesskeysecret: $sk - region: "oss-cn-wulanchabu" - bucket: "harbor-s3" - endpoint: "oss-cn-wulanchabu.aliyuncs.com" - s3: - region: ap-east-1 - bucket: artifact-s3 - accesskey: $ak - secretkey: $sk -EOF - -export KUBECONFIG=/etc/rancher/k3s/k3s.yaml -helm repo add harbor https://helm.goharbor.io -helm repo update -helm upgrade --install artifact harbor/harbor -f harbor-arm-config.yaml --version 1.11.1 -n $namespace diff --git a/playbook/roles/harbor/meta/main.yml b/playbook/roles/harbor/meta/main.yml deleted file mode 100644 index 6e0c32a9..00000000 --- a/playbook/roles/harbor/meta/main.yml +++ /dev/null @@ -1,5 +0,0 @@ -dependencies: - - role: redis - - role: postgresql - - role: cert-manager - - role: secret-manger diff --git a/playbook/roles/harbor/tasks/main.yml b/playbook/roles/harbor/tasks/main.yml deleted file mode 100755 index 4cbd893b..00000000 --- a/playbook/roles/harbor/tasks/main.yml +++ /dev/null @@ -1,38 +0,0 @@ -- name: get redis password - shell: 'kubectl get secret --namespace redis redis -o jsonpath="{.data.redis-password}" | base64 -d' - register: redis_command_raw - when: inventory_hostname in groups[group][0] - -- name: set fact join command for redis - set_fact: - redis_password : "{{ redis_command_raw.stdout }}" - -- name: get db password - shell: 'kubectl get secret --namespace database postgresql -o jsonpath="{.data.postgres-password}" | base64 -d' - register: db_command_raw - when: inventory_hostname in groups[group][0] - -- name: set fact join command for pg_db - set_fact: - pg_db_password : "{{ db_command_raw.stdout }}" - when: inventory_hostname in groups[group][0] - -#- name: Show Debug Info -# debug: var=command_raw verbosity=0 - -- name: Pre Setup harbor DB - script: files/pre-setup.sh {{ namespace }} - when: inventory_hostname in groups[group] - -- name: Setup harbor Server - script: files/setup-bitnami-harbor.sh {{ oss_ak }} {{ oss_sk }} {{ domain }} {{ namespace }} {{ item.secret_name }} {{ hostvars[groups[group][0]].redis_password }} {{ hostvars[groups[group][0]].pg_db_password }} {{ storage_type }} - loop: "{{ tls }}" - when: inventory_hostname in groups[group] - -- name: Sync harbor-oidc-config.json - template: src=templates/{{ item }} dest=/tmp/{{ item }} owner=root group=root mode=0644 force=yes unsafe_writes=yes - with_items: - - harbor-oidc-config.json - -- name: Setup harbor oidc config - script: files/post-setup.sh {{ admin_password }} diff --git a/playbook/roles/harbor/templates/harbor-oidc-config.json b/playbook/roles/harbor/templates/harbor-oidc-config.json deleted file mode 100644 index a42d602e..00000000 --- a/playbook/roles/harbor/templates/harbor-oidc-config.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "auth_mode": "oidc_auth", - "oidc_name": "Keycloak-sso", - "oidc_endpoint": "https://keycloak.onwalk.net/realms/cloud-sso", - "oidc_client_id": "harbor-oidc", - "oidc_client_secret": '{{ harbor_oidc_client_token }}', - "oidc_scope": "openid,profile,email", - "oidc_groups_claim": "groups", - "oidc_auto_onboard": true, - "oidc_user_claim": "preferred_username" -} diff --git a/playbook/roles/jenkins/files/pre-setup.sh b/playbook/roles/jenkins/files/pre-setup.sh deleted file mode 100644 index 1da41acd..00000000 --- a/playbook/roles/jenkins/files/pre-setup.sh +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/bash -export namespace=$1 - -export MYSQL_ROOT_PASSWORD=$(kubectl get secret --namespace $namespace mysql -o jsonpath="{.data.mysql-root-password}" | base64 -d) - -kubectl run mysql-client --rm --tty -i --restart='Never' --image docker.io/bitnami/mysql:8.0.32-debian-11-r14 --namespace $namespace --env MYSQL_ROOT_PASSWORD=$MYSQL_ROOT_PASSWORD --command -- bash -c "mysql -h mysql.database.svc.cluster.local -uroot -p$MYSQL_ROOT_PASSWORD -e 'create database IF NOT EXISTS jenkins;'" diff --git a/playbook/roles/jenkins/files/setup-with-jcasc.sh b/playbook/roles/jenkins/files/setup-with-jcasc.sh deleted file mode 100644 index 768ae615..00000000 --- a/playbook/roles/jenkins/files/setup-with-jcasc.sh +++ /dev/null @@ -1,74 +0,0 @@ -#!/bin/bash -set -x -export domain=$1 -export secret=$2 -export namespace=$3 -export mysql_db_password=$4 - -cat > values.yaml << EOF - -controller: - adminUser: "admin" - adminPassword: "jenkins" - jenkinsUrlProtocol: "https" - jenkinsHome: "/var/jenkins_home" - jenkinsUrl: https://jenkins.$domain - ingress: - enabled: true - annotations: - kubernetes.io/tls-acme: "false" - ingressClassName: nginx - hostName: jenkins.$domain - path: '/' - tls: - - secretName: $secret - hosts: - - jenkins.$domain - installLatestPlugins: true - installPlugins: - - git:5.1.0 - - database-mysql:1.4 - - database:191.vd5981b_97a_5fa_ - - locale:314.v22ce953dfe9e - - kubernetes:4029.v5712230ccb_f8 - - workflow-job:1308.v58d48a_763b_31 - - workflow-aggregator:596.v8c21c963d92d - - credentials-binding:636.v55f1275c7b_27 - - configuration-as-code:1670.v564dc8b_982d0 - JCasC: - enabled: true - defaultConfig: true - configScripts: - database: | - unclassified: - globalDatabaseConfiguration: - database: - mysql: - hostname: mysql.database.svc.cluster.local - port: '3306' - username: "root" - database: "jenkins" - password: $mysql_db_password - properties: "?useSSL=false" - validationQuery: "SELECT 1" -agent: - enabled: true - replicas: 3 - numExecutors: 1 - jenkinsUrl: https://jenkins.$domain - -persistence: - enabled: true - storageClass: "local-path" - size: "10Gi" -networkPolicy: - enabled: false -backup: - enabled: false -additionalConfig: {} -EOF - -helm repo add jenkins https://charts.jenkins.io -helm repo update -#helm upgrade --install jenkins jenkins/jenkins --version 4.1.1 -f values.yaml -helm upgrade --install jenkins jenkins/jenkins -n $namespace --create-namespace -f values.yaml diff --git a/playbook/roles/jenkins/files/setup.sh b/playbook/roles/jenkins/files/setup.sh deleted file mode 100644 index b7e33214..00000000 --- a/playbook/roles/jenkins/files/setup.sh +++ /dev/null @@ -1,60 +0,0 @@ -#!/bin/bash -set -x -export domain=$1 -export secret=$2 -export namespace=$3 -export mysql_db_password=$4 - -cat > values.yaml << EOF - -controller: - adminUser: "admin" - adminPassword: "jenkins" - jenkinsUrlProtocol: "https" - jenkinsHome: "/var/jenkins_home" - jenkinsUrl: https://jenkins.$domain - ingress: - enabled: true - annotations: - kubernetes.io/tls-acme: "false" - ingressClassName: nginx - hostName: jenkins.$domain - path: '/' - tls: - - secretName: $secret - hosts: - - jenkins.$domain - installLatestPlugins: true - installPlugins: - - git:5.2.0 - - database-mysql:1.4 - - gitlab-plugin:1.7.16 - - pipeline-stage-view:2.33 - - database:191.vd5981b_97a_5fa_ - - locale:314.v22ce953dfe9e - - kubernetes:4029.v5712230ccb_f8 - - workflow-job:1326.ve643e00e9220 - - workflow-aggregator:596.v8c21c963d92d - - credentials-binding:636.v55f1275c7b_27 - - configuration-as-code:1670.v564dc8b_982d0 -agent: - enabled: true - replicas: 3 - numExecutors: 1 - jenkinsUrl: https://jenkins.$domain - -persistence: - enabled: true - storageClass: "local-path" - size: "10Gi" -networkPolicy: - enabled: false -backup: - enabled: false -additionalConfig: {} -EOF - -helm repo add jenkins https://charts.jenkins.io -helm repo update -#helm upgrade --install jenkins jenkins/jenkins --version 4.1.1 -f values.yaml -helm upgrade --install jenkins jenkins/jenkins -n $namespace --create-namespace -f values.yaml diff --git a/playbook/roles/jenkins/howto.md b/playbook/roles/jenkins/howto.md deleted file mode 100644 index fe7f3ea6..00000000 --- a/playbook/roles/jenkins/howto.md +++ /dev/null @@ -1,18 +0,0 @@ - -# GitLab to trigger Jenkins - -GitLab和Jenkins的集成可以让你在GitLab中的代码更新后自动触发Jenkins的构建任务。以下是配置GitLab插件和Jenkins以实现GitLab触发Jenkins的步骤: - -在Jenkins中安装GitLab插件 -首先,你需要在Jenkins中安装GitLab插件。登录到Jenkins的管理界面,然后转到“Manage Jenkins” > “Manage Plugins” > “Available”,在搜索框中输入“GitLab”,找到并安装“GitLab Plugin”。 - -在Jenkins中配置GitLab连接 -安装完插件后,你需要配置GitLab的连接。转到“Manage Jenkins” > “Configure System”,滚动到“GitLab”部分,点击“Add GitLab Server” > “Server”,输入你的GitLab服务器URL,并生成并输入一个与你的GitLab账户相关联的API Token。 - -在Jenkins中创建一个新的任务 -创建一个新的任务,并在源代码管理部分选择“Git”,输入你的GitLab项目的URL。在构建触发器部分,选择“Build when a change is pushed to GitLab”。 - -在GitLab中配置Webhook -在你的GitLab项目中,转到“Settings” > “Integrations”,在URL中输入你的Jenkins服务器的URL,后面加上/gitlab-webhook/。例如,如果你的Jenkins服务器的URL是http://jenkins.example.com,那么你应该输入http://jenkins.example.com/gitlab-webhook/。选择你想要触发Jenkins任务的事件(例如,当代码被推送时),然后点击“Add Webhook”。 - -以上就是配置GitLab插件和Jenkins以实现GitLab触发Jenkins的步骤。在完成这些步骤后,每当你的GitLab项目有更新时,都会自动触发对应的Jenkins构建任务。 diff --git a/playbook/roles/jenkins/meta/main.yml b/playbook/roles/jenkins/meta/main.yml deleted file mode 100644 index 924395da..00000000 --- a/playbook/roles/jenkins/meta/main.yml +++ /dev/null @@ -1,4 +0,0 @@ -dependencies: - - role: mysql - - role: cert-manager - - role: secret-manger diff --git a/playbook/roles/jenkins/tasks/main.yml b/playbook/roles/jenkins/tasks/main.yml deleted file mode 100755 index 2bd1ab0a..00000000 --- a/playbook/roles/jenkins/tasks/main.yml +++ /dev/null @@ -1,18 +0,0 @@ -- name: get mysql db password - shell: 'kubectl get secret --namespace database mysql -o jsonpath="{.data.mysql-root-password}" | base64 -d' - register: mysql_db_password_raw - when: inventory_hostname in groups[group][0] - -- name: set fact join command - set_fact: - mysql_db_password : "{{ mysql_db_password_raw.stdout }}" - when: inventory_hostname in groups[group][0] - -- name: DB Pre Setup for Jenkins Server - script: files/pre-setup.sh {{ db_namespace }} - when: inventory_hostname in groups[group] - -- name: Setup Jenkins Cluster - script: files/setup.sh {{ domain }} {{ item.secret_name }} {{ namespace }} {{ mysql_db_password }} - when: inventory_hostname in groups[group] and ( tls is defined) - loop: "{{ tls }}" diff --git a/playbook/roles/k3s-addon/files/setup-dns-provider.sh b/playbook/roles/k3s-addon/files/setup-dns-provider.sh deleted file mode 100644 index af469aaf..00000000 --- a/playbook/roles/k3s-addon/files/setup-dns-provider.sh +++ /dev/null @@ -1,25 +0,0 @@ -#!/bin/bash - -ak=$1 -sk=$2 - -cat > external-dns-values.yaml << EOF -clusterDomain: admin.local -sources: - - service - - ingress -domainFilters: - - onwalk.net -policy: upsert-only -provider: alibabacloud -alibabacloud: - accessKeyId: $ak - accessKeySecret: $sk - regionId: rg-acfm2akhd255pgi - zoneType: public -EOF - -helm repo add bitnami https://charts.bitnami.com/bitnami || echo true -helm repo update -kubectl create namespace external-dns || echo true -helm upgrade --install external-dns -f external-dns-values.yaml bitnami/external-dns -n external-dns diff --git a/playbook/roles/k3s-addon/files/setup-egress.sh b/playbook/roles/k3s-addon/files/setup-egress.sh deleted file mode 100644 index 998b079f..00000000 --- a/playbook/roles/k3s-addon/files/setup-egress.sh +++ /dev/null @@ -1,24 +0,0 @@ -#!/bin/bash -ip=$1 -namespace=$2 - -cat > /tmp/egress.yaml << EOF -apiVersion: cilium.io/v2 -kind: CiliumEgressGatewayPolicy -metadata: - name: egress-nat-policy -spec: - selectors: - - podSelector: - matchLabels: - role: egress-gateway - io.kubernetes.pod.namespace: $namespace - destinationCIDRs: - - "0.0.0.0/0" - egressGateway: - nodeSelector: - matchLabels: - node.kubernetes.io/name: tky-connector.onwalk.net - egressIP: $ip -EOF -kubectl apply -f /tmp/egress.yaml diff --git a/playbook/roles/k3s-addon/files/setup-ingress.sh b/playbook/roles/k3s-addon/files/setup-ingress.sh deleted file mode 100644 index 4199ddd0..00000000 --- a/playbook/roles/k3s-addon/files/setup-ingress.sh +++ /dev/null @@ -1,147 +0,0 @@ -#!/bin/bash -ingress=$1 -ingress_ip=$2 - -if [[ $ingress == "default" ]]; then -export KUBECONFIG=/etc/rancher/k3s/k3s.yaml -helm repo add stable https://kubernetes.github.io/ingress-nginx -helm repo up - -cat > value.yaml < svc-patch.yaml < value.yaml < nginx-cm.yaml << EOF -apiVersion: v1 -kind: ConfigMap -metadata: - name: nginx-nginx-ingress - namespace: ingress -data: - use-ssl-certificate-for-ingress: "false" - external-status-address: $ingress_ip - proxy-connect-timeout: 10s - proxy-read-timeout: 10s - client-header-buffer-size: 64k - client-body-buffer-size: 64k - client-max-body-size: 1000m - proxy-buffers: 8 32k - proxy-body-size: 1024m - proxy-buffer-size: 32k - proxy-connect-timeout: 10s - proxy-read-timeout: 10s -EOF - -cat > nginx-svc-patch.yaml << EOF -spec: - ports: - - name: http - nodePort: 80 - port: 80 - protocol: TCP - targetPort: 80 - - name: https - nodePort: 443 - port: 443 - protocol: TCP - targetPort: 443 -EOF - -helm repo add nginx-stable https://helm.nginx.com/stable || echo true -helm repo up -kubectl create namespace ingress || echo true -helm upgrade --install nginx nginx-stable/nginx-ingress --version=0.15.0 --namespace ingress -f value.yaml -kubectl apply -f nginx-cm.yaml -kubectl patch svc nginx-nginx-ingress -n ingress --patch-file nginx-svc-patch.yaml - -elif [[ $ingress == "apisix" ]]; then - -helm repo add apisix https://charts.apiseven.com || echo true -helm repo update -kubectl create ns ingress || echo true -cat > values.yaml << EOF -ingress-controller: - enabled: true - config: - apisix: - serviceNamespace: ingress -etcd: - replicaCount: 1 -gateway: - enabled: true - type: NodePort - http: - enabled: true - nodePort: 80 - tls: - enabled: true - nodePort: 443 - externalIPs: - - $ingress_ip -discovery: - enabled: true -admin: - enabled: true - ingress: - className: apisix - enabled: true - hosts: - - host: apisix-admin.onwalk.net - paths: - - "/apisix" - tls: - - secretName: apisix-tls - hosts: - - apisix-admin.onwalk.net -EOF -helm upgrade --install apisix apisix/apisix --namespace ingress -f values.yaml -fi diff --git a/playbook/roles/k3s-addon/meta/main.yml b/playbook/roles/k3s-addon/meta/main.yml deleted file mode 100644 index 6fc3ce8b..00000000 --- a/playbook/roles/k3s-addon/meta/main.yml +++ /dev/null @@ -1,3 +0,0 @@ -dependencies: - - role: cert-manager - - role: secret-manger diff --git a/playbook/roles/k3s-addon/tasks/main.yml b/playbook/roles/k3s-addon/tasks/main.yml deleted file mode 100755 index 380fcc09..00000000 --- a/playbook/roles/k3s-addon/tasks/main.yml +++ /dev/null @@ -1,36 +0,0 @@ -- name: Sync kubernetes-discovery config - template: src=templates/kubernetes-discovery-serviceaccount.yaml dest=/tmp/ owner=root group=root mode=0644 - when: inventory_hostname in groups[group] and ( svc_discovery == 'enable' ) - -- name: Setup kubernetes-discovery for cluster - shell: 'kubectl apply -f /tmp/kubernetes-discovery-serviceaccount.yaml' - when: inventory_hostname in groups[group] and ( svc_discovery == 'enable' ) - -- name: Set K3S Ingress - script: files/setup-ingress.sh {{ ingress }} {{ ingress_ip }} - when: inventory_hostname in groups[group] and ( ingress == 'nginx' ) - -- name: Sync K3S Ingress Deploy yaml - template: src=templates/ingress-apisix-values.yaml dest=/tmp/ owner=root group=root mode=0644 - when: inventory_hostname in groups[group] and ( ingress == 'apisix' ) -- name: Setup K3S Ingress - shell: 'helm repo add apisix https://charts.apiseven.com || echo true; \ - helm repo update; \ - kubectl create ns ingress || echo true; \ - helm upgrade --install apisix apisix/apisix --namespace ingress -f /tmp/ingress-apisix-values.yaml' - when: inventory_hostname in groups[group] and ( ingress == 'apisix' ) - -- name: Sync Apisix Ingress Dashboard yaml - template: src=templates/ingress-apisix-dashboard.yaml dest=/tmp/ owner=root group=root mode=0644 - when: inventory_hostname in groups[group] and ( ingress == 'apisix' ) -- name: Setup Apisix Ingress Dashboard - shell: 'kubectl apply -f /tmp/ingress-apisix-dashboard.yaml' - when: inventory_hostname in groups[group] and ( ingress == 'apisix' ) - -- name: Setup DNS Provider - script: files/setup-dns-provider.sh {{ dns_ak }} {{ dns_sk }} - when: ( inventory_hostname in groups[group] ) and (external_dns == 'enable' ) -- name: Remove DNS Provider - shell: 'helm delete external-dns -n external-dns' - when: ( inventory_hostname in groups[group] ) and (external_dns == 'disable' ) - ignore_errors: yes diff --git a/playbook/roles/k3s-addon/templates/ingress-apisix-dashboard.yaml b/playbook/roles/k3s-addon/templates/ingress-apisix-dashboard.yaml deleted file mode 100644 index b43c0e04..00000000 --- a/playbook/roles/k3s-addon/templates/ingress-apisix-dashboard.yaml +++ /dev/null @@ -1,33 +0,0 @@ -apiVersion: apisix.apache.org/v2 -kind: ApisixRoute -metadata: - name: apisix-dashboard - namespace: ingress -spec: - http: - - name: root - match: - hosts: - - apisix-dashboard.onwalk.net - paths: - - '/*' - backends: - - serviceName: apisix-dashboard - servicePort: 80 - plugins: - - config: - http_to_https: true - enable: true - name: redirect ---- -apiVersion: apisix.apache.org/v2 -kind: ApisixTls -metadata: - name: apisix - namespace: ingress -spec: - hosts: - - apisix-dashboard.onwalk.net - secret: - name: apisix-tls - namespace: ingress diff --git a/playbook/roles/k3s-addon/templates/ingress-apisix-values.yaml b/playbook/roles/k3s-addon/templates/ingress-apisix-values.yaml deleted file mode 100644 index 24f386a8..00000000 --- a/playbook/roles/k3s-addon/templates/ingress-apisix-values.yaml +++ /dev/null @@ -1,24 +0,0 @@ -ingress-controller: - enabled: true - config: - apisix: - serviceNamespace: ingress -etcd: - replicaCount: 1 -discovery: - enabled: true -admin: - enabled: true -gateway: - enabled: true - type: NodePort - http: - enabled: true - nodePort: 80 - tls: - enabled: true - nodePort: 443 - externalIPs: - - {{ ingress_ip }} -dashboard: - enabled: true diff --git a/playbook/roles/k3s-addon/templates/kubernetes-discovery-config.yaml b/playbook/roles/k3s-addon/templates/kubernetes-discovery-config.yaml deleted file mode 100644 index d382fcb0..00000000 --- a/playbook/roles/k3s-addon/templates/kubernetes-discovery-config.yaml +++ /dev/null @@ -1,65 +0,0 @@ -apiVersion: apisix.apache.org/v2 -kind: ApisixUpstream -metadata: - name: bookinfo-upstream - namespace: bookinfo -spec: - discovery: - type: kubernetes - serviceName: apisix/bookinfo/productpage:9080 ---- -apiVersion: apisix.apache.org/v2 -kind: ApisixRoute -metadata: - name: bookinfo - namespace: bookinfo -spec: - http: - - name: root - match: - hosts: - - bookinfo.onwalk.net - paths: - - /* - upstreams: - - name: bookinfo-upstream - plugins: - - config: - http_to_https: true - enable: true - name: redirect ---- -apiVersion: apisix.apache.org/v2 -kind: ApisixTls -metadata: - name: bookinfo - namespace: bookinfo -spec: - hosts: - - bookinfo.onwalk.net - secret: - name: bookinfo-tls - namespace: bookinfo ---- -curl -k --header "Authorization: Bearer tokenxxxxx" https://10.170.0.8:6443/api ---- -kubectl get secret kubernetes-discovery-token -o jsonpath={.data.token} | base64 -d ---- -kubectl edit cm -n ingress apisix - discovery: - kubernetes: - - id: apisix - service: - schema: https - host: "10.170.0.6" - port: "6443" - client: - token: |- - #xxxxxxxxxxxxxxx - default_weight: 50 - namespace_selector: - match: - - bookinfo - - nginx - shared_size: 1m ---- diff --git a/playbook/roles/k3s-addon/templates/kubernetes-discovery-serviceaccount.yaml b/playbook/roles/k3s-addon/templates/kubernetes-discovery-serviceaccount.yaml deleted file mode 100644 index 734f0df8..00000000 --- a/playbook/roles/k3s-addon/templates/kubernetes-discovery-serviceaccount.yaml +++ /dev/null @@ -1,40 +0,0 @@ -kind: ServiceAccount -apiVersion: v1 -metadata: - name: kubernetes-discovery ---- -apiVersion: v1 -kind: Secret -metadata: - name: kubernetes-discovery-token - annotations: - kubernetes.io/service-account.name: "kubernetes-discovery" -type: kubernetes.io/service-account-token ---- -kind: ClusterRole -apiVersion: rbac.authorization.k8s.io/v1 -metadata: - name: kubernetes-discovery -rules: -- apiGroups: [""] - resources: ["endpoints" ] - verbs: ["get", "list", "watch" ] -- apiGroups: [""] - resources: [ "namespaces"] - verbs: ["get", "list", "watch"] -- apiGroups: [""] - resources: ["services", "endpoints"] - verbs: ["get", "list", "watch"] ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: kubernetes-discovery -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: kubernetes-discovery -subjects: -- kind: ServiceAccount - name: kubernetes-discovery - namespace: default diff --git a/playbook/roles/k3s-addon/templates/kubernetes-discovery.yaml b/playbook/roles/k3s-addon/templates/kubernetes-discovery.yaml deleted file mode 100644 index 3c5cca9f..00000000 --- a/playbook/roles/k3s-addon/templates/kubernetes-discovery.yaml +++ /dev/null @@ -1,47 +0,0 @@ -kind: ServiceAccount -apiVersion: v1 -metadata: - name: kubernetes-discovery - namespace: default ---- - -kind: ClusterRole -apiVersion: rbac.authorization.k8s.io/v1 -metadata: - name: kubernetes-discovery -rules: -- apiGroups: [ "" ] - resources: [ endpoints ] - verbs: [ get,list,watch ] ---- - -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: kubernetes-discovery -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: apisix-test -subjects: - - kind: ServiceAccount - name: kubernetes-discovery - namespace: default ---- -#discovery: -# kubernetes: -# - id: release # a custom name refer to the cluster, pattern ^[a-z0-9]{1,8} -# service: -# schema: https #default https -# host: "1.cluster.com" -# port: "6443" -# client: -# #token: |- -# # eyJhbGciOiJSUzI1NiIsImtpZCI6Ikx5ME1DNWdnbmhQNkZCNlZYMXBsT3pYU3BBS2swYzBPSkN3ZnBESGpkUEEif -# # 6Ikx5ME1DNWdnbmhQNkZCNlZYMXBsT3pYU3BBS2swYzBPSkN3ZnBESGpkUEEifeyJhbGciOiJSUzI1NiIsImtpZCI -# default_weight: 50 # weight assigned to each discovered endpoint. default 50, minimum 0 -# namespace_selector: -# equal: default -# label_selector: |- -# first="a",second="b" -# shared_size: 1m #default 1m diff --git a/playbook/roles/k3s-reset/files/reset-k3s.sh b/playbook/roles/k3s-reset/files/reset-k3s.sh deleted file mode 100644 index 719a657e..00000000 --- a/playbook/roles/k3s-reset/files/reset-k3s.sh +++ /dev/null @@ -1,32 +0,0 @@ -#!/bin/bash - -wget https://raw.githubusercontent.com/kubeovn/kube-ovn/release-1.10/dist/images/cleanup.sh -bash cleanup.sh - -rm -rf /var/run/openvswitch -rm -rf /var/run/ovn -rm -rf /etc/origin/openvswitch/ -rm -rf /etc/origin/ovn/ -rm -rf /etc/cni/net.d/00-kube-ovn.conflist -rm -rf /etc/cni/net.d/01-kube-ovn.conflist -rm -rf /var/log/openvswitch -rm -rf /var/log/ovn -rm -fr /var/log/kube-ovn - -/usr/local/bin/k3s-uninstall.sh -rm -rvf /opt/rancher/ /etc/rancher/ /var/lib/rancher/ ~/.kube - -rm -rvf /etc/cni/net.d/* - -# 移除cni命名空间 -ip netns show 2>/dev/null | grep cni- | xargs -r -t -n 1 ip netns delete -# 移除cnio网卡 -ip link show 2>/dev/null | grep 'master cni0' | while read ignore iface ignore; do - iface=${iface%%@*} - [ -z "$iface" ] || ip link delete $iface -done -ip link delete cni0 -ip link delete flannel.1 -rm -rf /var/lib/cni/ -# 清理iptables -iptables-save | grep -v KUBE- | grep -v CNI- | iptables-restore diff --git a/playbook/roles/k3s-reset/tasks/main.yml b/playbook/roles/k3s-reset/tasks/main.yml deleted file mode 100755 index f500dec1..00000000 --- a/playbook/roles/k3s-reset/tasks/main.yml +++ /dev/null @@ -1,4 +0,0 @@ -- name: Reset K3S Cluster - script: files/reset-k3s.sh - when: (inventory_hostname in groups[group] ) and ( cluster_reset == 'enanble' ) - diff --git a/playbook/roles/k3s/files/setup-cni-cilium.sh b/playbook/roles/k3s/files/setup-cni-cilium.sh deleted file mode 100644 index 34c9ac2f..00000000 --- a/playbook/roles/k3s/files/setup-cni-cilium.sh +++ /dev/null @@ -1,19 +0,0 @@ - -# 移除cni命名空间 -ip netns show 2>/dev/null | grep cni- | xargs -r -t -n 1 ip netns delete -# 移除cnio网卡 -ip link show 2>/dev/null | grep 'master cni0' | while read ignore iface ignore; do - iface=${iface%%@*} - [ -z "$iface" ] || ip link delete $iface -done -ip link delete cni0 -ip link delete flannel.1 -rm -rf /var/lib/cni/ -# 清理iptables -iptables-save | grep -v KUBE- | grep -v CNI- | iptables-restore - -helm repo add cilium https://helm.cilium.io/ -helm install cilium cilium/cilium --version 1.10.4 \ - --namespace kube-system\ - --set hubble.relay.enabled=true \ - --set hubble.ui.enabled=true diff --git a/playbook/roles/k3s/files/setup-cni-kubeovn.sh b/playbook/roles/k3s/files/setup-cni-kubeovn.sh deleted file mode 100644 index b1f8139a..00000000 --- a/playbook/roles/k3s/files/setup-cni-kubeovn.sh +++ /dev/null @@ -1,17 +0,0 @@ -#!/bin/bash -export NodeIP=$1 -node_name=`hostname` - -modprobe geneve -modprobe openvswitch -modprobe ip_tables -modprobe iptable_nat - -rm -rvf /etc/cni/net.d/* - -kubectl taint node $node_name node-role.kubernetes.io/control-plane:NoSchedule- -kubectl label node $node_name kubernetes.io/os=linux --overwrite -kubectl label node $node_name kube-ovn/role=master --overwrite -helm repo add kubeovn https://kubeovn.github.io/kube-ovn/ -helm repo up -helm upgrade --install kube-ovn kubeovn/kube-ovn --set MASTER_NODES=${NodeIP} -n kube-system diff --git a/playbook/roles/k3s/files/setup-k3s.sh b/playbook/roles/k3s/files/setup-k3s.sh deleted file mode 100644 index cbb67aa1..00000000 --- a/playbook/roles/k3s/files/setup-k3s.sh +++ /dev/null @@ -1,58 +0,0 @@ -#!/bin/bash -set -x - -export version=$1 -export cni=$2 -export pod_cidr=$3 -export svc_cidr=$4 - -disable_proxy="--disable-kube-proxy" -disable_cni="--flannel-backend=none --disable-network-policy" -default="--disable=traefik,servicelb --data-dir=/opt/rancher/k3s --kube-apiserver-arg service-node-port-range=0-50000" - -function setup_k3s() -{ - local extra_opts=$1 - mkdir -pv /opt/rancher/k3s - - ping -c 1 google.com > /dev/null 2>&1 - if [ $? -eq 0 ]; then - echo "当前主机在国际网络上" - curl -sfL https://get.k3s.io | INSTALL_K3S_VERSION=$version sh -s - $extra_opts - else - echo "当前主机在大陆网络上" - curl -sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh | INSTALL_K3S_VERSION=$version INSTALL_K3S_MIRROR=cn sh -s - $extra_opts - fi - mkdir -pv ~/.kube/ && cp /etc/rancher/k3s/k3s.yaml ~/.kube/config -} - -function setup_helm() -{ - ping -c 1 google.com > /dev/null 2>&1 - if [ $? -eq 0 ]; then - echo "当前主机在国际网络上" - curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash - else - echo "当前主机在大陆网络上" - case `uname -m` in - x86_64) ARCH=amd64; ;; - aarch64) ARCH=arm64; ;; - loongarch64) ARCH=loongarch64; ;; - *) echo "un-supported arch, exit ..."; exit 1; ;; - esac - 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 - fi -} - - -case $cni in - 'default') opts="$default" ;; - 'kubeovn') opts="$default $disable_cni" ;; - 'cilium') opts="$default $disable_cni $disable_proxy" ;; - *) echo "error args" ;; -esac - -setup_k3s "$opts" -setup_helm diff --git a/playbook/roles/k3s/meta/main.yml b/playbook/roles/k3s/meta/main.yml deleted file mode 100644 index 9711b330..00000000 --- a/playbook/roles/k3s/meta/main.yml +++ /dev/null @@ -1,2 +0,0 @@ -dependencies: - - role: common diff --git a/playbook/roles/k3s/tasks/main.yml b/playbook/roles/k3s/tasks/main.yml deleted file mode 100755 index c75dff1b..00000000 --- a/playbook/roles/k3s/tasks/main.yml +++ /dev/null @@ -1,11 +0,0 @@ -- name: Setup K3S Server - script: files/setup-k3s.sh {{ version }} {{ cni }} {{ pod_cidr }} {{ svc_cidr }} - when: inventory_hostname in groups[group] - -- name: Sync K3S CNI Config - template: src=templates/cni_install.sh dest=/tmp/ owner=root group=root mode=0644 - when: ( inventory_hostname in groups[group] ) and (cni == 'kubeovn' ) -- name: Setup K3S CNI - shell: 'bash /tmp/cni_install.sh' - when: ( inventory_hostname in groups[group] ) and (cni == 'kubeovn' ) - ignore_errors: yes diff --git a/playbook/roles/keycloak/files/setup-keycloak.sh b/playbook/roles/keycloak/files/setup-keycloak.sh deleted file mode 100644 index 606ab9ab..00000000 --- a/playbook/roles/keycloak/files/setup-keycloak.sh +++ /dev/null @@ -1,35 +0,0 @@ -#!/bin/bash - -export domain=$1 -export secret=$2 -export namespace=$3 -export keycloak_ui_password=$4 -export keycloak_db_password=$5 - -cat > keycloak-values.yaml << EOF -postgresql: - enabled: false -ingress: - enabled: true - ingressClassName: "nginx" - hostname: keycloak.${domain} - tls: true - extraTls: - - hosts: - - keycloak.${domain} - secretName: $secret -auth: - adminPassword: "$keycloak_ui_password" -externalDatabase: - host: "postgresql.database.svc.cluster.local" - port: 5432 - user: postgres - database: keycloak - 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 -kubectl create ns ${namespace} || echo true -helm upgrade --install keycloak bitnami/keycloak -n $namespace -f keycloak-values.yaml diff --git a/playbook/roles/keycloak/meta/main.yml b/playbook/roles/keycloak/meta/main.yml deleted file mode 100644 index 099ad76a..00000000 --- a/playbook/roles/keycloak/meta/main.yml +++ /dev/null @@ -1,4 +0,0 @@ -dependencies: - - role: postgresql - - role: cert-manager - - role: secret-manger diff --git a/playbook/roles/keycloak/tasks/main.yml b/playbook/roles/keycloak/tasks/main.yml deleted file mode 100755 index 753838af..00000000 --- a/playbook/roles/keycloak/tasks/main.yml +++ /dev/null @@ -1,26 +0,0 @@ -- name: get db password - shell: 'kubectl get secret --namespace database postgresql -o jsonpath="{.data.postgres-password}" | base64 -d' - register: command_raw - when: inventory_hostname in groups[group][0] - -- name: set fact join command - set_fact: - keycloak_db_password : "{{ command_raw.stdout }}" - when: inventory_hostname in groups[group][0] - -#- name: Show Debug Info -# debug: var=command_raw verbosity=0 - -- name: Setup Keycloak Server - script: files/setup-keycloak.sh {{ domain }} {{ item.secret_name }} {{ namespace }} {{ admin_password }} {{ hostvars[groups[group][0]].keycloak_db_password }} - loop: "{{ tls }}" - 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 deleted file mode 100644 index 0aa9fd23..00000000 --- a/playbook/roles/keycloak/templates/aws-gloabl-oidc-broker.yaml +++ /dev/null @@ -1,74 +0,0 @@ -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/files/post-setup.sh b/playbook/roles/mysql/files/post-setup.sh deleted file mode 100644 index a12840b1..00000000 --- a/playbook/roles/mysql/files/post-setup.sh +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/bash -export namespace=$1 - -export MYSQL_ROOT_PASSWORD=$(kubectl get secret --namespace $namespace mysql -o jsonpath="{.data.mysql-root-password}" | base64 -d) - -kubectl run mysql-client --rm --tty -i --restart='Never' --image docker.io/bitnami/mysql:8.0.32-debian-11-r14 --namespace $namespace --env MYSQL_ROOT_PASSWORD=$MYSQL_ROOT_PASSWORD --command -- bash -c "mysql -h mysql.database.svc.cluster.local -uroot -p$MYSQL_ROOT_PASSWORD -e 'create database IF NOT EXISTS grafana;'" diff --git a/playbook/roles/mysql/files/setup-mysql.sh b/playbook/roles/mysql/files/setup-mysql.sh deleted file mode 100644 index 563a99eb..00000000 --- a/playbook/roles/mysql/files/setup-mysql.sh +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/bash - -helm repo add bitnami https://charts.bitnami.com/bitnami || echo true -helm repo up -kubectl create ns database || echo true -helm upgrade --install mysql bitnami/mysql -n database diff --git a/playbook/roles/mysql/tasks/main.yml b/playbook/roles/mysql/tasks/main.yml deleted file mode 100755 index de83aaa3..00000000 --- a/playbook/roles/mysql/tasks/main.yml +++ /dev/null @@ -1,8 +0,0 @@ -- name: Setup MySQL Server - script: files/setup-mysql.sh - when: inventory_hostname in groups[group] - -- name: Post Setup MySQL Server - script: files/post-setup.sh {{ db_namespace }} - when: inventory_hostname in groups[group] - ignore_errors: yes diff --git a/playbook/roles/nginx-oss/meta/main.yml b/playbook/roles/nginx-oss/meta/main.yml deleted file mode 100644 index 6fc3ce8b..00000000 --- a/playbook/roles/nginx-oss/meta/main.yml +++ /dev/null @@ -1,3 +0,0 @@ -dependencies: - - role: cert-manager - - role: secret-manger diff --git a/playbook/roles/nginx-oss/tasks/main.yml b/playbook/roles/nginx-oss/tasks/main.yml deleted file mode 100755 index e84e0015..00000000 --- a/playbook/roles/nginx-oss/tasks/main.yml +++ /dev/null @@ -1,16 +0,0 @@ -- name: Prep NameSpace - shell: "kubectl create namespace nginx || echo true" - -- name: Sync deploy yaml - template: src=templates/{{ item }} dest=/tmp/{{ item }} owner=root group=root mode=0644 force=yes unsafe_writes=yes - with_items: - - mirrors-nginx.yaml - - mirrors-nginx-ingress.yaml - - mirrors-nginx-apisix.yaml - -- name: Setup Mirrors Server - shell: "kubectl apply -f /tmp/{{ item }}" - with_items: - - mirrors-nginx.yaml - - mirrors-nginx-ingress.yaml - when: inventory_hostname in groups[group] diff --git a/playbook/roles/nginx-oss/templates/.gitignore b/playbook/roles/nginx-oss/templates/.gitignore deleted file mode 100644 index a194b200..00000000 --- a/playbook/roles/nginx-oss/templates/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -/clickhouse-keeper-k8s.iml -/.idea/ diff --git a/playbook/roles/nginx-oss/templates/mirrors-nginx-apisix.yaml b/playbook/roles/nginx-oss/templates/mirrors-nginx-apisix.yaml deleted file mode 100644 index b0bb24f5..00000000 --- a/playbook/roles/nginx-oss/templates/mirrors-nginx-apisix.yaml +++ /dev/null @@ -1,33 +0,0 @@ -apiVersion: apisix.apache.org/v2 -kind: ApisixRoute -metadata: - name: mirrors - namespace: nginx -spec: - http: - - name: root - match: - hosts: - - mirrors.onwalk.net - paths: - - '/*' - backends: - - serviceName: mirrors-nginx - servicePort: 80 - plugins: - - config: - http_to_https: true - enable: true - name: redirect ---- -apiVersion: apisix.apache.org/v2 -kind: ApisixTls -metadata: - name: nginx-tls - namespace: nginx -spec: - hosts: - - mirrors.onwalk.net - secret: - name: nginx-tls - namespace: nginx diff --git a/playbook/roles/nginx-oss/templates/mirrors-nginx-ingress.yaml b/playbook/roles/nginx-oss/templates/mirrors-nginx-ingress.yaml deleted file mode 100644 index 97185e2f..00000000 --- a/playbook/roles/nginx-oss/templates/mirrors-nginx-ingress.yaml +++ /dev/null @@ -1,25 +0,0 @@ -apiVersion: networking.k8s.io/v1 -kind: Ingress -metadata: - labels: - app.kubernetes.io/instance: mirrors - app.kubernetes.io/name: nginx - name: mirrors-nginx - namespace: nginx -spec: - ingressClassName: nginx - rules: - - host: mirrors.onwalk.net - http: - paths: - - backend: - service: - name: mirrors-nginx - port: - number: 80 - path: / - pathType: ImplementationSpecific - tls: - - hosts: - - mirrors.onwalk.net - secretName: nginx-tls diff --git a/playbook/roles/nginx-oss/templates/mirrors-nginx.yaml b/playbook/roles/nginx-oss/templates/mirrors-nginx.yaml deleted file mode 100644 index 0156a58e..00000000 --- a/playbook/roles/nginx-oss/templates/mirrors-nginx.yaml +++ /dev/null @@ -1,110 +0,0 @@ -apiVersion: v1 -kind: Service -metadata: - annotations: - meta.helm.sh/release-name: mirrors - meta.helm.sh/release-namespace: nginx - labels: - app.kubernetes.io/instance: mirrors - app.kubernetes.io/managed-by: Helm - app.kubernetes.io/name: nginx - app.kubernetes.io/version: 1.16.0 - helm.sh/chart: nginx-0.1.0 - name: mirrors-nginx - namespace: nginx -spec: - internalTrafficPolicy: Cluster - ipFamilies: - - IPv4 - ipFamilyPolicy: SingleStack - ports: - - name: http - port: 80 - protocol: TCP - targetPort: http - selector: - app.kubernetes.io/instance: mirrors - app.kubernetes.io/name: nginx - sessionAffinity: None - type: ClusterIP ---- -apiVersion: apps/v1 -kind: Deployment -metadata: - labels: - app.kubernetes.io/instance: mirrors - app.kubernetes.io/name: nginx - name: mirrors-nginx - namespace: nginx -spec: - progressDeadlineSeconds: 600 - replicas: 1 - revisionHistoryLimit: 10 - selector: - matchLabels: - app.kubernetes.io/instance: mirrors - app.kubernetes.io/name: nginx - strategy: - rollingUpdate: - maxSurge: 25% - maxUnavailable: 25% - type: RollingUpdate - template: - metadata: - creationTimestamp: null - labels: - app.kubernetes.io/instance: mirrors - app.kubernetes.io/name: nginx - spec: - containers: - - image: nginx:latest - imagePullPolicy: Always - name: nginx - ports: - - containerPort: 80 - name: http - protocol: TCP - resources: {} - securityContext: {} - terminationMessagePath: /dev/termination-log - terminationMessagePolicy: File - volumeMounts: - - mountPath: /etc/nginx/ - name: nginx-config - dnsPolicy: ClusterFirst - restartPolicy: Always - schedulerName: default-scheduler - securityContext: {} - terminationGracePeriodSeconds: 30 - volumes: - - configMap: - defaultMode: 420 - name: nginx-config - name: nginx-config ---- -apiVersion: v1 -kind: ConfigMap -metadata: - name: nginx-config - namespace: nginx -data: - nginx.conf: | - user nginx; - worker_processes auto; - error_log /var/log/nginx/error.log notice; - pid /var/run/nginx.pid; - events { - worker_connections 1024; - } - http { - server { - listen 80; - server_name mirrors.onwalk.net; - autoindex on; - index index.html index.htm index.nginx-debian.html; - location / { - proxy_set_header Host nginx-s3.oss-cn-shanghai.aliyuncs.com; - proxy_pass http://nginx-s3.oss-cn-shanghai.aliyuncs.com; - } - } - } diff --git a/playbook/roles/node-exporter/tasks/main.yml b/playbook/roles/node-exporter/tasks/main.yml deleted file mode 100755 index 13898d74..00000000 --- a/playbook/roles/node-exporter/tasks/main.yml +++ /dev/null @@ -1,23 +0,0 @@ -- name: create user prometheus - shell: "useradd prometheus -s /sbin/nologin | echo true" - when: inventory_hostname in groups[group] - -- name: clean old file - shell: "rm -f /usr/bin/node_exporter" - when: inventory_hostname in groups[group] - -- name: download node_exporter binary - shell: "curl -Lo /usr/bin/node_exporter https://mirrors.onwalk.net/tools/linux-amd64/node_exporter && chmod 755 /usr/bin/node_exporter" - when: inventory_hostname in groups[group] - -- name: create node-exporter.service - template: src=templates/node-exporter.service dest=/etc/systemd/system/node-exporter.service owner=root group=root mode=0644 - when: inventory_hostname in groups[group] - -- name: reload node-exporter service - shell: 'systemctl daemon-reload' - when: inventory_hostname in groups[group] - -- name: init node-exporter service - shell: 'systemctl restart node-exporter.service' - when: inventory_hostname in groups[group] diff --git a/playbook/roles/node-exporter/templates/node-exporter.service b/playbook/roles/node-exporter/templates/node-exporter.service deleted file mode 100755 index f05a15ba..00000000 --- a/playbook/roles/node-exporter/templates/node-exporter.service +++ /dev/null @@ -1,14 +0,0 @@ -[Unit] -Description=Prometheus Node Exporter -After=network.target - -[Service] -Type=simple -User=prometheus -ExecStart=/usr/bin/node_exporter -Restart=on-failure -RestartSec=30 -StartLimitInterval=0 - -[Install] -WantedBy=multi-user.target diff --git a/playbook/roles/observability-agent/files/setup.sh b/playbook/roles/observability-agent/files/setup.sh deleted file mode 100644 index 04e1b744..00000000 --- a/playbook/roles/observability-agent/files/setup.sh +++ /dev/null @@ -1,48 +0,0 @@ -#!/bin/bash -set -x -export observableserver=$1 -export port=$2 -export deepflowserverip=$3 -export deepflowserverid=$4 - -cat > values.yaml << EOF -kube-state-metrics: - enabled: true -deepflow-agent: - enabled: true - deepflowServerNodeIPS: - - $deepflowserverip - deepflowK8sClusterID: $deepflowserverid -prometheus: - enabled: true - server: - extraFlags: - - enable-feature=expand-external-labels - - web.enable-lifecycle - remoteWrite: - - name: remote_prometheus - url: 'https://${observableserver}/api/v1/write' - alertmanager: - enabled: false - rometheus-pushgateway: - enabled: false -fluent-bit: - enabled: true - logLevel: debug - config: - outputs: | - [OUTPUT] - Name loki - Match kube.* - Host $observableserver - port $port - tls on - tls.verify on -EOF - -node_name=`kubectl get nodes | awk 'NR>1 {print $1}'` -kubectl create namespace monitoring || echo true -kubectl label nodes $node prometheus=true --overwrite || echo true -helm repo add stable https://artifact.onwalk.net/chartrepo/public/ || echo true -helm repo update -helm upgrade --install observableagent stable/observabilityagent -n monitoring -f values.yaml diff --git a/playbook/roles/observability-agent/meta/main.yml b/playbook/roles/observability-agent/meta/main.yml deleted file mode 100644 index 9711b330..00000000 --- a/playbook/roles/observability-agent/meta/main.yml +++ /dev/null @@ -1,2 +0,0 @@ -dependencies: - - role: common diff --git a/playbook/roles/observability-agent/tasks/main.yml b/playbook/roles/observability-agent/tasks/main.yml deleted file mode 100755 index 232bac9e..00000000 --- a/playbook/roles/observability-agent/tasks/main.yml +++ /dev/null @@ -1,3 +0,0 @@ -- name: Setup Observability Agent - script: files/setup.sh {{ observableserver }} {{ port }} {{ deepflowserverip }} {{ deepflowserverid }} - when: inventory_hostname in groups[group] diff --git a/playbook/roles/observability-server/files/setup-observable-server.sh b/playbook/roles/observability-server/files/setup-observable-server.sh deleted file mode 100644 index 6e057092..00000000 --- a/playbook/roles/observability-server/files/setup-observable-server.sh +++ /dev/null @@ -1,122 +0,0 @@ -#!/bin/bash -set -x -export domain=$1 -export secret=$2 -export namespace=$3 -export mysql_db_password=$4 -export ck_node_ip1=$5 -export ck_node_ip2=$6 -export ck_node_ip3=$7 - -node_name=`kubectl get nodes | awk '{print $1}' | tail -n 1` -kubectl label nodes $node_name app=prometheus --overwrite - -cat > values.yaml << EOF -deepflow: - enabled: true - clickhouse: - enabled: true - mysql: - enabled: false - grafana: - enabled: true - ingress: - enabled: true - ingressClassName: nginx - hosts: - - grafana.${domain} - tls: - - secretName: ${secret} - hosts: - - grafana.${domain} - global: - #externalClickHouse: - # enabled: true - # type: ep - # clusterName: default - # storagePolicy: default - # username: default - # password: '' - # hosts: - # - ip: $ck_node_ip1 - # port: 9000 - # - ip: $ck_node_ip2 - # port: 9000 - # - ip: $ck_node_ip3 - # port: 9000 - externalMySQL: - enabled: true - ip: mysql.database.svc.cluster.local - port: 3306 - username: root - password: $mysql_db_password -prometheus: - enabled: true - alertmanager: - enabled: false - prometheus-pushgateway: - enabled: false - kube-state-metrics: - enabled: true - server: - extraArgs: - enable-feature: remote-write-receiver - ingress: - enabled: true - ingressClassName: nginx - hosts: - - prometheus.${domain} - tls: - - secretName: ${secret} - hosts: - - prometheus.${domain} - alertmanagers: - - static_configs: - - targets: - - alertmanager.${domain} - serverFiles: - prometheus.yml: - rule_files: - - /etc/config/recording_rules.yml - - /etc/config/alerting_rules.yml -alertmanager: - configmapReload: - enabled: true - ingress: - enabled: true - className: "nginx" - hosts: - - host: alertmanager.$domain - paths: - - path: / - pathType: ImplementationSpecific - tls: - - secretName: ${secret} - hosts: - - alertmanager.$domain - config: - global: - resolve_timeout: 5m - smtp_smarthost: 'smtp.qq.com:465' - smtp_from: '11111111@qq.com' - smtp_auth_username: '11111111@qq.com' - smtp_auth_password: '123456' - smtp_require_tls: false - templates: - - '/etc/alertmanager/*.tmpl' - receivers: - - name: 'default-receiver' - email_configs: - - to: '{{ template "email.to" . }}' - html: '{{ template "email.to.html" . }}' - route: - group_wait: 10s - group_interval: 5m - receiver: default-receiver - repeat_interval: 1h -EOF - -helm repo add stable https://artifact.onwalk.net/chartrepo/public/ || echo true -helm repo update -kubectl delete deploy observability-server-prometheus-server -n ${namespace} || echo true -helm upgrade --install observability-server stable/observableserver -n ${namespace} -f values.yaml diff --git a/playbook/roles/observability-server/meta/main.yml b/playbook/roles/observability-server/meta/main.yml deleted file mode 100644 index d2b36e36..00000000 --- a/playbook/roles/observability-server/meta/main.yml +++ /dev/null @@ -1,5 +0,0 @@ -dependencies: - - role: mysql - - role: clickhouse - - role: cert-manager - - role: secret-manger diff --git a/playbook/roles/observability-server/tasks/main.yml b/playbook/roles/observability-server/tasks/main.yml deleted file mode 100755 index 02e6cb47..00000000 --- a/playbook/roles/observability-server/tasks/main.yml +++ /dev/null @@ -1,34 +0,0 @@ -- name: get mysql db password - shell: 'kubectl get secret --namespace database mysql -o jsonpath="{.data.mysql-root-password}" | base64 -d' - register: mysql_db_password_raw - when: inventory_hostname in groups[group][0] - -- name: set fact join command - set_fact: - mysql_db_password : "{{ mysql_db_password_raw.stdout }}" - when: inventory_hostname in groups[group][0] - -- 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: set fact join command for ck_node_ip2 - set_fact: - ck_node_ip2 : "{{ ck_node_ips_raw.stdout_lines[1] }}" - when: inventory_hostname in groups[group][0] - -- name: set fact join command for ck_node_ip3 - set_fact: - ck_node_ip3 : "{{ ck_node_ips_raw.stdout_lines[2] }}" - when: inventory_hostname in groups[group][0] - -- name: Setup OpenLdap Server - script: files/setup-observable-server.sh {{ domain }} {{ item.secret_name }} {{ namespace }} {{ mysql_db_password }} {{ ck_node_ip1 }} {{ ck_node_ip2 }} {{ ck_node_ip3 }} - when: inventory_hostname in groups[group] and ( tls is defined) - loop: "{{ tls }}" diff --git a/playbook/roles/openldap/files/setup-openldap.sh b/playbook/roles/openldap/files/setup-openldap.sh deleted file mode 100644 index a477995f..00000000 --- a/playbook/roles/openldap/files/setup-openldap.sh +++ /dev/null @@ -1,44 +0,0 @@ -#!/bin/bash - -export domain=$1 -export secret=$2 -export namespace=$3 -export password=$4 - -cat > openldap-vaules.yaml << EOF -global: - ldapDomain: $domain - adminPassword: $password - configPassword: $password -service: - type: NodePort - ldapPortNodePort: 389 - sslLdapPortNodePort: 636 -phpldapadmin: - enabled: true - ingress: - enabled: true - ingressClassName: nginx - hosts: - - openldap-admin.${domain} - tls: - - secretName: ${secret} - hosts: - - openldap-admin.${domain} -ltb-passwd: - enabled: true - ingress: - enabled: true - ingressClassName: nginx - hosts: - - openldap-ltb.${domain} - tls: - - secretName: ${secret} - hosts: - - openldap-ltb.${domain} -EOF - -helm repo add stable https://artifact.onwalk.net/chartrepo/public/ -helm repo up -kubectl create ns ${namespace} || echo true -helm upgrade --install openldap stable/openldap-stack-ha -n ${namespace} --create-namespace -f openldap-vaules.yaml diff --git a/playbook/roles/openldap/meta/main.yml b/playbook/roles/openldap/meta/main.yml deleted file mode 100644 index 6fc3ce8b..00000000 --- a/playbook/roles/openldap/meta/main.yml +++ /dev/null @@ -1,3 +0,0 @@ -dependencies: - - role: cert-manager - - role: secret-manger diff --git a/playbook/roles/openldap/tasks/main.yml b/playbook/roles/openldap/tasks/main.yml deleted file mode 100755 index 71a4b442..00000000 --- a/playbook/roles/openldap/tasks/main.yml +++ /dev/null @@ -1,12 +0,0 @@ -- name: Setup OpenLdap Server - script: files/setup-openldap.sh {{ domain }} {{ secret }} {{ namespace }} {{ admin_password }} - when: inventory_hostname in groups[group] - -- name: sync ldap ingress config - template: src=templates/{{ item }} dest=/tmp/{{ item }} owner=root group=root mode=0644 force=yes unsafe_writes=yes - with_items: - - ingress.yaml - -- name: Setup ldap ingress - shell: "cd /tmp/ && kubectl apply -f ingress.yaml" - when: inventory_hostname in groups[group] diff --git a/playbook/roles/openldap/templates/.gitignore b/playbook/roles/openldap/templates/.gitignore deleted file mode 100644 index a194b200..00000000 --- a/playbook/roles/openldap/templates/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -/clickhouse-keeper-k8s.iml -/.idea/ diff --git a/playbook/roles/openldap/templates/ingress.yaml b/playbook/roles/openldap/templates/ingress.yaml deleted file mode 100644 index 7afd5f1f..00000000 --- a/playbook/roles/openldap/templates/ingress.yaml +++ /dev/null @@ -1,45 +0,0 @@ -apiVersion: networking.k8s.io/v1 -kind: Ingress -metadata: - name: openldap - namespace: itsm -spec: - ingressClassName: nginx - rules: - - host: ldap.onwalk.net - http: - paths: - - backend: - service: - name: openldap-headless - port: - name: http - path: / - pathType: ImplementationSpecific ---- -apiVersion: k8s.nginx.org/v1alpha1 -kind: GlobalConfiguration -metadata: - name: nginx-configuration - namespace: ingress -spec: - listeners: - - name: ldap-tcp - port: 389 - protocol: TCP ---- -apiVersion: k8s.nginx.org/v1alpha1 -kind: TransportServer -metadata: - name: ldap-tcp - namespace: itsm -spec: - listener: - name: ldap-tcp - protocol: TCP - upstreams: - - name: ldap-app - service: openldap-headless - port: 389 - action: - pass: ldap-app diff --git a/playbook/roles/postgresql/files/post-setup.sh b/playbook/roles/postgresql/files/post-setup.sh deleted file mode 100644 index 9e984b8d..00000000 --- a/playbook/roles/postgresql/files/post-setup.sh +++ /dev/null @@ -1,16 +0,0 @@ -#!/bin/bash -export namespace=$1 -export POSTGRES_PASSWORD=$(kubectl get secret --namespace $namespace postgresql -o jsonpath="{.data.postgres-password}" | base64 -d) - -kubectl run postgresql-client --rm --tty -i --restart='Never' --namespace $namespace --image docker.io/bitnami/postgresql:15.2.0-debian-11-r11 --env="PGPASSWORD=$POSTGRES_PASSWORD" --command -- psql --host postgresql -U postgres -d postgres -p 5432 -w -c "CREATE EXTENSION IF NOT EXISTS pg_trgm; CREATE EXTENSION IF NOT EXISTS btree_gist; CREATE DATABASE gitlabhq_production OWNER gitlab;" || echo true - -#create user gitlab with encrypted password 'xxxxxx' -#grant all privileges on database gitlabhq_production to gitlab; - -kubectl run postgresql-client --rm --tty -i --restart='Never' --namespace $namespace --image docker.io/bitnami/postgresql:15.2.0-debian-11-r11 --env="PGPASSWORD=$POSTGRES_PASSWORD" --command -- psql --host postgresql -U postgres -d postgres -p 5432 -w -c "CREATE DATABASE keycloak;" || echo true - -kubectl run postgresql-client --rm --tty -i --restart='Never' --namespace $namespace --image docker.io/bitnami/postgresql:15.2.0-debian-11-r11 --env="PGPASSWORD=$POSTGRES_PASSWORD" --command -- psql --host postgresql -U postgres -d postgres -p 5432 -w -c "CREATE DATABASE registry;" || echo true - -kubectl run postgresql-client --rm --tty -i --restart='Never' --namespace $namespace --image docker.io/bitnami/postgresql:15.2.0-debian-11-r11 --env="PGPASSWORD=$POSTGRES_PASSWORD" --command -- psql --host postgresql -U postgres -d postgres -p 5432 -w -c "CREATE DATABASE notary_server;" || echo true - -kubectl run postgresql-client --rm --tty -i --restart='Never' --namespace $namespace --image docker.io/bitnami/postgresql:15.2.0-debian-11-r11 --env="PGPASSWORD=$POSTGRES_PASSWORD" --command -- psql --host postgresql -U postgres -d postgres -p 5432 -w -c "CREATE DATABASE notary_signer;" || echo true diff --git a/playbook/roles/postgresql/files/setup-postgresql.sh b/playbook/roles/postgresql/files/setup-postgresql.sh deleted file mode 100644 index 1861e97e..00000000 --- a/playbook/roles/postgresql/files/setup-postgresql.sh +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/bash - -export namespace=$1 - -helm repo add bitnami https://charts.bitnami.com/bitnami || echo true -helm repo up -kubectl create ns $namespace || echo true -helm upgrade --install postgresql bitnami/postgresql --version 12.2.3 -n $namespace diff --git a/playbook/roles/postgresql/tasks/main.yml b/playbook/roles/postgresql/tasks/main.yml deleted file mode 100755 index ff253303..00000000 --- a/playbook/roles/postgresql/tasks/main.yml +++ /dev/null @@ -1,3 +0,0 @@ -- name: Install PostgreSQL Server - script: files/setup-postgresql.sh {{ db_namespace }} - when: inventory_hostname in groups[group] diff --git a/playbook/roles/prometheus-agent/meta/main.yml b/playbook/roles/prometheus-agent/meta/main.yml deleted file mode 100644 index 38124f94..00000000 --- a/playbook/roles/prometheus-agent/meta/main.yml +++ /dev/null @@ -1,3 +0,0 @@ -dependencies: - - role: common - - role: node-exporter diff --git a/playbook/roles/prometheus-agent/tasks/main.yml b/playbook/roles/prometheus-agent/tasks/main.yml deleted file mode 100755 index 8ac50507..00000000 --- a/playbook/roles/prometheus-agent/tasks/main.yml +++ /dev/null @@ -1,28 +0,0 @@ -- name: Pre setting - shell: "rm -f /usr/bin/prometheus; mkdir -pv /etc/prometheus/; mkdir -pv /opt/prometheus/data-agent/ && chown prometheus:prometheus /opt/prometheus/data-agent/" - when: inventory_hostname in groups[group] - -- name: Download prometheus binary - shell: 'curl -Lo /usr/bin/prometheus https://mirrors.onwalk.net/tools/linux-amd64/prometheus && chmod 755 /usr/bin/prometheus' - when: inventory_hostname in groups[group] - -- name: Create prometheus-agent service - template: src=templates/prometheus-agent.service dest=/etc/systemd/system/prometheus-agent.service owner=root group=root mode=0644 - when: inventory_hostname in groups[group] - -- name: Create prometheus-agent config - template: src=templates/prometheus.yml dest=/etc/prometheus/prometheus.yml owner=root group=root mode=0644 - when: inventory_hostname in groups[group] - -- name: Create prometheus-agent start script - template: src=templates/start-prometheus-agent-service.sh dest=/usr/bin/start-prometheus-agent-service.sh owner=root group=root mode=0755 - when: inventory_hostname in groups[group] - -- name: Create prometheus-agent stop script - template: src=templates/stop-prometheus-agent-service.sh dest=/usr/bin/stop-prometheus-agent-service.sh owner=root group=root mode=0755 - when: inventory_hostname in groups[group] - -- name: Init prometheus-agent service - shell: "systemctl enable prometheus-agent && systemctl daemon-reload && systemctl restart prometheus-agent" - when: inventory_hostname in groups[group] - diff --git a/playbook/roles/prometheus-agent/templates/prometheus-agent.service b/playbook/roles/prometheus-agent/templates/prometheus-agent.service deleted file mode 100644 index 7335d895..00000000 --- a/playbook/roles/prometheus-agent/templates/prometheus-agent.service +++ /dev/null @@ -1,16 +0,0 @@ -[Unit] -Description=Prometheus -Documentation=https://prometheus.io/ -After=network.target - -[Service] -Type=simple -User=prometheus -ExecStart=/usr/bin/start-prometheus-agent-service.sh -ExecStop=/usr/bin/stop-prometheus-agent-service.sh -Restart=on-failure -RestartSec=30 -StartLimitInterval=0 - -[Install] -WantedBy=multi-user.target diff --git a/playbook/roles/prometheus-agent/templates/prometheus.yml b/playbook/roles/prometheus-agent/templates/prometheus.yml deleted file mode 100644 index 7558ee40..00000000 --- a/playbook/roles/prometheus-agent/templates/prometheus.yml +++ /dev/null @@ -1,10 +0,0 @@ -global: - scrape_interval: 15s - external_labels: - {{ label }} -scrape_configs: - - job_name: 'node_exporter' - static_configs: - - targets: ['{{ ansible_default_ipv4.address }}:9100'] -remote_write: - - url: '{{ remote_write }}' diff --git a/playbook/roles/prometheus-agent/templates/start-prometheus-agent-service.sh b/playbook/roles/prometheus-agent/templates/start-prometheus-agent-service.sh deleted file mode 100755 index 08fae2a4..00000000 --- a/playbook/roles/prometheus-agent/templates/start-prometheus-agent-service.sh +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/sh -/usr/bin/prometheus --config.file=/etc/prometheus/prometheus.yml --web.listen-address="0.0.0.0:9091" --web.enable-lifecycle --enable-feature=agent --storage.agent.path="/opt/prometheus/data-agent/" diff --git a/playbook/roles/prometheus-agent/templates/stop-prometheus-agent-service.sh b/playbook/roles/prometheus-agent/templates/stop-prometheus-agent-service.sh deleted file mode 100755 index bb2b3914..00000000 --- a/playbook/roles/prometheus-agent/templates/stop-prometheus-agent-service.sh +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/sh -pkill -9 prometheus diff --git a/playbook/roles/prometheus-transfer/meta/main.yml b/playbook/roles/prometheus-transfer/meta/main.yml deleted file mode 100644 index cfa117fc..00000000 --- a/playbook/roles/prometheus-transfer/meta/main.yml +++ /dev/null @@ -1,2 +0,0 @@ -dependencies: - - role: node-exporter diff --git a/playbook/roles/prometheus-transfer/tasks/main.yml b/playbook/roles/prometheus-transfer/tasks/main.yml deleted file mode 100755 index dd139d32..00000000 --- a/playbook/roles/prometheus-transfer/tasks/main.yml +++ /dev/null @@ -1,21 +0,0 @@ -- 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 deleted file mode 100644 index 99b2750a..00000000 --- a/playbook/roles/prometheus-transfer/templates/prometheus-transfer.service +++ /dev/null @@ -1,16 +0,0 @@ -[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 deleted file mode 100644 index f3b536bc..00000000 --- a/playbook/roles/prometheus-transfer/templates/prometheus-transfer.yml +++ /dev/null @@ -1,9 +0,0 @@ -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 deleted file mode 100755 index f9c01a30..00000000 --- a/playbook/roles/prometheus-transfer/templates/start-prometheus-transfer-service.sh +++ /dev/null @@ -1,2 +0,0 @@ -#!/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 deleted file mode 100755 index bb2b3914..00000000 --- a/playbook/roles/prometheus-transfer/templates/stop-prometheus-transfer-service.sh +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/sh -pkill -9 prometheus diff --git a/playbook/roles/promtail-agent/meta/main.yml b/playbook/roles/promtail-agent/meta/main.yml deleted file mode 100644 index 9711b330..00000000 --- a/playbook/roles/promtail-agent/meta/main.yml +++ /dev/null @@ -1,2 +0,0 @@ -dependencies: - - role: common diff --git a/playbook/roles/promtail-agent/tasks/main.yml b/playbook/roles/promtail-agent/tasks/main.yml deleted file mode 100755 index 4fa017f0..00000000 --- a/playbook/roles/promtail-agent/tasks/main.yml +++ /dev/null @@ -1,19 +0,0 @@ -- 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/promtail-agent/templates/promtail-agent.service b/playbook/roles/promtail-agent/templates/promtail-agent.service deleted file mode 100644 index 4d27b40b..00000000 --- a/playbook/roles/promtail-agent/templates/promtail-agent.service +++ /dev/null @@ -1,15 +0,0 @@ -[Unit] -Description=Prometheus -Documentation=https://grafana.io/ -After=network.target - -[Service] -Type=simple -User=root -ExecStart=/usr/bin/promtail -config.file=/etc/promtail/promtail.yaml -Restart=on-failure -RestartSec=30 -StartLimitInterval=0 - -[Install] -WantedBy=multi-user.target diff --git a/playbook/roles/promtail-agent/templates/promtail.yaml b/playbook/roles/promtail-agent/templates/promtail.yaml deleted file mode 100644 index 8bdb778d..00000000 --- a/playbook/roles/promtail-agent/templates/promtail.yaml +++ /dev/null @@ -1,38 +0,0 @@ -server: - http_listen_port: 9080 - grpc_listen_port: 0 - -clients: - - url: http://{{ loki_host }}:{{ loki_port }}/loki/api/v1/push - -positions: - filename: /var/log/positions.yaml - -scrape_configs: -- job_name: system-auth-log - static_configs: - - targets: - - localhost - labels: - instance: {{ inventory_hostname }} - {{ label }} - job: secure - __path__: /var/log/auth.log -- job_name: system-os-log - static_configs: - - targets: - - localhost - labels: - instance: {{ inventory_hostname }} - {{ label }} - job: syslog - __path__: /var/log/syslog -- job_name: system-audit-log - static_configs: - - targets: - - localhost - labels: - instance: {{ inventory_hostname }} - {{ label }} - job: audit - __path__: /var/log/audit/audit.log diff --git a/playbook/roles/redis/files/setup-redis.sh b/playbook/roles/redis/files/setup-redis.sh deleted file mode 100644 index b68ae13c..00000000 --- a/playbook/roles/redis/files/setup-redis.sh +++ /dev/null @@ -1,4 +0,0 @@ -helm repo add bitnami https://charts.bitnami.com/bitnami -helm repo up -kubectl create ns redis -helm upgrade --install redis bitnami/redis --set architecture=standalone -n redis diff --git a/playbook/roles/redis/tasks/main.yml b/playbook/roles/redis/tasks/main.yml deleted file mode 100755 index 98200ff7..00000000 --- a/playbook/roles/redis/tasks/main.yml +++ /dev/null @@ -1,3 +0,0 @@ -- name: Setup Redis Server - script: files/setup-redis.sh - when: inventory_hostname in groups[group] diff --git a/playbook/roles/secret-manger/tasks/main.yml b/playbook/roles/secret-manger/tasks/main.yml deleted file mode 100755 index f12b12b9..00000000 --- a/playbook/roles/secret-manger/tasks/main.yml +++ /dev/null @@ -1,48 +0,0 @@ -- name: "cluster {{ ClusterContext }} : Create namespace" - shell: "kubectl create ns {{ namespace }} || echo true" - -# Create General Secret for K8S form File - -- name: "cluster {{ ClusterContext }} : Clean OLD Secret" - shell: "kubectl delete secret {{ item.secret_name }} -n {{ namespace }}" - ignore_errors: yes - loop: "{{ generic }}" - when: generic is defined - -- name: "cluster {{ ClusterContext }} Create New Generic Secret from Key/Vaule" - shell: 'kubectl create secret generic {{ item.secret_name }} \ - --from-literal={{ item.sercet_key }}="{{ item.secret_value }}" \ - -n {{ namespace }}' - loop: "{{ generic }}" - when: generic is defined - -# Create General Secret for K8S From Key/Value - -- name: "cluster {{ ClusterContext }} : Clean OLD Secret" - shell: "kubectl delete secret {{ item.secret_name }} -n {{ namespace }}" - ignore_errors: yes - loop: "{{ secret }}" - when: secret is defined - -- name: "cluster {{ ClusterContext }} Create New Generic Secret from Key/Vaule" - shell: 'kubectl create secret generic {{ item.secret_name }} \ - --from-literal={{ item.sercet_key }}="{{ item.secret_value }}" \ - -n {{ namespace }}' - loop: "{{ secrets }}" - when: secrets is defined - -# TLS Secret for K8S key/cert - -- name: "cluster {{ ClusterContext }} : Clean OLD Secret" - shell: "kubectl delete secret {{ item.secret_name }} -n {{ namespace }}" - ignore_errors: yes - loop: "{{ tls }}" - when: tls is defined - -- name: "cluster {{ ClusterContext }} : Create New tls secret" - shell: 'kubectl create secret tls {{ item.secret_name }} \ - --key={{ item.keyfile }} \ - --cert={{ item.certfile }} \ - -n {{ namespace }}' - loop: "{{ tls }}" - when: tls is defined diff --git a/playbook/roles/wireguard-client/create_keys.sh b/playbook/roles/wireguard-client/create_keys.sh deleted file mode 100644 index 44c39a84..00000000 --- a/playbook/roles/wireguard-client/create_keys.sh +++ /dev/null @@ -1,40 +0,0 @@ -#!/bin/bash - -export name=$1 -export server_key=$2 -export server_ip=$3 -export client_ip=$4 - -sudo rm -rvf /etc/wireguard/keys/$name -sudo mkdir -pv /etc/wireguard/keys/$name -cd /etc/wireguard/keys/$name -wg genkey > ${name}.key -wg pubkey < ${name}.key > ${name}.pub - -KEY=`cat ${name}.key` -PUBKEY=`cat ${name}.pub` - -cat > ${name}-wg0.conf << EOF -[Interface] -PrivateKey = ${KEY} -ListenPort = 54321 -Address = ${client_ip}/24 -DNS = 10.1.0.2, 114.114.114.114 -MTU = 1420 -[Peer] -PublicKey = ${server_key} -AllowedIPs = 10.255.0.0/24, 10.1.0.0/16 -Endpoint = ${server_ip}:51820 -PersistentKeepalive = 25 -EOF - - -# brew install wireguard-tools && sudo wg-quick up wg0 -# apt install qrencode --assume-yes qrencode --read-from=client-wg0.conf --type=UTF8 - -cat >> /etc/wireguard/wg0.conf << EOF -[Peer] - # ${name} - PublicKey = ${PUBKEY} - AllowedIPs = ${client_ip}/32 -EOF diff --git a/playbook/roles/wireguard-client/tasks/main.yml b/playbook/roles/wireguard-client/tasks/main.yml deleted file mode 100755 index dea103e8..00000000 --- a/playbook/roles/wireguard-client/tasks/main.yml +++ /dev/null @@ -1,15 +0,0 @@ -- 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: 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 Xtls service - shell: 'bash -c "$(curl -L https://github.com/XTLS/Xray-install/raw/main/install-release.sh)" @install' - when: inventory_hostname in groups[group] - -- name: Remove fluent-bit service - shell: "systemctl disable fluent-bit && systemctl stop fluent-bit" - when: inventory_hostname in groups[group] diff --git a/playbook/roles/wireguard-client/templates/config.json b/playbook/roles/wireguard-client/templates/config.json deleted file mode 100644 index 494ffc26..00000000 --- a/playbook/roles/wireguard-client/templates/config.json +++ /dev/null @@ -1,84 +0,0 @@ -{ - "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 - } - } - } -} diff --git a/playbook/roles/wireguard-dateway/create_keys.sh b/playbook/roles/wireguard-dateway/create_keys.sh deleted file mode 100644 index 44c39a84..00000000 --- a/playbook/roles/wireguard-dateway/create_keys.sh +++ /dev/null @@ -1,40 +0,0 @@ -#!/bin/bash - -export name=$1 -export server_key=$2 -export server_ip=$3 -export client_ip=$4 - -sudo rm -rvf /etc/wireguard/keys/$name -sudo mkdir -pv /etc/wireguard/keys/$name -cd /etc/wireguard/keys/$name -wg genkey > ${name}.key -wg pubkey < ${name}.key > ${name}.pub - -KEY=`cat ${name}.key` -PUBKEY=`cat ${name}.pub` - -cat > ${name}-wg0.conf << EOF -[Interface] -PrivateKey = ${KEY} -ListenPort = 54321 -Address = ${client_ip}/24 -DNS = 10.1.0.2, 114.114.114.114 -MTU = 1420 -[Peer] -PublicKey = ${server_key} -AllowedIPs = 10.255.0.0/24, 10.1.0.0/16 -Endpoint = ${server_ip}:51820 -PersistentKeepalive = 25 -EOF - - -# brew install wireguard-tools && sudo wg-quick up wg0 -# apt install qrencode --assume-yes qrencode --read-from=client-wg0.conf --type=UTF8 - -cat >> /etc/wireguard/wg0.conf << EOF -[Peer] - # ${name} - PublicKey = ${PUBKEY} - AllowedIPs = ${client_ip}/32 -EOF diff --git a/playbook/roles/wireguard-dateway/tasks/main.yml b/playbook/roles/wireguard-dateway/tasks/main.yml deleted file mode 100755 index fcbc572d..00000000 --- a/playbook/roles/wireguard-dateway/tasks/main.yml +++ /dev/null @@ -1,15 +0,0 @@ -- 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: 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 Wireguard Service - shell: 'apt update && apt install wireguard-tools wireguard-dkms -y' - when: inventory_hostname in groups[group] - -- name: Remove fluent-bit service - shell: "systemctl disable fluent-bit && systemctl stop fluent-bit" - when: inventory_hostname in groups[group] diff --git a/playbook/roles/wireguard-dateway/templates/create-vpn-config.sh b/playbook/roles/wireguard-dateway/templates/create-vpn-config.sh deleted file mode 100644 index a962cdf1..00000000 --- a/playbook/roles/wireguard-dateway/templates/create-vpn-config.sh +++ /dev/null @@ -1,35 +0,0 @@ -#!/bin/bash - -export server_public_key=$1 -export server_ip=$2 -export client_name=$3 -export client_ip=$4 - -sudo rm -rvf /etc/wireguard/keys/$client_name -sudo mkdir -pv /etc/wireguard/keys/$client_name -cd /etc/wireguard/keys/$client_name -wg genkey > ${client_name}.key -wg pubkey < ${client_name}.key > ${client_name}.pub - -CLIENT_KEY=`cat ${client_name}.key` -CLIENT_PUBLIC_KEY=`cat ${client_name}.pub` - -cat > ${client_name}-wg0.conf << EOF -[Interface] -PrivateKey = ${CLIENT_KEY} -ListenPort = 54321 -Address = ${client_ip}/24 -DNS = 114.114.114.114 -MTU = 1420 -EOF - - -# brew install wireguard-tools && sudo wg-quick up wg0 -# apt install qrencode --assume-yes qrencode --read-from=client-wg0.conf --type=UTF8 - -cat >> /etc/wireguard/wg0.conf << EOF -[Peer] - # ${client_name} - PublicKey = ${CLIENT_PUBLIC_KEY} - AllowedIPs = ${client_ip}/32 -EOF diff --git a/playbook/roles/xtls-server/tasks/main.yml b/playbook/roles/xtls-server/tasks/main.yml deleted file mode 100755 index dea103e8..00000000 --- a/playbook/roles/xtls-server/tasks/main.yml +++ /dev/null @@ -1,15 +0,0 @@ -- 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: 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 Xtls service - shell: 'bash -c "$(curl -L https://github.com/XTLS/Xray-install/raw/main/install-release.sh)" @install' - when: inventory_hostname in groups[group] - -- name: Remove fluent-bit service - shell: "systemctl disable fluent-bit && systemctl stop fluent-bit" - when: inventory_hostname in groups[group] diff --git a/playbook/roles/xtls-server/templates/config.json b/playbook/roles/xtls-server/templates/config.json deleted file mode 100644 index 494ffc26..00000000 --- a/playbook/roles/xtls-server/templates/config.json +++ /dev/null @@ -1,84 +0,0 @@ -{ - "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 - } - } - } -} diff --git a/playbook/templates/id_rsa b/playbook/templates/id_rsa deleted file mode 100644 index 39cdaff3..00000000 --- a/playbook/templates/id_rsa +++ /dev/null @@ -1 +0,0 @@ -{{ vars.ssh_private_key }} diff --git a/playbook/templates/inventory b/playbook/templates/inventory deleted file mode 100644 index 96285c5b..00000000 --- a/playbook/templates/inventory +++ /dev/null @@ -1,14 +0,0 @@ -[master] -k3s-server ansible_host={{ vars.k3s_server_public_ip }} - -[node] -db-server ansible_host={{ vars.db_server_public_ip }} - -[all:vars] -ansible_port=22 -ansible_ssh_user=ubuntu -ansible_ssh_private_key_file=hosts/id_rsa -ansible_host_key_checking=False -dns_ak={{ vars.dns_ak }} -dns_sk={{ vars.dns_sk }} -lb_ip={{ vars.k3s_server_ip }}