• ansible组件——Inventory


    当你希望通过ansible来配置管理一台的机器的时候,你只需要将这台机器的ip写入到inventory组件里面。
    一般inventory默认的地址是:
      inventory = /etc/ansible/hosts

    1.定义主机和主机组

    一般ansible默认的配置文件是/etc/ansible/ansible.cfg,
    主机信息配置文件是/etc/ansible/hosts.
    如果机器数量不多,你只需要将ip以及密码写入到hosts文件里面,这样就可以使用了

     

    如果你是用的是密钥登录,那么直接下面这样就可以了:

    关于如何通过密钥来无密码登录,可以参考博客:https://www.cnblogs.com/yangmingxianshen/p/10159539.html

    在最新版本中,默认是适用密钥来登录,所以需要将host_key_checking = False,也就是不通过密钥认证。
    但是在生产环境中,机器的数量非常多,我们希望进行一个分组管理:

    上面配置了servers这个大组,还有webservers和dbservers这两个小组,之所以这样配置,是有些操作希望所有的机器都可以配置到。
    然乎就有下面这几种操作方式:

    方式1:直接操作ip

    方式2:操作组名

    操作小组也可以:

    -m:指定模块名;
    -a:指定模块的参数;
    这样就可以区别对待了。

    2.多个Inventory

    如果你面对的机器群的量非常大,一个hosts配置这些机器信息,那么这个文件最后将将非常大。
    此时你可以将hosts文件进行拆分,这样更加方便。
    此时你在ansible.cfg需要指定inventory是一个目录:
      inventory = /etc/ansible/inventory
    目录结构:

    配置内容:

    这里你定义的多个hosts文件,不论你定义什么名字都可以,ansible会直接扫描inventory目录下所有文件中的组:

    3.动态Inventory

      在实际应用中会部署大量的主机列表,如果手动维护将是一件非常繁琐的事情。
    Ansible还支持动态的Inventory,也就是Ansible所有的Inventory文件里的主机列表和变量信息都可以从外部拉取。
    ansible会根据脚本信息,然后选择对应的方式执行脚本,动态获取主机信息。
    此时我们只需要将inventory的值设置成一个脚本就可以了。
      inventory = /etc/ansible/pro.py
    对于这个脚本的编写会有两个要求,必须支持两个参数:
      --list或者-L:显示所有主机和主机组的信息,JSON格式。

      

      --host或者-H:返回某台主机的信息,JSON格式。

      

    脚本信息:

    #!/usr/bin/python
    #coding:utf-8
    
    import sys
    import json
    
    hosts = {"hosts":["129.28.86.57","148.70.122.28"]}
    r = {}
    r["servers"] = hosts
    argv_1 = None
    
    try:
        argv_1 = sys.argv[1]
    except IndexError as e:
        raise ValueError("请输入参数")
    
    
    if argv_1 and argv_1 in ["--list","-L","--host","-H"]:
        if argv_1 in ["--list","-L"]:
            print(json.dumps(r))
        else:
            print(json.dumps({"ansible_ssh_pass":"467661568cx."}))
    else:
        print("please enter --list or -L or --host or -H")

    最后我们就可以动态操作服务器:

    通过-i指定脚本也可以:

    4.Inventory内置参数

    Ansible中有一些内置参数,比如我们之前看到的ansible_ssh_pass.

  • 相关阅读:
    oracle 索引
    oracle 子查询因子化 浅谈(with的使用)
    大数据的遐想
    数据挖掘(算法概要链接)
    orcale 修改字段属性
    sql 对一张表进行按照不同条件进行多次统计
    oracle dblink
    oracle作业
    SQL效率的几点心得
    提高SQL语句的性能
  • 原文地址:https://www.cnblogs.com/yangmingxianshen/p/12656195.html
Copyright © 2020-2023  润新知