


Examples of methods used by ansible as a python module library
ansible is a python package, a complete unpack and play software. The only requirement for the client is to have ssh and python, and the python-simplejson package is installed. The deployment is ridiculously simple. The following article mainly introduces examples of methods for using ansible as a python module library. Friends in need can refer to it.
Preface
ansible is a new automated operation and maintenance tool. It is developed based on Python and integrates many operation and maintenance tools (puppet, cfengine, chef, func, fabric), it realizes functions such as batch system configuration, batch program deployment, and batch running of commands. Ansible works based on modules and does not have the ability to deploy in batches. What really has batch deployment is the module run by ansible, and ansible only provides a framework.
Mainly includes:
(1) Connection plugins: responsible for communicating with the monitored end;
(2) Host inventory : The specified operating host is the monitoring host defined in a configuration file;
(3) Various modules core modules, command modules, custom modules;
(4) Use plug-ins to complete functions such as recording log emails;
(5) Playbook: When the script performs multiple tasks, the node can run multiple tasks at one time if not necessary.
Ansible is a very good tool among operation and maintenance tools. I personally like it. The yml file can be flexibly configured according to the needs to achieve different business needs. Because there is no need to install a client, it is very easy to get started. In some cases, you may need to write ansible as a library component of python into your own script. Today's script will show how ansible is combined with a python script, that is, how to use ansible in a python script. We Unfold gradually.
Let’s look at the first example:
#!/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=(',', ': '))
This example shows how we How to run system commands through ansible in a python script. Let's look at the second example and connect it to our yml file.
The content of the simple yml file is as follows:
- hosts: sample_group_name tasks: - name: just an uname command: uname -a
The python script that calls the playbook is as follows:
#!/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=(',', ': '))
For more examples of methods using ansible as a python module library, please pay attention to the PHP Chinese website!

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics

Solution to permission issues when viewing Python version in Linux terminal When you try to view Python version in Linux terminal, enter python...

How to avoid being detected when using FiddlerEverywhere for man-in-the-middle readings When you use FiddlerEverywhere...

When using Python's pandas library, how to copy whole columns between two DataFrames with different structures is a common problem. Suppose we have two Dats...

How to teach computer novice programming basics within 10 hours? If you only have 10 hours to teach computer novice some programming knowledge, what would you choose to teach...

How does Uvicorn continuously listen for HTTP requests? Uvicorn is a lightweight web server based on ASGI. One of its core functions is to listen for HTTP requests and proceed...

Using python in Linux terminal...

Fastapi ...

Understanding the anti-crawling strategy of Investing.com Many people often try to crawl news data from Investing.com (https://cn.investing.com/news/latest-news)...
