Maison >développement back-end >Tutoriel Python >Comment utiliser Ansible comme bibliothèque de modules Python

Comment utiliser Ansible comme bibliothèque de modules Python

不言
不言original
2018-06-02 15:43:482093parcourir

ansible est un package python, un logiciel complet de décompression et de lecture. Les seules exigences pour le client sont ssh et python, et le package python-simplejson est installé. Le déploiement est ridiculement simple. L'article suivant présente principalement des exemples de méthodes d'utilisation d'ansible comme bibliothèque de modules Python. Les amis dans le besoin peuvent s'y référer.

Avant-propos

ansible est un nouvel outil d'exploitation et de maintenance automatisée Il est développé sur la base de Python et intègre de nombreux outils d'exploitation et de maintenance (puppet. , cfengine, chef, func, fabric), il réalise des fonctions telles que la configuration du système par lots, le déploiement de programmes par lots et l'exécution par lots de commandes. Ansible fonctionne sur la base de modules et n'a pas la possibilité de se déployer par lots. Ce qui a vraiment un déploiement par lots, c'est le module exécuté par ansible, et ansible ne fournit qu'un cadre.

Comprend principalement :

(1) Plugins de connexion : responsables de la communication avec l'extrémité surveillée

(2) Inventaire de l'hôte : l'appareil d'exploitation spécifié ; host est l'hôte de surveillance défini dans un fichier de configuration ;

(3) Divers modules de base, modules de commande, modules personnalisés

(4) Utiliser des plug-ins ; pour exécuter des fonctions telles que l'enregistrement des e-mails du journal ;

(5) Playbook : lorsque le script exécute plusieurs tâches, le nœud peut exécuter plusieurs tâches à la fois si nécessaire.

Ansible est un très bon outil parmi les outils d'exploitation et de maintenance. Personnellement, je l'aime bien. Vous pouvez configurer le fichier yml de manière flexible en fonction de vos besoins pour répondre à différents besoins commerciaux. il est très simple de démarrer. Dans certains cas, vous devrez peut-être écrire ansible en tant que composant de bibliothèque de python dans votre propre script. Le script d'aujourd'hui montrera comment ansible est combiné avec un script python, c'est-à-dire comment utiliser ansible dans. un script python. Déplions progressivement.

Regardez le premier exemple :

#!/usr/bin/python 
import ansible.runner
import ansible.playbook
import ansible.inventory
from ansible import callbacks
from ansible import utils
import json
 
# the fastest way to set up the inventory
 
# hosts list
hosts = ["10.11.12.66"]
# set up the inventory, if no group is defined then 'all' group is used by default
example_inventory = ansible.inventory.Inventory(hosts)
 
pm = ansible.runner.Runner(
 module_name = 'command',
 module_args = 'uname -a',
 timeout = 5,
 inventory = example_inventory,
 subset = 'all' # name of the hosts group 
 )
 
out = pm.run()
 
print json.dumps(out, sort_keys=True, indent=4, separators=(',', ': '))

Cet exemple nous montre comment pour exécuter des commandes système dans des scripts python via ansible Regardons le deuxième exemple et connectons-le à notre fichier yml.

Le contenu du fichier yml simple est le suivant :

- hosts: sample_group_name
 tasks:
 - name: just an uname
 command: uname -a

Le script python qui appelle le playbook est le suivant :

#!/usr/bin/python 
import ansible.runner
import ansible.playbook
import ansible.inventory
from ansible import callbacks
from ansible import utils
import json
 
### setting up the inventory
 
## first of all, set up a host (or more)
example_host = ansible.inventory.host.Host(
 name = '10.11.12.66',
 port = 22
 )
# with its variables to modify the playbook
example_host.set_variable( 'var', 'foo')
 
## secondly set up the group where the host(s) has to be added
example_group = ansible.inventory.group.Group(
 name = 'sample_group_name'
 )
example_group.add_host(example_host)
 
## the last step is set up the invetory itself
example_inventory = ansible.inventory.Inventory()
example_inventory.add_group(example_group)
example_inventory.subset('sample_group_name')
 
# setting callbacks
stats = callbacks.AggregateStats()
playbook_cb = callbacks.PlaybookCallbacks(verbose=utils.VERBOSITY)
runner_cb = callbacks.PlaybookRunnerCallbacks(stats, verbose=utils.VERBOSITY)
 
# creating the playbook instance to run, based on "test.yml" file
pb = ansible.playbook.PlayBook(
 playbook = "test.yml",
 stats = stats,
 callbacks = playbook_cb,
 runner_callbacks = runner_cb,
 inventory = example_inventory,
 check=True
 )
 
# running the playbook
pr = pb.run() 
 
# print the summary of results for each host
print json.dumps(pr, sort_keys=True, indent=4, separators=(',', ': '))

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn