静态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 2018

Ansible组件之inventory主机清单的更多相关文章

  1. Ansible 小手册系列 五(inventory 主机清单)

    Ansible 可同时操作属于一个组的多台主机,组和主机之间的关系通过 inventory 文件配置. 默认的文件路径为 /etc/ansible/hosts 主机清单示例 mail.example. ...

  2. Ansible 系列之 Inventory 资源清单介绍

    一.Inventory 库存清单文件 1.Inventory 作用 Ansible 可以在同一时间针对多个系统设施进行管理工作.它通过选择Ansible 资源清单文件中列出的系统,该清单文件默认是在/ ...

  3. Ansible安装部署和常用命令,及其主机清单inventory(二)

    1.ansible的安装方式 1.1使用yum源安装 yum install ansible -y 1.2使用rpm包安装 https://dl.fedoraproject.org/pub/epel/ ...

  4. 【Ansible 文档】【译文】主机清单文件

    Inventory 主机清单文件 Ansible 可以对你的基础设施中多个主机系统同时进行操作.通过选择在Ansible的inventory列出的一部分主机来实现.inventory默认保存在/etc ...

  5. sudo提权,ansible批量给所有主机创建系统账户,授权

    sudo(superuser or another do)让普通用户可以以超级管理员或其他人的身份执行命令. sudo基本流程如下: 1.管理员需要先授权(修改/etc/sudoers文件) 2.普通 ...

  6. 细说Ansible主机清单inventory

    Ansible是一个系列文章,我会尽量以通俗易懂.诙谐幽默的总结方式给大家呈现这些枯燥的知识点,让学习变的有趣一些. Ansible系列博文直达链接:Ansible入门系列 前言 关于Ansible是 ...

  7. (2)ansible主机清单文件inventory

    1)inventory作用 作用:通常用于定义要管理主机的认证信息,例如ssh登录用户名,密码等相关信息 缺省文件:/etc/ansible/hosts 2)定义主机组方式 #vim /etc/ans ...

  8. Ansible主机清单Inventory文件hosts

    Ansible主机清单Inventory文件hosts 发表于 2017-05-14 | 分类于 运维相关 , Ansible | | 阅读次数 4638 | 字数统计 1,442 | 阅读时长预计 ...

  9. Ansible之 Inventory 资源清单介绍

    一.Inventory 库存清单文件 1.Inventory 作用 Ansible 可以在同一时间针对多个系统设施进行管理工作.它通过选择Ansible 资源清单文件中列出的系统,该清单文件默认是在/ ...

随机推荐

  1. get与load方法

    get()与load()的共同点:根据id加载对象get()与load()的区别:get():若加载的对象不存在,则返回nullload():若加载的对象不存在,则抛出异常

  2. IDEA kotlin 配置

    修改 idea 安装目录 bin 目录 下 idea.properties   文件修改idea.max.intellisense.filesize=50000 避免proto 生成的java文件不被 ...

  3. centos7 升级python2.7 到python3.6(Centos7 安装Anaconda)

    Anaconda 下载 https://www.anaconda.com/download/#linux 下载文件 Anaconda3-5.2.0-Linux-x86_64.sh bash Anaco ...

  4. Process ProcessThread Thread

    Process ProcessThread: Process and ProcessThread objects have a ProcessorAffinity property of IntPtr ...

  5. grep匹配字符串出现的次数

    背景:想要匹配一个html页面中某个字符出现的次数   遇到的问题: 用grep -c “xxx字符”得到的是行数,如果一行中有多个匹配到的字符,只会算作一个       解决方法: 使用grep - ...

  6. Maven国内镜像-阿里云

    国外的maven下载速度堪忧,大部分国内网络访问都很慢国内的阿里云同样提供了maven的文件镜像使用:1.在maven的setting.xml加入下段代码即可使用阿里云的maven镜像 <mir ...

  7. ECMAScript5新特性之isSealed、seal

    封闭对象后: 1 不能增加属性. 2 不能删除属性. 3 可以修改属性.(赋值) 4 不能修改属性描述符.(抛异常) var fruit = { name : '苹果', desc : '红富士' } ...

  8. 使用一般处理程序(IHttpHandler)制作图片水印

    做网站的时候经常需要将图片加上网站名称的水印.这样做可以使别人转载图片的时候出现图片出处 ,利于网站宣传.但是如果利用ps来一个一个加水印工作量非常浩大,而且修改了之后就没法还原.这 篇教程教大家利用 ...

  9. [leetcode]347. Top K Frequent Elements 最高频的前K个元素

    Given a non-empty array of integers, return the k most frequent elements. For example,Given [1,1,1,2 ...

  10. session以及分布式服务器session共享

    一.session的本质 http协议是无状态的,即你连续访问某个网页100次和访问1次对服务器来说是没有区别对待的,因为它记不住你. 那么,在一些场合,确实需要服务器记住当前用户怎么办?比如用户登录 ...