• Ansible 动态配置文件


    动态配置文件

    即从外部获取配置文件,在把ansible.cfg文件中inventory的定义值改成一个执行脚本
    脚本必须支持两个参数:
    • --list或者-l,显示所有的主机以及主机组的信息(JSON格式)。
    • --host或者-H,这个参数后面需要指定一个host,运行结果会返回这台主机的所有信息(包括认证信息、主机变量等),也是JSON格式。

    1、脚本

    复制代码
    vim /tmp/p.py
    #!/usr/bin/python
    import sys
    import json
    import argparse
    def lists():
      D = {}
      L=[ "10.240.1.13", "10.240.1.14","10.240.1.15" ]
      hosts={'hosts': L}
      D['docker'] = hosts
      return json.dumps(D,indent=4)
    def hosts(name):
      r = {'ansible_ssh_pass': 'xxxx'}
      return json.dumps(r)
    if __name__ == '__main__':
      parser = argparse.ArgumentParser()
      parser.add_argument('-l', '--list', help='hosts 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()
        
    [root@han2 ~]# python /tmp/p.py --list
    {
        "docker": {
            "hosts": [
                "10.240.1.103", 
                "10.240.1.104", 
                "10.240.1.105"
            ]
        }
    }
    复制代码

    2、修改配置文件

    vim /etc/ansible/ansible.cfg 
    inventory      = /tmp/p.py

    3、使用动态配置

    复制代码
    [root@han2 ~]# python /tmp/p.py --host 10.240.1.103
    {"ansible_ssh_pass": "123.com"}
        
    [root@han2 ~]# ansible all -m ping
    10.240.1.103 | SUCCESS => {
        "changed": false, 
        "ping": "pong"
    }
    10.240.1.104 | SUCCESS => {
        "changed": false, 
        "ping": "pong"
    }
    10.240.1.105 | SUCCESS => {
        "changed": false, 
        "ping": "pong"
    }    
    复制代码
  • 相关阅读:
    实验八 进程间通信
    实验七 信号
    实验六 进程基础
    实验五 shell脚本编程
    实验四 Linux系统C语言开发环境学习
    实验三 linux系统用户管理及VIM配置
    实验二 Linux系统简单文件操作命令
    实验一 linux系统与应用准备
    myatbis的一个好的封装
    php上传微信素材
  • 原文地址:https://www.cnblogs.com/hanqian/p/7541955.html
Copyright © 2020-2023  润新知