美文网首页
静动混合主机组

静动混合主机组

作者: 快去学习不然怎么去看aimer | 来源:发表于2019-11-19 22:05 被阅读0次

ansible定义主机组格式

# 单个主机ip 和这个主机的 ssh 密码
172.16.153.129  ansible_ssh_pass='ansible'

# 单个主机,指定 SSH 端口
badwolf.example.com:5309

# 也可以使用变量来指定,其中 jumper 是这个主机的别名,可以使用这个别名对其操作
jumper ansible_port=5555 ansible_host=192.0.2.50

# 主机名或者FQDN,主机名和 FQDN 必须要可以被控制主机解析
ansible

# 定义了一个 openstack 组,成员 ip 是 192.168.2.10,20,30 和 40
[openstack]
192.168.2.[10:40]

# 定义一个组,成员192.168.2.20,21,22
[computes]
192.168.2.[20:22]

# 定义一个组的变量
[openstack:vars]
ansible_ssh_pass='ansible'

# openstack组下面有个子组,子组名叫 computes,注意这个组必须在此文件中已被定义
[openstack:children]
computes

使用多个Inventory文件

注意:该Inventory文件的后缀名只能是:空、.yml、.ymal、.json

[ansible@ansible ~]$ cat /etc/ansible/Inventory/openstack
[web]
  172.17.0.4
  172.17.0.5
  172.17.0.6

[ansible@ansible ~]$ cat /etc/ansible/Inventory/hosts.yml
[nginx]
172.20.0.5

ansible.cfg

[defaults]
# some basic default values...
inventory      = /etc/ansible/Inventory

验证

bash-4.2# ansible nginx --list-hosts
  hosts (1):
    172.20.0.5

bash-4.2# ansible web --list-hosts
  hosts (3):
    172.17.0.4
    172.17.0.5
    172.17.0.6

动态Inventory

#动态获取主机组信息,主机组名及包含的IP

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import sys
import json
import argparse

def lists():
    """
    indent 定义输出时的格式缩进的空格数
    """
    dic = {}
    host_list = [ '192.168.2.{}'.format(str(i) ) for i in range(20,23) ]
    hosts_dict = {'hosts': host_list}
    dic['openstack'] = hosts_dict

    return json.dumps(dic,indent=4)

def hosts(name):
    dic = {'ansibl_ssh_pass': '12345'}

    return json.dumps(dic)

if __name__ == '__main__':
    parser = argparse.ArgumentParser()
    parser.add_argument('-l', '--list', help='host list', action='store_true')
    parser.add_argument('-H', '--host', help='hosts vars')
    args = vars(parser.parse_args())

    if args['list']:
        print( lists() )
    elif args['host']:
        print( hosts(args['host']) )
    else:
        parser.print_help()
pwd
/etc/ansible

chmod 655 host.py

ansible.cfg

[defaults]
# some basic default values...
inventory      = /etc/ansible/host.py

验证

bash-4.2# ansible openstack --list-hosts
  hosts (3):
    192.168.2.20
    192.168.2.21
    192.168.2.22

使用动静结合的主机组

以.orig, .bak, .ini, .cfg, .retry, .pyc, .pyo为结尾的文件被忽略

ansible.cfg

[defaults]
# some basic default values...
inventory      = /etc/ansible/Inventory

静态主机组为第一个实验所使用的,动态主机组为第二个实验用的,将所有Inventory文件移动到Inventory目录中,

验证

bash-4.2# ansible web --list-hosts
  hosts (3):
    172.17.0.4
    172.17.0.5
    172.17.0.6

bash-4.2# ansible openstack --list-hosts
  hosts (3):
    192.168.2.20
    192.168.2.21
    192.168.2.22

相关文章

网友评论

      本文标题:静动混合主机组

      本文链接:https://www.haomeiwen.com/subject/nmwgictx.html