python-3.x 如何在Proxmox.py动态库存中添加新组

kmpatx3s  于 4个月前  发布在  Python
关注(0)|答案(1)|浏览(127)

我使用这个库存脚本:xezpeleta/Ansible-Proxmox-inventory
它工作正常,但现在我想添加一个基于proxmox_name字段值的新组。
我在剧本里找到了要重复的台词。
我重复这个:

# Create group 'running'
            # so you can: --limit 'running'
            status = results['_meta']['hostvars'][vm]['proxmox_status']
            if status == 'running':
                if 'running' not in results:
                    results['running'] = {
                        'hosts': []
                    }
                results['running']['hosts'] += [vm]

字符串
变成这样:

# Create group 'bddservers'
            # so you can: --limit 'bddservers'
            bddservers = results['_meta']['hostvars'][vm]['proxmox_name']
            if bddservers == 'x-xxxxx-x-Bxx':
                if '.-....-.-B..' not in results:
                    results['bddservers'] = {
                        'hosts': []
                    }
                results['bddservers']['hosts'] += [vm]


创建一个仅由BDD服务器组成的组。
我想让它基于主机名服务器(proxmox_name字段),但是当我尝试模式'*B*'时,它不起作用。如果我用一个主机名服务器替换它,它就起作用了,我有一个只有我设置的主机名的bddservers组。
如何用模式替换单个主机名?命名约定是这样的:x-xxxxx-x-Bxx,当B仅用于BDD服务器时。代码是Python 3。

anhgbhbe

anhgbhbe1#

您可以在不修改库存脚本的情况下执行此操作:

- name: Add hosts to the BDD group
  add_host:
    name: "{{ inventory_hostname }}"
    groups: bddservers
  when: proxmox_name is regex('.*-.*-.*-B.*')

字符串
另外,请注意,您的原始正则表达式与您在问题中给予的示例主机名不匹配。我简化了它,以便您稍后可以使用它进行相应的检查和修改。
说到您最初打算从脚本中将主机添加到组中-您只需要将条件修改为如下所示:

import re
...
name = results['_meta']['hostvars'][vm]['proxmox_name']
  if re.fullmatch('.*-.*-.*-B.*', name):
    if 'bddservers' not in results:
      results['bddservers'] = {
        'hosts': [] 
      }
    results['bddservers']['hosts'] += [vm]

相关问题