gitops/README.md
2025-08-18 15:05:15 +08:00

101 lines
5.4 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# ansible-playbook
This repository contains a collection of Ansible playbooks and roles for various infrastructure setups and service management tasks.
For a quick overview of the directory layout see [docs/repo-structure.md](docs/repo-structure.md).
Additional documentation is stored under the `docs/` folder.
## Playbook 角色说明
1. playbooks/roles/docker适用于简单的、单机环境的部署主要使用 Docker 和 Docker Compose 进行容器化管理。
2. playbooks/roles/charts面向大规模的 Kubernetes 集群,使用 Helm 和标准化 Chart 部署模式进行高可用和可扩展的管理。
3. playbooks/roles/vhosts传统的非容器化部署方式通常涉及手动配置服务器和虚拟主机适用于不使用容器的应用场景。
## Role Summary
| Role Name | Description | Docker | Charts | VHosts | CICD | Validate | Last Update |
|-------------------------|-------------------------------------------------------|--------|--------|--------|--------|--------|------------|
| `common` | 通用角色,包含一些常用的功能,如日志记录、监控等。 | | | ✔ | | yes | 2025-02-14 |
| `keycloak` | 用于管理身份认证和授权服务。 | ✔ | | | github | yes | 2024-11-10 |
| `harbor` | 容器镜像仓库角色,用于存储和管理容器镜像。 | ✔ | | | github | yes | 2024-11-14 |
| `app` | 参考模板。 | | | | | | |
| `nginx` | 用于设置 Nginx | | ✔ | ✔ | | | |
| `grafana` | 用于设置 Grafana | | ✔ | ✔ | | | |
| `grafana-loki` | 用于设置 Grafana-loki | | ✔ | ✔ | | | |
| `Grafana-tempo` | 用于设置 Grafana-tempo | | ✔ | ✔ | | | |
| `prometheus` | 用于设置 Prometheus | | ✔ | ✔ | | | |
| `prometheus-transfer` | 用于 Prometheus 数据传输设置。 | | | ✔ | | | |
| `vector` | 用于配置日志收集代理。 | | | ✔ | | | |
| `node-exporter` | 用于导出系统和硬件的监控数据。 | | ✔ | | | | |
| `observability-agent` | 用于管理 Observability 代理。 | | ✔ | ✔ | | | |
| `observability-server` | 用于设置 Observability 服务端。 | | ✔ | ✔ | | | |
| `wireguard-client` | 用于设置 WireGuard 客户端。 | | | ✔ | | | |
| `wireguard-gateway` | 用于设置 WireGuard 网关。 | | | ✔ | | | |
| `vault` | 用于管理敏感数据和密钥。 | | | ✔ | | | |
| `postgresql` | PostgreSQL 数据库角色,用于提供 PostgreSQL 数据库服务。 | | ✔ | | | | |
| `redis` | Redis 数据库角色,用于提供 Redis 数据库服务。 | | ✔ | | | | |
| `chartmuseum` | 图表仓库角色,用于存储和管理 Kubernetes 图表。 | | ✔ | | | | |
| `gitlab` | 代码仓库角色,用于存储和管理代码。 | | ✔ | | | | |
| `mysql` | MySQL 数据库角色,用于提供 MySQL 数据库服务。 | | ✔ | | | | |
| `argo-server` | 用于设置和管理 Argo Server。 | | ✔ | | | | |
| `deepflow` | 用于流量监控与网络性能分析的 DeepFlow 服务。 | | ✔ | | | | |
| `jenkins` | Jenkins 自动化构建工具角色,用于 CI/CD 管道。 | | ✔ | | | | |
| `chaos-mesh` | 用于 Chaos Engineering 测试的 Chaos Mesh 角色。 | | ✔ | | | | |
| `flagger-loadtester` | 用于负载测试的 Flagger Loadtester 角色。 | | ✔ | | | | |
| `splunk-otel-collector` | 用于配置 Splunk OpenTelemetry Collector。 | | ✔ | | | | |
| `openldap` | 用于设置和管理 OpenLDAP 身份认证服务。 | | ✔ | | | | |
| `alerting` | 用于设置和管理警报系统。 | | | ✔ | | | |
| `k3s` | 用于创建 Kubernetes 集群。 | | | ✔ | | | |
| `k3s-reset` | 用于重置 Kubernetes 集群。 | | | ✔ | | | |
| `k3s-addon` | 用于安装 Kubernetes 集群插件。 | | | ✔ | | | |
| `secret-manger` | 密钥管理角色,用于管理密钥。 | | | ✔ | | | |
| `cert-manager` | 证书管理角色,用于管理证书。 | | | ✔ | | | |
| `ssh-trust` | 配置 ops 主机与节点的 SSH 互信。 | | | ✔ | | | |
表格说明
- Docker是否属于 Docker 角色。
- Charts是否属于 Helm Chart 角色。
- VHosts是否属于虚拟主机管理相关角色。
- CICD是否启用 CICD 管道,标明是否集成了自动化流程。
- Validate是否经过验证测试。
- Last Update最后更新时间。
## Usage Examples
- Linux OS Setup
ansible-playbook -i inventory/hosts/all playbooks/common -D -C
ansible-playbook -i inventory/hosts/all playbooks/common -D
- Gather Network Information
ansible-playbook -i inventory gather_network_info.yml -e target_group=master
- Display network information on all nodes
ansible -i inventory all -m script -a 'roles/network_info/tasks/files/display_network_info.sh'
- Deploy Keycloak Server
ansible-playbook -i inventory/hosts/core playbooks/keycloak_server -D
- Set up WireGuard Gateway
ansible-playbook -i inventory/hosts/vpn playbooks/wireguard_gateway.yaml -D
- Set up Grafana Alloy
ansible-playbook -i inventory/k3s-cluster playbooks/init_grafana_alloy -D -C -l cn-k3s-server.svc.plus -e @playbooks/roles/alloy/files/loki_journal_sources_k3s_server.yml -e "ansible_become_pass='xxxx'"
- Setup VPN gateway
ansible-playbook -i inventory/hosts/all playbooks/common -l gateway -D
## Documentation
- [docs/gpu-k8s-role.md](docs/gpu-k8s-role.md) - How to run the GPU-enabled Kubernetes role.
- [docs/repo-structure.md](docs/repo-structure.md) - Overview of repository layout.