notes d'utilisation du tissu python
tissu
Le titre est développement, mais en même temps, vous devez faire des travaux de développement, de tests et d'exploitation et de maintenance... Pourquoi la tâche*3 n'est-elle pas un salaire * 3 (o(╯ □╰)o)
Récemment, j'ai repris de plus en plus de choses. Les travaux de libération et d'exploitation et de maintenance sont assez mécaniques, et la fréquence est assez élevée, ce qui entraîne une perte de temps mais en a beaucoup. avantages.
Corriger les bugs, tester, soumettre le référentiel (2 minutes), ssh vers l'environnement de test pour le déploiement pull (2 minutes), rsync vers les machines en ligne A, B, C, D, E (1 minute), ssh sur les cinq machines d'ABCDE respectivement, et redémarrez une par une (8-10 minutes) = 13-15 minutes
Ce qui est frustrant, c'est que chaque opération est la même, la commande est la même et le Ce qui est terrible, c'est que sur plusieurs machines, il est difficile de le faire avec un script sur cette machine. L'essentiel du temps est perdu en ssh, en tapant des commandes et en l'écrivant sous forme de script. Il peut être exécuté en un seul clic. Passez deux minutes à regarder les résultats de l'exécution
jusqu'à ce que vous le trouviez. Fabric
Fonction
Un outil très puissant
Vous pouvez solidifier les commandes pour. déploiement automatisé ou fonctionnement multi-machines dans un script
et certains Les outils d'exploitation et de maintenance sont très similaires. Je l'utilise principalement parce que python...
est simple, facile à utiliser et facile. à utiliser
Bien sûr, vous pouvez également combiner diverses commandes de shell, y compris des artefacts anciens et des armes modernesDifférence
Configuration de l'environnement
Installez le package correspondant sur la machine locale et. la machine cible (attention, les deux sont requis)
sudo easy_install fabric
Il s'agit actuellement de la version 1.6 (ou utilisez pip install, Idem)
Après l'installation, vous pouvez vérifier si l'installation est réussie
[ken@~$] which fab /usr/local/bin/fab
Après l'installation, vous pouvez parcourir la documentation officielle http://docs.fabfile.org/en/1.6/
Ensuite, vous pouvez démarrer
bonjour tout le monde
Tout d'abord, effectuez une opération simple sur la machine pour avoir une compréhension préliminaire. La source de l'exemple provient du site officiel
Créez un nouveau script py : fabfile.py
def hello(): print("Hello world!")
Exécution de la ligne de commande :
[ken@~/tmp/fab$] fab hello Hello world! Done.
Notez que fabfile n'a pas besoin d'être utilisé comme nom de fichier ici, mais le fichier
[ken@~/tmp/fab$] mv fabfile.py test.py fabfile.py -> test.py [ken@~/tmp/fab$] fab hello Fatal error: Couldn't find any fabfiles! Remember that -f can be used to specify fabfile path, and use -h for help. Aborting. [ken@~/tmp/fab$] fab -f test.py hello Hello world! Done.
def hello(name, value): print("%s = %s!" % (name, value))
[ken@~/tmp/fab$] fab hello:name=age,value=20 age = 20! Done. [ken@~/tmp/fab$] fab hello:age,20 age = 20! Done.
from fabric.api import local def lsfab(): local('cd ~/tmp/fab') local('ls')
[ken@~/tmp/fab$] pwd;ls /Users/ken/tmp/fab fabfile.py fabfile.pyc test.py test.pyc [ken@~/tmp/fab$] fab -f test.py lsfab [localhost] local: cd ~/tmp/fab [localhost] local: ls fabfile.py fabfile.pyc test.py test.pyc Done.
cd /home/project/test/conf/ git add settings.py git commit -m 'daily update settings.py' git pull origin git push origin
from fabric.api import local def setting_ci(): local("cd /home/project/test/conf/") local("git add settings.py") #后面你懂的,懒得敲了…..
#!/usr/bin/env python # encoding: utf-8 from fabric.api import local,cd,run env.hosts=['user@ip:port',] #ssh要用到的参数 env.password = 'pwd' def setting_ci(): local('echo "add and commit settings in local"') #刚才的操作换到这里,你懂的 def update_setting_remote(): print "remote update" with cd('~/temp'): #cd用于进入某个目录 run('ls -l | wc -l') #远程操作用run def update(): setting_ci() update_setting_remote()
[ken@~/tmp/fab$] fab -f deploy.py update [user@ip:port] Executing task 'update' [localhost] local: echo "add and commit settings in local" add and commit settings in local remote update [user@ip:port] run: ls -l | wc -l [user@ip:port] out: 12 [user@ip:port] out: Done.
<🎜. >Mashup multi-serveur
Pour faire fonctionner plusieurs serveurs, plusieurs hôtes doivent être configurés
Résultat :#!/usr/bin/env python # encoding: utf-8 from fabric.api import * #操作一致的服务器可以放在一组,同一组的执行同一套操作 env.roledefs = { 'testserver': ['user1@host1:port1',], 'realserver': ['user2@host2:port2', ] } #env.password = '这里不要用这种配置了,不可能要求密码都一致的,明文编写也不合适。打通所有ssh就行了' @roles('testserver') def task1(): run('ls -l | wc -l') @roles('realserver') def task2(): run('ls ~/temp/ | wc -l') def dotask(): execute(task1) execute(task2)
[ken@~/tmp/fab$] fab -f mult.py dotask [user1@host1:port1] Executing task 'task1' [user1@host1:port1] run: ls -l | wc -l [user1@host1:port1] out: 9 [user1@host1:port1] out: [user2@host2:port2] Executing task 'task2' [user2@host2:port2] run: ls ~/temp/ | wc -l [user2@host2:port2] out: 11 [user2@host2:port2] out: Done.
peut imprimer des couleurs, ce qui est plus accrocheur et pratique lors de la visualisation des informations sur le résultat de l'opération
print vert('succès')
imprimer rouge('échec') jaune imprimer('jaune')
#fab -f color.py show
1.hôte, utilisateur, port , liste de configuration des mots de passe, le tout écrit dans un fichier
ou
env.hosts = [ 'host1', 'host2' ] env.passwords = { 'host1': "pwdofhost1", 'host2': "pwdofhost2", }
2. Analysez-le dans l'imbrication de cartes en fonction de la clé et mettez-le en déploiement
env.roledefs = { 'testserver': ['host1', 'host2'], 'realserver': ['host3', ] } env.passwords = { 'host1': "pwdofhost1", 'host2': "pwdofhost2", 'host3': "pwdofhost3", }

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Solution aux problèmes d'autorisation Lors de la visualisation de la version Python dans Linux Terminal Lorsque vous essayez d'afficher la version Python dans Linux Terminal, entrez Python ...

Comment enseigner les bases de la programmation novice en informatique dans les 10 heures? Si vous n'avez que 10 heures pour enseigner à l'informatique novice des connaissances en programmation, que choisissez-vous d'enseigner ...

Lorsque vous utilisez la bibliothèque Pandas de Python, comment copier des colonnes entières entre deux frames de données avec différentes structures est un problème courant. Supposons que nous ayons deux dats ...

Comment éviter d'être détecté lors de l'utilisation de FiddlereVerywhere pour les lectures d'homme dans le milieu lorsque vous utilisez FiddlereVerywhere ...

Les expressions régulières sont des outils puissants pour la correspondance des motifs et la manipulation du texte dans la programmation, améliorant l'efficacité du traitement de texte sur diverses applications.

Comment Uvicorn écoute-t-il en permanence les demandes HTTP? Uvicorn est un serveur Web léger basé sur ASGI. L'une de ses fonctions principales est d'écouter les demandes HTTP et de procéder ...

Dans Python, comment créer dynamiquement un objet via une chaîne et appeler ses méthodes? Il s'agit d'une exigence de programmation courante, surtout si elle doit être configurée ou exécutée ...

L'article traite des bibliothèques Python populaires comme Numpy, Pandas, Matplotlib, Scikit-Learn, Tensorflow, Django, Flask et Demandes, détaillant leurs utilisations dans le calcul scientifique, l'analyse des données, la visualisation, l'apprentissage automatique, le développement Web et H et H
