Я пытаюсь установить RPM-пакет, когда источником данных является VSPHERE (AltCloud datasoure), и НЕ установить этот пакет, если источником данных не является 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
Но это не сработает для меня, потому что я не хочу или не нуждаюсь в 'open-vm-tools', когда я нахожусь на Ec2. Очевидный (но не масштабируемый) ответ: «Вы пишете отдельный файл облака для каждого источника данных». Но это приводит к вопросу: «Если мне нужно написать отдельный файл для каждого источника данных, почему cloud-init имеет параметр« datasource_list », который указывает ему, где и в каком порядке искать?»
Очевидно,, если я не на Ec2, то metadata_urls: потерпит неудачу и перейдет от Ec2 к источнику данных AltCloud. Но почему я не могу указать «пакеты:» (среди прочих) в разделе «источник данных:», а не (без отступа) в конце?
Есть ли другой способ сделать это, что ускользает от меня?
Я использую AltCloud на VMware и у меня работает AltCloud, но мне также нужно учитывать другие источники данных.