Ansible组件之inventory主机清单
静态inventory
所有的主机信息都存放在Ansible的inventory组件里面,默认Ansible的inventory是一个静态的ini格式的文件/etc/ansible/hosts,当然还可以通过ANSIBLE_HOSTS环境变量指定或者运行ansible和ansible-playbook的时候用-i参数临时设置。
a、中括号中的名字代表组名,可以根据自己的需求将庞大的主机分成具有标识的组。
b、主机(host)部分可以使用域名、主机名、IP地址表示;当然使用前两者时,也需要主机能反解析到相应的IP地址,一般此类配置中多使用IP地址。
定义主机和主机组
[docker]
172.16.1.11
[docker:vars]
ansible_ssh_pass='123456'
[ansible:children]
docker
inventory内置参数
ansible_ssh_host				# 要连接的主机名
ansible_ssh_port				# 端口号,默认22
ansible_ssh_user				# ssh连接时默认使用的用户名
ansible_ssh_pass				# ssh连接时的密码
ansible_sudo_pass				# 使用sudo连接用户时的密码
ansible_ssh_private_key_file	# 秘钥文件如果不想使用ssh-agent管理时可以使用此选项
ansible_shell_type				# shell类型,默认sh
ansible_connection				# SSH连接类型:local、ssh、paramiko在ansible 1.2之前默认paramiko
ansible_python_interpreter		# 用来指定Python解释器的路径,同样可以指定ruby、Perl的路径
多个inventory列表
配置支持多个inventory列表
首先需要在Ansible的配置文件ansible.cfg中hosts的定义改成一个目录,比如:hostfile = /etc/ansible/inventory,然后在该目录中放入多个hosts文件。
tree inventory/
inventory/
├── docker
└── hosts
如上所示,不同的文件可以存放不同的主机。
也可以在ansible命令的时候用-i参数指定该,目录即可;
ansible -i /etc/ansible/inventory all -a "who"
172.16.1.10 | SUCCESS | rc=0 >>
root     tty1         2018-04-07 02:19
root     pts/0        2018-04-06 18:50 (10.0.0.253)
root     pts/1        2018-04-06 22:30 (172.16.1.5)
172.16.1.11 | SUCCESS | rc=0 >>
root     tty1         2018-04-07 02:21
root     pts/0        2018-04-06 18:50 (10.0.0.253)
root     pts/1        2018-04-06 22:30 (172.16.1.5)
动态inventory
动态inventory的意思就是所有的变量可以从外部获取,也就是说我们可以从CMDB一级zabbix系统拉取所有的主机信息然后使用Ansible进行管理。易用inventory只需要把ansible.cfg文件中的inventory定义值改成一个可执行脚本即可。
编写一个inventory.py文件动态获取主机信息
#!/usr/bin/env python
# coding=utf-8
import json
ip1 = ["172.16.1.10"]
ip2 = ["172.16.1.11"]
g1= "test1"
g2 = "test2"
hostdata = {g1:{"hosts":ip1},g2:{"hosts":ip2}}
print json.dumps(hostdata,indent=4)
运行该python脚本:
/usr/bin/python inventory.py 
{
    "test1": {
        "hosts": [
            "172.16.1.10"
        ]
    },
    "test2": {
        "hosts": [
            "172.16.1.11"
        ]
    }
}
该脚本必须要有可执行权限才可以被ansible命令调用:
chmod +x inventory.py
运行ansible命令并调用该python脚本:
ansible -i inventory.py all -a "date" -k
SSH password:
172.16.1.11 | SUCCESS | rc=0 >>
Sat Apr  7 01:04:12 CST 2018
172.16.1.10 | SUCCESS | rc=0 >>
Sat Apr  7 01:04:12 CST 2018Ansible组件之inventory主机清单的更多相关文章
- Ansible 小手册系列 五(inventory 主机清单)
		Ansible 可同时操作属于一个组的多台主机,组和主机之间的关系通过 inventory 文件配置. 默认的文件路径为 /etc/ansible/hosts 主机清单示例 mail.example. ... 
- Ansible 系列之 Inventory 资源清单介绍
		一.Inventory 库存清单文件 1.Inventory 作用 Ansible 可以在同一时间针对多个系统设施进行管理工作.它通过选择Ansible 资源清单文件中列出的系统,该清单文件默认是在/ ... 
- Ansible安装部署和常用命令,及其主机清单inventory(二)
		1.ansible的安装方式 1.1使用yum源安装 yum install ansible -y 1.2使用rpm包安装 https://dl.fedoraproject.org/pub/epel/ ... 
- 【Ansible 文档】【译文】主机清单文件
		Inventory 主机清单文件 Ansible 可以对你的基础设施中多个主机系统同时进行操作.通过选择在Ansible的inventory列出的一部分主机来实现.inventory默认保存在/etc ... 
- sudo提权,ansible批量给所有主机创建系统账户,授权
		sudo(superuser or another do)让普通用户可以以超级管理员或其他人的身份执行命令. sudo基本流程如下: 1.管理员需要先授权(修改/etc/sudoers文件) 2.普通 ... 
- 细说Ansible主机清单inventory
		Ansible是一个系列文章,我会尽量以通俗易懂.诙谐幽默的总结方式给大家呈现这些枯燥的知识点,让学习变的有趣一些. Ansible系列博文直达链接:Ansible入门系列 前言 关于Ansible是 ... 
- (2)ansible主机清单文件inventory
		1)inventory作用 作用:通常用于定义要管理主机的认证信息,例如ssh登录用户名,密码等相关信息 缺省文件:/etc/ansible/hosts 2)定义主机组方式 #vim /etc/ans ... 
- Ansible主机清单Inventory文件hosts
		Ansible主机清单Inventory文件hosts 发表于 2017-05-14 | 分类于 运维相关 , Ansible | | 阅读次数 4638 | 字数统计 1,442 | 阅读时长预计 ... 
- Ansible之 Inventory 资源清单介绍
		一.Inventory 库存清单文件 1.Inventory 作用 Ansible 可以在同一时间针对多个系统设施进行管理工作.它通过选择Ansible 资源清单文件中列出的系统,该清单文件默认是在/ ... 
随机推荐
- URLconf
			URLconf 浏览者通过在浏览器的地址栏中输入网址请求网站,对于Django开发的网站,由哪一个视图进行处理请求,是由url匹配找到的 配置 在test3/settings.py中通过ROOT_UR ... 
- ubuntu修改运行级别方法
			Ubuntu系统设置启动级别的问题,因自己以前遇到过,故做过笔记记录了下来:Ubuntu.Debian系列与RedHat.CentOS启动级别含义有所区别:Ubuntu系列运行级别定义如下:0 – H ... 
- django提交post请求
			在做post的时候,view.py用到了下面的方法,如果是POST的method,就通过request.POTST['XX']获得html中name为XX的值,然后将值save到数据库里 models ... 
- X_PU
			通俗易懂告诉你CPU/GPU/TPU/NPU...XPU都是些什么鬼?[附把妹秘籍] 2017-10-27 19:54移动芯片/谷歌 作者:iot101君 物联网智库 原创 转载请注明来源和出处 现在 ... 
- 转---tcp三次握手四次挥手syn fin......
			http://blog.chinaunix.net/uid-22312037-id-3575121.html转自 一.TCP报文格式 TCP/IP协议的详细信息参看<TCP/IP协 ... 
- 【校招面试 之 C/C++】第28题 C++ 内存泄漏的检查
			1.memwatch的使用 (1)首先去官网上下载源码: http://www.linkdata.se/sourcecode/memwatch/ 解压得到memwatch.c以及memwatch.h两 ... 
- 【校招面试 之 C/C++】第27题 C++ 智能指针(三)之 unique_ptr
			auto_ptr<string> p1(new string ("auto") : //#1 auto_ptr<string> p2; //#2 p2 = ... 
- 把html标签转换为实体  dhtmlspecialchars
			把html标签转换为实体/*可以处理数组中的代码,他们的作用是可以把一个数组或字符串中的字符转化为html实体,可以防止页面的跨站问题,那么我们看到他的转换就是将'&','"','& ... 
- DataTable学习笔记---排序细则、列隐藏
			耽误了好几天,因为要做一个嵌入式的实验-android内核编译与裁剪,很久之前装的wubi不知道为什么运行出错了,然后看着当前的win7系统觉得有点讨厌了,也是因为快1年半没装机了,所以就重新装机了, ... 
- Spring框架的事务管理相关的类和API
			1. PlatformTransactionManager接口 -- 平台事务管理器.(真正管理事务的类).该接口有具体的实现类,根据不同的持久层框架,需要选择不同的实现类! 2. Transacti ... 
