hypebeast.flaskapp
ansible-flaskapp
Rôle Ansible pour la mise en provision et le déploiement d'applications Flask.
Caractéristiques
- Fournit des tâches pour la mise en provision et le déploiement d'une application Flask.
- Met en place un serveur avec toutes les applications et exigences requises.
- Déployez facilement votre application Flask.
- Utilisez git pour récupérer l'application.
- Utilisez Nginx comme proxy inverse.
- Utilisez Supervisor comme gestionnaire de processus.
- Utilisez Gunicorn pour exécuter l'application Flask (peut être remplacé si un script de démarrage personnalisé est fourni).
- Configurez Postgresql avec la base de données et l'utilisateur requis (facultatif).
- Exécutez des hooks d'installation personnalisés avant et après l'installation.
- Installez npm et bower si nécessaire.
- Exécutez
npm install
etbower install
lors du déploiement (facultatif).
Installation
ansible-galaxy
ansible-flaskapp est un rôle Ansible distribué mondialement via Ansible Galaxy. Pour installer le rôle ansible-flaskapp, vous pouvez utiliser la commande suivante.
$ ansible-galaxy install hypebeast.flaskapp
Manuellement
Ou clonez directement le dépôt dans votre dossier de rôles :
$ git clone https://github.com/hypebeast/ansible-flaskapp-stack flaskapp
Exemples
Installation avec ansible-galaxy
Tout d'abord, installez le rôle
ansible-galaxy install hypebeast.flaskapp
Ajoutez le rôle à votre playbook
Ajoutez le rôle ansible-flaskapp à votre playbook :
- hosts: all
roles:
- {role: hypebeast.flaskapp,
tags: [flaskapp-setup,flaskapp-deploy]}
Cela exécute les tâches de configuration et de déploiement.
Si vous souhaitez exécuter uniquement la tâche de déploiement :
- hosts: all
roles:
- {role: hypebeast.flaskapp,
tags: [flaskapp-deploy]}
Configurez les variables du rôle
Personnalisez les variables du rôle (voir les variables du rôle).
Variables du rôle
Voir defaults/main.yml pour une liste complète des variables disponibles.
# Le nom de l'application, utilisé pour créer le répertoire de l'application, par exemple.
# Cela doit être une abréviation, en minuscules et ne doit pas contenir d'espaces.
flaskapp_app_name: flaskapp
# Port pour l'application
flaskapp_port: 8000
# L'utilisateur utilisé pour exécuter l'application Flask
flaskapp_app_user: www-data
# Le répertoire pour garder le code source de l'application.
flaskapp_app_directory: "/opt/{{ flaskapp_app_name }}"
# Le répertoire pour garder les journaux de l'application.
flaskapp_app_log_directory: "/var/log/{{ flaskapp_app_name }}"
# Le chemin vers les exigences de l'application.
flaskapp_app_requirements: "{{ flaskapp_app_directory }}/requirements.txt"
# Le dépôt git distant à partir duquel récupérer le code de l'application, par exemple :
# [email protected]:hypebeast/flaskapp.git
flaskapp_app_repository: [email protected]:hypebeast/ansible-flaskapp.git
# La version du dépôt à récupérer. Cela peut être un hash SHA1 de 40 caractères, une branche ou un nom de tag.
flaskapp_app_version: master
# La liste des variables d'environnement à utiliser pour exécuter la plupart des commandes.
flaskapp_app_environment:
PATH: "{{ flaskapp_app_directory }}/bin:{{ ansible_env.PATH }}"
# La liste des commandes personnalisées à exécuter avant et après le déploiement. Ces commandes
# utilisent l'environnement défini précédemment pour s'exécuter.
flaskapp_app_pre_hooks: []
flaskapp_app_post_hooks: []
# Le chemin vers la configuration de l'application à utiliser lors du lancement de l'application.
flaskapp_app_config:
# La version de Python qui doit être installée
flaskapp_python_version: 2.7
# La liste des paquets système requis pour construire/exécuter l'application.
flaskapp_app_packages:
- git
- python{{ flaskapp_python_version }}
- build-essential
- python-dev
- python-pip
- python-virtualenv
- libpq-dev
- build-essential
# Paquets système supplémentaires requis par votre application
flaskapp_additional_app_packages:
# Installer `nodejs` et les dépendances de paquets requises via `npm` ?
flaskapp_app_requires_npm: false
# Installer les dépendances de paquets front-end via `bower` ?
flaskapp_app_requires_bower: false
# Installer et configurer Postgresql
flaskapp_use_postgresql: true
# Utilisateur de la base de données Postgresql
flaskapp_postgresql_user: "{{ flaskapp_app_name }}"
# Mot de passe de la base de données Postgresql
flaskapp_postgresql_password: xxxxx
# Nom de la table de la base de données Postgresql
flaskapp_postgresql_table: "{{ flaskapp_app_name }}"
# Définit si des migrations doivent être exécutées lors du déploiement
flaskapp_run_migrations: false
# Répertoire avec les scripts de migration
flaskapp_migrations_dir: ../migrations
# Commande de migration
flaskapp_migration_command: python manage.py migrate
# Nom du serveur Nginx
flaskapp_nginx_server_name: "{{ flaskapp_app_name }}.domain.com"
# Répertoire avec les fichiers statiques servis directement par Nginx
flaskapp_nginx_static_dir: "{{ flaskapp_app_directory }}/static/"
# Mettre à true si vous voulez utiliser une configuration nginx personnalisée (vous devez la provisionner vous-même)
flaskapp_use_custom_nginx_conf: false
# Mettre à true si vous voulez utiliser une configuration supervisor personnalisée (vous devez la provisionner vous-même)
flaskapp_use_custom_supervisor_conf: false
# Mettre à true si vous voulez utiliser un script de démarrage personnalisé utilisé par supervisor (vous devez la provisionner vous-même)
flaskapp_use_custom_start_script: false
Tests
Le projet vient avec un Vagrantfile qui permet de tester facilement le rôle.
Utilisez vagrant provision/vagrant up
ou ansible-playbook tests/test.yml -i vagrant-inventory
.
Auteur
Sebastian Ruml, sebastian@sebastianruml.name
Licence
Voir le fichier LICENSE pour plus de détails.
Remerciements
Remerciements aux auteurs des projets suivants :
Provisioning and deploy Flask applications
ansible-galaxy install hypebeast.flaskapp