hypebeast.flaskapp
ansible-flaskapp
用于配置和部署 Flask 应用程序的 Ansible 角色。
特性
- 提供用于配置和部署 Flask 应用程序的任务。
- 配置一个服务器,并安装所有必要的应用程序和依赖项。
- 轻松部署你的 Flask 应用程序。
- 使用 Git 检出应用程序。
- 使用 Nginx 作为反向代理。
- 使用 Supervisor 作为进程管理器。
- 使用 Gunicorn 运行 Flask 应用程序(如果提供自定义启动脚本,可覆盖此设置)。
- 设置 Postgresql,包括所需的数据库和用户(可选)。
- 执行自定义的安装前和安装后钩子。
- 如有需要,安装 npm 和 bower。
- 在部署过程中运行
npm install
和bower 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 up
或 ansible-playbook tests/test.yml -i vagrant-inventory
。
作者
Sebastian Ruml, sebastian@sebastianruml.name
许可证
有关详细信息,请参阅 LICENSE 文件。
贡献
归功于以下项目的作者:
关于项目
Provisioning and deploy Flask applications
安装
ansible-galaxy install hypebeast.flaskapp
许可证
mit
下载
192
拥有者