--- - name: 部署Python应用 hosts: "{{ target_hosts | default('all') }}" become: yes vars: app_name: myapp app_dir: /opt/myapp python_version: python3 venv_dir: /opt/myapp/venv gunicorn_port: 8000 gunicorn_workers: 4 app_user: www-data tasks: - name: 安装Python和依赖 package: name: - "{{ python_version }}" - "{{ python_version }}-venv" - python3-pip state: present - name: 创建应用目录 file: path: "{{ app_dir }}" state: directory owner: "{{ app_user }}" mode: '0755' - name: 创建虚拟环境 shell: "{{ python_version }} -m venv {{ venv_dir }}" args: creates: "{{ venv_dir }}/bin/activate" - name: 安装Gunicorn pip: name: gunicorn virtualenv: "{{ venv_dir }}" - name: 创建Systemd服务 copy: content: | [Unit] Description={{ app_name }} Gunicorn Service After=network.target [Service] User={{ app_user }} WorkingDirectory={{ app_dir }} ExecStart={{ venv_dir }}/bin/gunicorn --workers {{ gunicorn_workers }} --bind 0.0.0.0:{{ gunicorn_port }} app:app Restart=always [Install] WantedBy=multi-user.target dest: /etc/systemd/system/{{ app_name }}.service notify: Restart App - name: 启动服务 systemd: name: "{{ app_name }}" state: started enabled: yes daemon_reload: yes handlers: - name: Restart App systemd: name: "{{ app_name }}" state: restarted daemon_reload: yes