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 () 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.
@task
Lorsqu'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