我正在尝试在数据源为VSPHERE(AltCloud数据源)时安装RPM软件包,而在数据源不是VSPHERE时不安装该软件包。我以为我可以做这样的事情:
datasource_list: ['Ec2', 'AltCloud', 'None']
datsource:
AltCloud:
packages:
- open-vm-tools
Ec2:
metadata_urls: ['foo.example.com']
max_wait: 2
timeout: 1
packages:
- httpd
但是不幸的是,这不起作用。完全没有安装任何软件包。
如果我将“ packages:”模块移至cloud-init文件的末尾,则必须安装软件包。
datasource_list: ['Ec2', 'AltCloud', 'None']
datsource:
AltCloud:
Ec2:
metadata_urls: ['foo.example.com']
max_wait: 2
timeout: 1
packages:
- open-vm-tools
但是这对我来说是行不通的,因为在Ec2上我不需要或不需要'open-vm-tools'。显而易见(但不可扩展)的答案是:“您为每个数据源编写一个不同的cloud-init文件。”但这引出了一个问题:“如果我必须为每个数据源编写一个单独的文件,为什么cloud-init有一个'datasource_list'参数来告诉它搜索的位置和顺序?”
很遗憾,如果我不在Ec2上,则metadata_urls:将会失败,并从Ec2移至AltCloud数据源。但是为什么我不能在datasource:节中指定“ packages:”(以及其他),而不是在末尾指定(不缩进)?
是否有其他方法可以使我逃脱?
我在使用AltCloud的VMware上运行,并且确实可以使用AltCloud,但是我还需要考虑其他数据源。