Commit 992cafa2 authored by BO ZHANG's avatar BO ZHANG 🏀
Browse files

refactor(ansible): 重构部署配置结构和环境变量管理

parent d062e3a7
Loading
Loading
Loading
Loading
+15 −12
Original line number Diff line number Diff line

# 默认环境(可被传入的 ENV 参数覆盖,例如 make up-master ENV=csu)
ENV ?= csu
ENV_FILE := envs/.env.$(ENV)
ENV_FILE := envs/$(ENV).env

# 动态检测 docker compose 还是 docker-compose
DOCKER_COMPOSE := $(shell if docker compose version >/dev/null 2>&1; then echo "docker compose"; elif command -v docker-compose >/dev/null 2>&1; then echo "docker-compose"; else echo "echo 'No docker compose found'; exit 1"; fi)

list-envs:
	@echo "Available environments (Usage: make up-master ENV=<name>):"
	@ls envs/.env.* 2>/dev/null | sed 's|envs/.env.||' | sed 's/^/  - /' || echo "  No environment files found."
	@ls envs/*.env 2>/dev/null | sed 's|envs/||' | sed 's|.env||' | sed 's/^/  - /' || echo "  No environment files found."

all: down pull mkdir fix-permission init up

@@ -16,38 +19,38 @@ mkdir:
	mkdir -p ./dags ./volumes/logs ./volumes/plugins ./volumes/config ./volumes/pg_data ./volumes/es_data

fix-permission:
	sudo chown -R 1000:0 ./volumes/es_data
	sudo chown -R 50000:0 ./volumes/es_data

rmdir:
	rm -rf ./volumes

init:
	docker compose --env-file $(ENV_FILE) up airflow-init
	$(DOCKER_COMPOSE) --env-file $(ENV_FILE) up airflow-init

up:
	docker compose --env-file $(ENV_FILE) up -d
	$(DOCKER_COMPOSE) --env-file $(ENV_FILE) up -d

check-env:
	@if [ ! -f $(ENV_FILE) ]; then echo "Error: Environment file $(ENV_FILE) does not exist!"; exit 1; fi

up-master: check-env
	docker compose -f docker-compose.yaml --env-file $(ENV_FILE) --profile flower --profile master up -d --force-recreate
	$(DOCKER_COMPOSE) -f docker-compose.yaml --env-file $(ENV_FILE) --profile flower --profile master up -d --force-recreate

up-worker: check-env
	docker compose -f docker-compose.yaml --env-file $(ENV_FILE) --profile worker up -d --force-recreate
	$(DOCKER_COMPOSE) -f docker-compose.yaml --env-file $(ENV_FILE) --profile worker up -d --force-recreate

down:
	docker compose --env-file $(ENV_FILE) down
	$(DOCKER_COMPOSE) --env-file $(ENV_FILE) down

migrate:
	docker compose --env-file $(ENV_FILE) run --rm airflow-init airflow db upgrade
	$(DOCKER_COMPOSE) --env-file $(ENV_FILE) run --rm airflow-init airflow db upgrade

clean:
	# 停止服务并清理旧数据
	docker compose --env-file $(ENV_FILE) rm -sf
	$(DOCKER_COMPOSE) --env-file $(ENV_FILE) rm -sf

ps:
	docker compose --env-file $(ENV_FILE) ps
	$(DOCKER_COMPOSE) --env-file $(ENV_FILE) ps

restart:
	docker compose --env-file $(ENV_FILE) restart
	$(DOCKER_COMPOSE) --env-file $(ENV_FILE) restart
+12 −2
Original line number Diff line number Diff line
@@ -9,6 +9,16 @@
    local_project_dir: ".."

  tasks:
    - name: Check if docker compose plugin is available
      command: docker compose version
      register: docker_compose_check
      ignore_errors: yes
      changed_when: false

    - name: Set docker compose command
      set_fact:
        docker_compose_cmd: "{% if docker_compose_check.rc == 0 %}docker compose{% else %}docker-compose{% endif %}"

    - name: Ensure deployment directory exists
      file:
        path: "{{ deploy_dir }}"
@@ -51,7 +61,7 @@
  tasks:
    - name: Start Master services (postgres, redis, elasticsearch, airflow core, api, etc.)
      shell: |
        docker compose --env-file envs/.env.{{ env_name }} --profile master up -d
        {{ docker_compose_cmd }} --env-file envs/{{ env_name }}.env --profile master up -d
      args:
        chdir: "{{ deploy_dir }}"

@@ -64,6 +74,6 @@
  tasks:
    - name: Start Worker services (celery-worker, filebeat, monitoring)
      shell: |
        docker compose --env-file envs/.env.{{ env_name }} --profile worker up -d
        {{ docker_compose_cmd }} --env-file envs/{{ env_name }}.env --profile worker up -d
      args:
        chdir: "{{ deploy_dir }}"
+2 −2
Original line number Diff line number Diff line
[master]
# Replace with your actual master node IP
192.168.25.18 ansible_user=root
csu-master ansible_host=192.168.25.18 ansible_user=root

[worker]
# Add all your worker node IPs here
# e.g., 192.168.25.19 ansible_user=root
# e.g., csu-worker1 ansible_host=192.168.25.19 ansible_user=root

[all:vars]
# The environment name to deploy (e.g., p368, csu, zjlab)
+3 −3
Original line number Diff line number Diff line
[master]
# Replace with your actual master node IP
10.73.0.27 ansible_user=root
p368-master ansible_host=10.73.0.27 ansible_user=root

[worker]
# Add all your worker node IPs here
# e.g., 10.73.0.28 ansible_user=root
# 10.73.0.29 ansible_user=root
# e.g., p368-worker1 ansible_host=10.73.0.28 ansible_user=root
# p368-worker2 ansible_host=10.73.0.29 ansible_user=root

[all:vars]
# The environment name to deploy (e.g., p368, csu, zjlab)
+2 −2
Original line number Diff line number Diff line
[master]
# Replace with your actual master node IP
10.200.60.244 ansible_user=root
zjlab-master ansible_host=10.200.60.244 ansible_user=root

[worker]
# Add all your worker node IPs here
# e.g., 10.200.60.245 ansible_user=root
# e.g., zjlab-worker1 ansible_host=10.200.60.245 ansible_user=root

[all:vars]
# The environment name to deploy (e.g., p368, csu, zjlab)
Loading