search
HomeSystem TutorialLINUXIntroduction to Ansible Dynamic Inventory

Introduction to Ansible Dynamic Inventory

Aug 24, 2024 am 10:44 AM
linuxlinux tutorialRed Hatlinux systemlinux commandlinux certificationred hat linuxlinux video

Ansible Inventory actually consists of two parts: static Inventory and dynamic Inventory. Static Inventory refers to the hosts and groups specified in the file /etc/ansible/hosts. Dynamic Inventory refers to obtaining the host list through external scripts and following the requirements of ansible The format returned to the ansilbe command. This part generally combines the CMDB asset management system, zabbix monitoring system, crobble installation system, cloud computing platform, etc. to obtain host information. Since host resources generally increase or decrease dynamically, these systems generally update intelligently. We can return the host list through the API or access library query provided by these tools.

1. The simplest example

Since Ansible supports json format when accepting scripts to dynamically obtain host information, I will not take it from other systems here, and print a segment of host information in json format through a piece of code:

#!/usr/bin/env python
# coding=utf-8
import json
host1ip = ['10.212.52.252','10.212.52.14']
host2ip = ['10.212.52.16']
group = 'test1'
group2 = 'test2'
hostdata = {group:{"hosts":host1ip},group2:{"hosts":host2ip}}
print json.dumps(hostdata,indent=4)

Note:

1. The host part must be in list format;

2. In the hostdata line, the "hosts" part can be omitted, but if used, it must be "hosts" and cannot be other strings such as ‘‘hostlist’’.

After omitting

, you can write it like this:

hostdata = {group:host1ip,group2:host2ip}

The result of executing this code directly is as follows:

[root@361way.com ~]# python twogroup.py
{
"test1": {
"hosts": [
"10.212.52.252",
"10.212.52.14"
]
},
"test2": {
"hosts": [
"10.212.52.16"
]
}
}

Two host groups are defined above. The test1 group contains hosts 10.212.52.252 and 10.212.52.14, and the test2 group contains host 10.212.52.16. ansible can be called through the following methods:

[root@361way.com ~]# ansible -i twogroup.py test1 -m command -a 'uptime' -k
SSH password:
10.212.52.252 | success | rc=0 >>
23:01pm up 24 days 8:24, 2 users, load average: 0.21, 0.35, 0.39
10.212.52.14 | success | rc=0 >>
23:08pm up 332 days 5:23, 2 users, load average: 0.00, 0.01, 0.05
[root@361way.com ~]# ansible -i twogroup.py test2 -m command -a 'uptime' -k
SSH password:
10.212.52.16 | success | rc=0 >>
23:09pm up 332 days 6:00, 2 users, load average: 0.08, 0.06, 0.05
2. Complex example

In the static host configuration file example, there will be group variables (vars), including between groups, as shown below:

Ansible Dynamic Inventory 介绍

If you want the above part, get the implementation through the script. The json format returned after implementation should be as shown below:

Ansible Dynamic Inventory 介绍

Complex return formats like the above are generally not used in ad-hoc environments. Most of them are used in ansible-playbook. This is because the playbook file sometimes involves the passing of vars parameters.

3. Obtain host examples from third-party platforms

This was mentioned at the beginning of this article. We obtained examples from platforms such as cobbler and cmdb. Since the initiator (author) of ansible is also the creator of cobbler software, the official document gives us an example of cobbler and an example of obtaining host information from AWS. As follows:

Get host information code on cobbler

Get host information code on aws cloud

Regarding how to obtain host information from AWS and put it into the database, I have written a related chapter before. For details, you can also refer to my previous blog post - AWS Host Asset Management (this article is also implemented in pure python).

Get host information through zabbix api. I also wrote a zabbix summary (8) Zabbix api. If you want to get host list information through zabbix platform, you can also refer to it.

4. Others

1. The script called after the ansible -i parameter is not necessarily a py file, ​​it can also be the output result of other scripts. Here is a simple test:

[root@361way.com yaml]# ansible -i group.sh test1 -m command -a 'uptime' -k
SSH password:
10.212.52.16 | success | rc=0 >>
00:18am up 332 days 7:10, 2 users, load average: 0.00, 0.01, 0.05
10.212.52.14 | success | rc=0 >>
00:17am up 332 days 6:32, 2 users, load average: 0.01, 0.03, 0.05
10.212.52.252 | success | rc=0 >>
00:11am up 24 days 9:33, 2 users, load average: 0.49, 0.42, 0.41
[root@localhost yaml]# cat group.sh
#!/bin/bash
groups='''
{
"test1": {
"hosts": [
"10.212.52.252",
"10.212.52.14",
"10.212.52.16"
]
}
}
'''
echo $groups

2. The script specified by the -i parameter needs to have executable permission, otherwise an error will be reported, as follows:

[root@361way.com yaml]# ansible -i hostjson.py AA -a 'uptime'
ERROR: The file hostjson.py looks like it should be an executable inventory script, but is not 
marked executable. Perhaps you want to correct this with `chmod +x hostjson.py`?

The above is the detailed content of Introduction to Ansible Dynamic Inventory. For more information, please follow other related articles on the PHP Chinese website!

Statement
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
What are Linux operations?What are Linux operations?Apr 13, 2025 am 12:20 AM

The core of the Linux operating system is its command line interface, which can perform various operations through the command line. 1. File and directory operations use ls, cd, mkdir, rm and other commands to manage files and directories. 2. User and permission management ensures system security and resource allocation through useradd, passwd, chmod and other commands. 3. Process management uses ps, kill and other commands to monitor and control system processes. 4. Network operations include ping, ifconfig, ssh and other commands to configure and manage network connections. 5. System monitoring and maintenance use commands such as top, df, du to understand the system's operating status and resource usage.

Boost Productivity with Custom Command Shortcuts Using Linux AliasesBoost Productivity with Custom Command Shortcuts Using Linux AliasesApr 12, 2025 am 11:43 AM

Introduction Linux is a powerful operating system favored by developers, system administrators, and power users due to its flexibility and efficiency. However, frequently using long and complex commands can be tedious and er

What is Linux actually good for?What is Linux actually good for?Apr 12, 2025 am 12:20 AM

Linux is suitable for servers, development environments, and embedded systems. 1. As a server operating system, Linux is stable and efficient, and is often used to deploy high-concurrency applications. 2. As a development environment, Linux provides efficient command line tools and package management systems to improve development efficiency. 3. In embedded systems, Linux is lightweight and customizable, suitable for environments with limited resources.

Essential Tools and Frameworks for Mastering Ethical Hacking on LinuxEssential Tools and Frameworks for Mastering Ethical Hacking on LinuxApr 11, 2025 am 09:11 AM

Introduction: Securing the Digital Frontier with Linux-Based Ethical Hacking In our increasingly interconnected world, cybersecurity is paramount. Ethical hacking and penetration testing are vital for proactively identifying and mitigating vulnerabi

How to learn Linux basics?How to learn Linux basics?Apr 10, 2025 am 09:32 AM

The methods for basic Linux learning from scratch include: 1. Understand the file system and command line interface, 2. Master basic commands such as ls, cd, mkdir, 3. Learn file operations, such as creating and editing files, 4. Explore advanced usage such as pipelines and grep commands, 5. Master debugging skills and performance optimization, 6. Continuously improve skills through practice and exploration.

What is the most use of Linux?What is the most use of Linux?Apr 09, 2025 am 12:02 AM

Linux is widely used in servers, embedded systems and desktop environments. 1) In the server field, Linux has become an ideal choice for hosting websites, databases and applications due to its stability and security. 2) In embedded systems, Linux is popular for its high customization and efficiency. 3) In the desktop environment, Linux provides a variety of desktop environments to meet the needs of different users.

What are the disadvantages of Linux?What are the disadvantages of Linux?Apr 08, 2025 am 12:01 AM

The disadvantages of Linux include user experience, software compatibility, hardware support, and learning curve. 1. The user experience is not as friendly as Windows or macOS, and it relies on the command line interface. 2. The software compatibility is not as good as other systems and lacks native versions of many commercial software. 3. Hardware support is not as comprehensive as Windows, and drivers may be compiled manually. 4. The learning curve is steep, and mastering command line operations requires time and patience.

Is Linux hard to learn?Is Linux hard to learn?Apr 07, 2025 am 12:01 AM

Linuxisnothardtolearn,butthedifficultydependsonyourbackgroundandgoals.ForthosewithOSexperience,especiallycommand-linefamiliarity,Linuxisaneasytransition.Beginnersmayfaceasteeperlearningcurvebutcanmanagewithproperresources.Linux'sopen-sourcenature,bas

See all articles

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
3 weeks agoBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Best Graphic Settings
3 weeks agoBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. How to Fix Audio if You Can't Hear Anyone
3 weeks agoBy尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: How To Unlock Everything In MyRise
4 weeks agoBy尊渡假赌尊渡假赌尊渡假赌

Hot Tools

Dreamweaver Mac version

Dreamweaver Mac version

Visual web development tools

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

This project is in the process of being migrated to osdn.net/projects/mingw, you can continue to follow us there. MinGW: A native Windows port of the GNU Compiler Collection (GCC), freely distributable import libraries and header files for building native Windows applications; includes extensions to the MSVC runtime to support C99 functionality. All MinGW software can run on 64-bit Windows platforms.

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Integrate Eclipse with SAP NetWeaver application server.

VSCode Windows 64-bit Download

VSCode Windows 64-bit Download

A free and powerful IDE editor launched by Microsoft

PhpStorm Mac version

PhpStorm Mac version

The latest (2018.2.1) professional PHP integrated development tool