小编ade*_*zim的帖子

通过(python)查询ansible全局组变量

我正在尝试查询Ansible中设置的全局组变量.我似乎得到一个空字典,我不知道我还能做什么.我的代码看起来像这样:

def __init__(self, inventory_path=None):
    self.loader = DataLoader()
    self.variable_manager = VariableManager()
    self.inventory = Inventory(loader=self.loader, variable_manager=self.variable_manager, host_list=inventory_path)
    self.variable_manager.set_inventory(self.inventory)
Run Code Online (Sandbox Code Playgroud)

然后,当我尝试获得如下的组变量:

    inventory_asg_groups = filter(lambda g: 'asg' in g, self.inventory.groups)
    for group in inventory_asg_groups:
        print(self.inventory.get_group_vars(self.inventory.get_group(group)))
Run Code Online (Sandbox Code Playgroud)

我得到一个空字典:

{}
Run Code Online (Sandbox Code Playgroud)

当我做一个:

    print(self.inventory.localhost.vars)
Run Code Online (Sandbox Code Playgroud)

我明白了:

{'ansible_python_interpreter': '/usr/local/opt/python/bin/python2.7', 'ansible_connection': 'local'}
Run Code Online (Sandbox Code Playgroud)

我知道正在加载库存,因为我列出了库存中的所有组.如何通过python ansible api 获取group_vars/all中列出的变量?

python ansible

11
推荐指数
1
解决办法
1308
查看次数

功能完成执行后,仅打印打印

我有这个代码:

def get_endpoint(type):
    return "%s/%s.json" % (v2_endpoint,type)

def get_entities(type,endpoint=None,entities=None):
    if not endpoint:
        endpoint=get_endpoint(type)
        entities=[]
    r=requests.get(endpoint,headers=header)
    entities.extend(r.json()[type])
    if not 'next' in r.links:
        return entities
    else:
        return get_entities(type,r.links['next']['url'],entities)

print "Fetching info from New Relic....",
servers = get_entities('servers')
applications = get_entities('applications')
print "Done."
Run Code Online (Sandbox Code Playgroud)

我注意到它在处理这些函数之前不会打印第一个和最后一个打印语句.我猜想,预期的行为.

那么,如何在开始处理函数之前打印第一行?

python function

6
推荐指数
1
解决办法
1817
查看次数

标签 统计

python ×2

ansible ×1

function ×1