hypebeast.flaskapp

ansible-flaskapp

构建状态

用于配置和部署 Flask 应用程序的 Ansible 角色。

特性

  • 提供用于配置和部署 Flask 应用程序的任务。
  • 配置一个服务器,并安装所有必要的应用程序和依赖项。
  • 轻松部署你的 Flask 应用程序。
  • 使用 Git 检出应用程序。
  • 使用 Nginx 作为反向代理。
  • 使用 Supervisor 作为进程管理器。
  • 使用 Gunicorn 运行 Flask 应用程序(如果提供自定义启动脚本,可覆盖此设置)。
  • 设置 Postgresql,包括所需的数据库和用户(可选)。
  • 执行自定义的安装前和安装后钩子。
  • 如有需要,安装 npm 和 bower。
  • 在部署过程中运行 npm installbower install(可选)。

安装

ansible-galaxy

ansible-flaskapp 是一个通过 Ansible Galaxy 全球分发的 Ansible 角色。要安装 ansible-flaskapp 角色,可以使用以下命令:

$ ansible-galaxy install hypebeast.flaskapp

手动安装

或者直接在你的 roles 文件夹中克隆该库:

$ git clone https://github.com/hypebeast/ansible-flaskapp-stack flaskapp

示例

使用 ansible-galaxy 安装

首先,安装该角色:

ansible-galaxy install hypebeast.flaskapp

将角色添加到你的剧本中

ansible-flaskapp 角色添加到你的 playbook 中:

- hosts: all
  roles:
    - {role: hypebeast.flaskapp,
       tags: [flaskapp-setup, flaskapp-deploy]}

这将执行设置和部署任务。

如果你只想运行部署任务,可以使用:

- hosts: all
  roles:
    - {role: hypebeast.flaskapp,
       tags: [flaskapp-deploy]}

设置角色变量

自定义角色变量(参见角色变量)。

角色变量

请参阅 defaults/main.yml 以获取可用变量的完整列表。

# 应用程序的名称,用于创建应用程序目录,例如:
# 应该是简短的小写,并且不包含任何空格。
flaskapp_app_name: flaskapp

# 应用程序使用的端口
flaskapp_port: 8000

# 用于运行 Flask 应用程序的用户
flaskapp_app_user: www-data

# 存放应用程序源代码的目录。
flaskapp_app_directory: "/opt/{{ flaskapp_app_name }}"

# 存放应用程序日志的目录。
flaskapp_app_log_directory: "/var/log/{{ flaskapp_app_name }}"

# 应用程序需求的路径。
flaskapp_app_requirements: "{{ flaskapp_app_directory }}/requirements.txt"

# 用于获取应用程序代码的远程 git 库,例如:
# [email protected]:hypebeast/flaskapp.git
flaskapp_app_repository: [email protected]:hypebeast/ansible-flaskapp.git

# 要检出的版本。这可以是完整的
# 40 字符 SHA1 哈希、分支或标签名称。
flaskapp_app_version: master

# 用于运行大多数命令的环境变量列表。
flaskapp_app_environment:
  PATH: "{{ flaskapp_app_directory }}/bin:{{ ansible_env.PATH }}"

# 在部署之前和之后运行的自定义命令列表。这些命令
# 使用之前定义的环境运行。
flaskapp_app_pre_hooks: []
flaskapp_app_post_hooks: []

# 启动应用程序时使用的应用程序配置路径。
flaskapp_app_config:

# 应安装的 Python 版本
flaskapp_python_version: 2.7

# 构建/运行应用程序所需的系统软件包列表。
flaskapp_app_packages:
  - git
  - python{{ flaskapp_python_version }}
  - build-essential
  - python-dev
  - python-pip
  - python-virtualenv
  - libpq-dev
  - build-essential

# 应用程序所需的附加系统软件包
flaskapp_additional_app_packages:

# 通过 `npm` 安装 `nodejs` 和所需的包依赖项?
flaskapp_app_requires_npm: false

# 通过 `bower` 安装前端包依赖项?
flaskapp_app_requires_bower: false

# 安装和配置 Postgresql
flaskapp_use_postgresql: true

# Postgresql 数据库用户
flaskapp_postgresql_user: "{{ flaskapp_app_name }}"

# Postgresql 数据库密码
flaskapp_postgresql_password: xxxxx

# Postgresql 数据库表名称
flaskapp_postgresql_table: "{{ flaskapp_app_name }}"

# 定义在部署期间是否应运行迁移
flaskapp_run_migrations: false

# 包含迁移脚本的目录
flaskapp_migrations_dir: ../migrations

# 迁移命令
flaskapp_migration_command: python manage.py migrate

# Nginx 服务器名称
flaskapp_nginx_server_name: "{{ flaskapp_app_name }}.domain.com"

# 存放由 Nginx 直接提供的静态文件的目录
flaskapp_nginx_static_dir: "{{ flaskapp_app_directory }}/static/"

# 如果希望使用自定义 nginx 配置(需要自行配置)
flaskapp_use_custom_nginx_conf: false

# 如果希望使用自定义 supervisor 配置(需要自行配置)
flaskapp_use_custom_supervisor_conf: false

# 如果希望使用自定义启动脚本(需要自行配置)
flaskapp_use_custom_start_script: false

测试

该项目附带一个 Vagrantfile,可以方便地测试该角色。

使用 vagrant provision/vagrant upansible-playbook tests/test.yml -i vagrant-inventory

作者

Sebastian Ruml, sebastian@sebastianruml.name

许可证

有关详细信息,请参阅 LICENSE 文件。

贡献

归功于以下项目的作者:

安装
ansible-galaxy install hypebeast.flaskapp
许可证
mit
下载
192
拥有者