Maison >développement back-end >Tutoriel Python >Comment utiliser Ansible comme bibliothèque de modules Python
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!