lex00.flask-uwsgi-nginx

README.md

Rôle Ansible : flask-uwsgi-nginx

Ce rôle Ansible déploie votre application Flask depuis un dépôt git.

Le rôle emballe votre application Flask sous forme de "wheel" et l'installe ensuite dans un environnement virtuel (virtualenv).

Exigences

  • Fichier .python-version

    Ce fichier doit contenir la version de Python que vous ciblez.

  • Commande python setup.py bdist_wheel

    Le rôle exécutera cette commande. Testez à l'avance et assurez-vous que votre projet peut construire une wheel.

Variables du Rôle

app_repo_url : 'https://github.com/lex00/flask-github-jobs'

  • dépôt Python contenant l'application Flask

app_subfolder : ''

  • si votre projet se trouve dans un sous-dossier du dépôt, spécifiez-le ici, sinon laissez vide

app_description : 'Une Flask qui liste les emplois depuis l’API des emplois de GitHub'

  • cela sera utilisé dans le script de service système

app_name : 'flask_github_jobs'

  • noms des dossiers d'app et du service

app_user : 'flask_github_jobs'

  • utilisateur et groupe système auront cette valeur

app_domain : 'notarealdomain.com'

  • domaine auquel Nginx répondra

app_module : 'flask_github_jobs'

  • module Python pour uwsgi.ini

app_callable : 'app'

  • appelable Python pour uwsgi.ini

app_port : '80'

  • port du service

app_health_ep : '/'

  • point de terminaison de santé

uwsgi_process_count : '4'

  • nombre de processus uwsgi

uwsgi_thread_count : '2'

  • nombre de threads uwsgi

Dépendances

Aucune

Exemple de Playbook

- hosts: all
  tasks:
  - import_role:
       name: lex00.flask-uwsgi-nginx

Configuration de Python

Vous pouvez utiliser n'importe quelle version de Python que vous souhaitez.

  • Fichier .python-version

    • Votre projet doit avoir ce fichier
  • /home/{{ app_user }}/.pyenv/versions

    • pyenv construira et installera Python ici
  • /opt/{{ app_name }}/venv

    • L'application sera installée dans cet environnement virtuel

Configuration de Uwsgi

Uwsgi sera installé dans l'environnement virtuel. Aucun package système pour Uwsgi ne sera installé.

  • /etc/{{ app_name }}/app_name.ini

    • Fichier de configuration Uwsgi
  • /var/run/{{ app_name }}/{{ app_name }}.sock

    • Fichier socket Uwsgi

Actifs statiques de Flask

Ce rôle découvrira automatiquement vos dossiers d'actifs statiques et les configurera dans Nginx.

Pour que cela fonctionne :

  • Placez vos actifs dans un dossier appelé static dans votre module application Flask.

  • réglez static_url_path sur vide

    app = Flask(__name__, static_url_path='')
    

Gestion du service

Ubuntu 14.04 Démarrer/Arrêter le service Uwsgi

sudo start {{ app_name }}

Ubuntu 14.04 Démarrer/Arrêter Nginx

sudo start nginx

Ubuntu >= 16 Démarrer/Arrêter le service Uwsgi

sudo systemctl start {{ app_name }}

Ubuntu >= 16 Démarrer/Arrêter Nginx

sudo systemctl start nginx

Journaux

Les journaux seront placés dans /var/log/{{ app_name }}

Ils seront possédés par {{ app_user }}

Exemples Vagrant + Galaxy

Créez un requirements.yml avec ce contenu :

---
- src: lex00.flask-uwsgi-nginx

Le provisionneur doit avoir galaxy_role_file défini sur ceci.

config.vm.provision "ansible", type: "ansible_local" do |ansible|
  ansible.verbose = true
  ansible.become = true
  ansible.extra_vars = "vars.json"
  ansible.config_file = "ansible.cfg"
  ansible.galaxy_roles_path = "roles"
  ansible.galaxy_role_file = "requirements.yml"
  ansible.playbook = "playbook.yml"
end

Exemples Packer + Galaxy

Créez un requirements.yml avec ce contenu :

---
- src: lex00.flask-uwsgi-nginx

Le provisionneur doit avoir galaxy_file défini sur ceci.

{
  "type": "ansible-local",
  "host_vars": "{{ user `vars_path` }}",
  "playbook_dir": "{{ user `ansible_path` }}",
  "playbook_paths": "{{ user `ansible_path` }}",
  "role_paths": "{{ user `ansible_path` }}/roles",
  "playbook_file": "{{ user `ansible_path` }}/playbook.yml",
  "galaxy_file": "{{ user `ansible_path` }}/requirements.yml",
  "extra_arguments": [ "--extra-vars \"@host_vars/vars.json\"" ]
}

Tests avec Vagrant

Un Vagrantfile est inclus pour aider à tester le rôle localement.

Vagrant > 2.0 est requis.

Démarrer le Vagrant

La première fois que vous faites cela, cela exécutera Ansible.

flask-uwsgi-nginx$ vagrant up

Le Vagrant devrait être provisionné correctement.

Reprovisionner le Vagrant

Vous pouvez exécuter à nouveau le rôle avec :

flask-uwsgi-nginx/tests $ vagrant provision

Licence

MIT

À propos du projet

Deploy Flask from a git source repository

Installer
ansible-galaxy install lex00.flask-uwsgi-nginx
Licence
mit
Téléchargements
76
Propriétaire