Résumé des recherches sur l'introduction de Fabric dans le système en cours de visualisation. Décrit en référence au Document officiel. Il semble y avoir beaucoup de choses que vous pouvez faire, mais vous ne pouvez prendre le relais que si vous restez simple, il s'agit donc de ce qui suit. La version que j'ai essayée est la suivante.
L'exécution simple est exécutée dans le format suivant
fab -nom de fichier f-H nom d'hôte-u méthode d'exécution du nom d'utilisateur
Exemple: fab-f fab_test.py -H 192.168.1.10 -u ubuntu task_name
fab_test.py
from fabric.api import *
def task_name():
run("whoami")
sudo("whoami")
with cd("/tmp"):
run("pwd")
get Copiez le fichier localement à partir du serveur cible. Vérifiez la valeur de retour .succeeded pour voir si elle a réussi. .failed semble stocker une liste de chemins de fichiers en cas d'échec.
get("Chemin du serveur distant","Chemin local")
r = get('/home/foo/hoge', './')
print(r.succeeded) # =>Si c'est vrai, cela réussit. Échec si faux
print(r.failed)
put Copiez le fichier du serveur local vers le serveur cible.
put('Chemin du serveur local','Chemin du serveur distant')
r = put('./hoge',"/home/foo")
print(r.succeeded) # =>Si c'est vrai, cela réussit. Échec si faux
local Exécutez la commande sur le serveur local.
local("pwd")
run Exécutez la commande sur le serveur distant. L'utilisateur qui exécute est l'utilisateur qui a accédé.
run("whoami")
sudo sudo et exécutez la commande. Il échouera si l'utilisateur accédant ne dispose pas des privilèges sudo.
sudo("whoami")
Il est également possible de spécifier l'utilisateur d'exécution en décrivant comme suit.
with settings(sudo_user='mysql'):
sudo("whoami") # prints 'mysql'
open_shell Migrez vers le shell du serveur distant et exécutez la commande. Passez à interactif tel qu'il est.
open_shell("ls")
prompt Accepte les entrées des invites utilisateur. Il semble que la validation soit également possible. Lorsque j'ai entré une chaîne de caractères pour le type int, une exception s'est produite, il semble donc préférable de la valider avec une expression régulière.
r = prompt("run command ?")
run(r)
# With validation, i.e. requiring integer input:
prompt('Please specify process nice level: ', key='nice', validate=int)
# With validation against a regular expression:
release = prompt('Please supply a release name',
validate=r'^\w+-\d+(\.\d+)?$')
Préfixez toutes les commandes avec cd XX &&
ou YY &&. Je ne pouvais pas mettre su-devant le préfixe, utilisez donc les paramètres mentionnés ci-dessus.
with cd("/etc"):
run("cat hosts")
with prefix("cd /etc"):
run("cat hosts")
Les couleurs peuvent être ajoutées en décrivant comme suit. Il semble facile de comprendre si vous colorez le succès ou l'échec. Il est nécessaire de vérifier s'il sera coloré avec Teraterm.
from fabric.colors import *
print(red("This sentence is red, except for " +
green("these words, which are green") + "."))
Les couleurs sont les suivantes.
Exécutez la méthode uniquement sur le serveur du rôle cible.
from fabric.api import env
env.roledefs = {
'web': ['192.168.1.10', '192.168.1.11', '192.168.1.12']
}
@roles('web')
def restart_nginx():
sudo("service nginx restart ")
L'exécution est la suivante. Dans ce qui précède, @roles ('web') est décrit avant la méthode, donc -R web peut être omis au moment de l'exécution.
fab -f Fichier d'exécution[-Rouleau R] task
fab -f fab_test.py -u ubuntu restart_nginx
Il y avait une procédure appelée "Fichier manquant" dans la procédure, et quand j'ai créé un script comme je l'ai fait manuellement, cela s'est arrêté là.
Cela peut être évité en entrant warn_only = True
comme indiqué ci-dessous.
with settings(warn_only=True):
result = sudo("ls -l /not/found/path")
[Autres sites qui peuvent être utiles] https://blog.masu-mi.me/2015/04/11/fabric_tips.html
http://perezvon.hatenablog.com/entry/20091026/1256552181
Recommended Posts