[PYTHON] J'étais en charge de la maintenance du script Fabric, mais je ne sais pas.> <À ceux qui

On m'a donné un script Fabric pré-construit ... mais je ne sais pas ce que je fais ...> < Parce que c'était le cas, j'ai résumé les mots qui apparaissent fréquemment.

Si vous n'avez pas de script existant en premier lieu Je me demande si je peux le comprendre naturellement en regardant le tutoriel depuis le début.

Au fait, le tutoriel officiel http://fabric-ja.readthedocs.org/ja/latest/tutorial.html

env C'est ce qu'on appelle un dictionnaire d'environnement dans '** env ** ironment'. C'est un soi-disant fichier de réglage, Plutôt qu'un fichier de configuration ** Un objet dictionnaire qui peut être référencé globalement dans un script ** C'est une reconnaissance correcte. C'est un dictionnaire, mais vous pouvez y accéder comme un attribut avec env.hosts pour une facilité d'utilisation.

C'est de toute façon l'élément le plus important utilisé dans Fabric.

Au fait, il existe une fonction appelée settings (), mais si vous l'utilisez avec la clause with L'effet est que seule cette étendue peut être définie sur un paramètre spécifique.

from fabric.api import settings

def hoge():
  with settings(warn_only=True):
    return run('hoge hoge')

Est env.warn_only = False par défaut uniquement dans la portée de la clause with warn_only = Vrai. Il semble que vous trouverez une signification particulière dans les paramètres lors de l'utilisation de Django, mais tout cela est dans Fabric.

local () et run ()

local () est local. En d'autres termes, exécutez la commande localement sur le PC en cours d'exécution. Run (), d'autre part, exécute la commande dans l'environnement distant cible. Si vous faites quelque chose comme local ('cd / path / mypath') dans run ()

Passer le processus run () de votre PC vers le PC distant ↓ Le PC distant déplace le répertoire vers cd / chemin / mypath vers son emplacement local

C'est comme ça. Il existe également sudo () qui est exécuté par sudo.

role Ne vous laissez pas berner par la traduction du rôle. C'est juste un groupe d'hôtes. Il est défini dans env.roledefs.

env.roledefs = {
  'web-servers': ['web1', 'web2']
}

Ceci cible les serveurs web1 et web2 lors du déploiement sur un serveur web, Plutôt que de faire ['web1', 'web2'] à chaque fois, ce serait plus facile si vous pouviez simplement spécifier 'serveurs-web'. Cela ne veut rien dire de plus. Si la clé de rôle a le même nom que le nom de la commande, il sera difficile pour les débutants de Fabric de comprendre, Si vous vous calmez, c'est tout.

À propos, il peut également être utilisé avec des décorateurs,

@role('web-servers')
def deploy():
  '''do deploy'''

Si tel est le cas, la commande sera exécutée pour le rôle.

décorateur de tâches

@taskLorsqu'il est appliqué à une fonction avec ** "C'est une tâche réalisable" ** Le tissu le ramassera. Autrement dit, il sera répertorié dans $ fab -l. C'est une fonction relativement nouvelle, donc si vous utilisez ce décorateur Notez que les fonctions sans ** `@ task n'apparaissent pas dans`` `$ fab -l``` **.

J'en ai volontairement fait un décorateur de tâches car il y a aussi une fonction task (), mais il y a une possibilité de l'utiliser directement Il n'y a presque rien de tel, vous n'avez donc pas à vous en soucier.

execute Le sens est légèrement confondu avec run et local, mais c'est déroutant ** Appelez la fonction de tâche Fabric à partir d'une autre fonction de tâche. ** ** En d'autres termes, le traitement peut être imbriqué. La différence avec l'appel de fonction normal est ** Les paramètres d'hôte et de rôle pour chaque tâche sont appliqués tels quels ** Il y a dedans. Par conséquent, vous pouvez imbriquer intuitivement les tâches sans penser aux détails. Comme usage, par exemple

--Déployer

S'il y avait chaque fonction de tâche de

def déployer()
  execute(Obtenez le dernier code source)
  execute(Redémarrage du serveur)

Vous devriez faire quelque chose comme ça.


Soudain, on m'a donné un script pré-construit et j'ai regardé le contenu, mais je ne comprends pas! C'était une collection de mots qui semblaient l'être. La documentation officielle devrait être plus facile à comprendre si elles seules ont du sens!

Recommended Posts

J'étais en charge de la maintenance du script Fabric, mais je ne sais pas.> <À ceux qui
Je veux connaître la population de chaque pays du monde.
Bonjour Flask! Peut être fait en quelques secondes, mais les gens qui ne connaissent pas le contenu
La première étape pour ceux qui sont amateurs de statistiques mais qui souhaitent implémenter des modèles d'apprentissage automatique en Python
Je veux connaître la nature de Python et pip
Je veux connaître la légende du monde des technologies informatiques
Pour ceux d'entre vous qui ne savent pas comment définir un mot de passe avec Jupyter sur Docker
Comment connaître la structure interne d'un objet en Python
J'ai écrit le code pour écrire le code Brainf * ck en python
Je ne connais pas l'erreur de valeur
[Fabric] J'étais accro à l'utilisation de booléen comme argument, alors notez les contre-mesures.
Je ne veux pas l'admettre ... Représentation dynamique du système de Neural Network
Je veux convertir par lots le résultat de "chaîne de caractères" .split () en Python
Je veux expliquer en détail la classe abstraite (ABCmeta) de Python
J'ai analysé les données Airbnb pour ceux qui veulent rester à Amsterdam
Je souhaite trier une liste dans l'ordre des autres listes
Le nom du fichier était mauvais en Python et j'étais accro à l'importation
Je veux analyser les sentiments des gens qui veulent se rencontrer et trembler
Je souhaite laisser une commande arbitraire dans l'historique des commandes de Shell
J'ai fait un programme pour vérifier la taille d'un fichier avec Python
J'ai essayé d'afficher la valeur d'altitude du DTM dans un graphique
J'ai créé un script pour vérifier si l'anglais est entré dans la position spécifiée du fichier JSON en Python.
Je ne connaissais pas les bases de Python
Je voulais connaître le nombre de lignes dans plusieurs fichiers et j'ai essayé de l'obtenir avec une commande
Le fichier édité avec vim était en lecture seule, mais je veux le sauvegarder
python Je ne sais pas comment obtenir le nom de l'imprimante que j'utilise habituellement.
Je souhaite utiliser Python dans l'environnement de pyenv + pipenv sous Windows 10
Parlez des fonctionnalités dont les pandas et moi étions en charge dans le projet
P100-PCIE-16GB a été ajouté au GPU de Google Colab avant que je le sache
J'ai essayé d'utiliser Resultoon sur Mac + AVT-C875, mais j'étais frustré en chemin.
J'ai créé une commande appdo pour exécuter des commandes dans le contexte de l'application
AtCoder AGC 041 C - J'étais accro à la recherche complète de Domino Quality
Je souhaite définir un cycle de vie dans la définition de tâche d'ECS
Je souhaite stocker les résultats de% time, %% time, etc. dans un objet (variable)
J'ai fait un script pour enregistrer la fenêtre active en utilisant win32gui de Python
J'ai essayé de visualiser les paroles de GReeeen, que j'écoutais de façon folle dans ma jeunesse mais que je ne l'écoutais plus.
Je vais résumer ce que j'ai été heureux de faire pour sortir de l'état où je ne connais même pas la lettre D de Docker
linux / c> lien> Obtenir le résultat de l'exécution de la commande shell dans le programme C> On m'a appris à utiliser popen ()
Je veux faire briller l'éclairage LED de l'ErgoDox EZ, mais dites-moi ce qu'est la LED en premier lieu
L'inexactitude de Tensorflow était due à log (0)
Python: j'ai pu récurer en lambda
J'ai essayé de corriger la forme trapézoïdale de l'image
Je souhaite personnaliser l'apparence de zabbix
Je veux afficher la progression en Python!
J'ai essayé de vectoriser les paroles de Hinatazaka 46!
J'utilise python mais je ne connais pas bien la classe, donc je vais donner un tutoriel
J'étais sobrement accro à appeler awscli à partir d'un script Python 2.7 enregistré dans crontab
J'ai essayé de gratter YouTube, mais je peux utiliser l'API, alors ne le faites pas.
La première étape de l'apprentissage automatique ~ Pour ceux qui veulent essayer l'implémentation avec python ~
J'ai essayé d'extraire le texte du fichier image en utilisant Tesseract du moteur OCR
Je ne sais pas ce qu'est HEIC. Mais pour le moment, utilisons le PNG!
En voici une, je vais résumer les applications équipées "d'intelligence artificielle" qui m'intéressaient
Ce que j'ai fait quand j'étais en colère de le mettre avec l'option enable-shared
J'ai essayé de mettre HULFT IoT (Agent) dans la passerelle Rooster de Sun Electronics
[First data science ⑥] J'ai essayé de visualiser le prix du marché des restaurants à Tokyo
J'ai utilisé Python pour découvrir les choix de rôle des 51 "Yachts" dans le monde.