我们有一组服务器,它们在应用程序的不同实例之间共享,并且希望它们的列表是一个单独的文件,以及其他-特定于实例的清单-包括。 / p>
(我知道,这可以通过 dynamic 库存完成,但是这些都是代码,我们希望我们的服务器列表保留 data ,可以这么说。 )
使用INI库存,这是不可能的,但是使用YAML-库存,这是非常接近的。例如,this answer显示了如何通过将!include
的处理程序添加到Python的YAML解析器来完成此操作。然后可以写:
all:
group1:
host1:
host2:
sharedservers: !include shared-servers.yaml
一个人如何才能将此功能添加到自己的Ansible存储库中-最好不实施一个全新的清单插件(尽管可以从Ansible的现有存储插件继承)?
答案 0 :(得分:2)
首先,问题中的示例清单不尊重可使用清单的架构,因此将被拒绝解析。
现在要回答您的问题,您只需一次使用几个库存即可。这是一个简单的示例:
我创建了3个Yaml库存文件:
inventories/hosts.yml
---
all:
children:
group1:
hosts:
host1:
host2:
inventories/otherhosts.yml
---
all:
children:
group2:
hosts:
hostA:
hostB:
inventories/shared.yml
---
all:
children:
sharedservers:
hosts:
host3:
host4:
从那里开始,很容易找到所有需要的主机:
ansible -i inventories/ all --list-hosts
hosts (6):
host1
host2
hostA
hostB
host3
host4
在这种情况下,这等效于在单独的-i
选项中调用每个yaml文件
ansible -i inventories/hosts.yml \
-i inventories/otherhosts.yaml -i inventories/shared.yml all --list-hosts
ansible -i inventories/hosts.yml -i inventories/shared.yml all --list-hosts
hosts (4):
host1
host2
host3
host4
ansible -i inventories/otherhosts.yml -i inventories/shared.yml all --list-hosts
hosts (4):
hostA
hostB
host3
host4
答案 1 :(得分:1)
您可以利用Ansible中已有的功能
使用清单目录,您可以指定所有清单文件所在的文件夹,并且它们将按字母顺序一一列出。
您可以使用以下任一资源来使用多个广告资源:
private void Btn_valider_Click(object sender, EventArgs e)
{
//Création de l'objet
Personne contact = new Personne(Prenom, Nom, Age, dateNaissanceStr, isMan, notesStr, pathImage, mail, mail2, tel, telFix,
site, rue, ville, numero, codePostal, departement);
//Sauvegarde l'objet
Stream fichier = File.Create(@"contact.dat");
BinaryFormatter serializer = new BinaryFormatter();
serializer.Serialize(fichier, contact);
fichier.Close();
this.Close();
}
catch
{
MessageBox.Show("Erreur.");
}
}
}
}
选项-i
环境变量,并以逗号分隔的清单路径列表(目录或文件)ANSIBLE_INVENTORY
中的inventory
选项与上述操作相同。请参见docs。
我怀疑以上内容将无法满足您的需求。与修改pyyaml和ansible方式相比,最好稍微修改包装器脚本和项目的文件结构。 /intro_inventory.html?highlight=库存目录#using-multiple-inventory-sources)以获取更多信息。