Cloud-init: установка другого пакета на основе активного источника данных - PullRequest
0 голосов
/ 07 ноября 2019

Я пытаюсь установить 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, но мне также нужно учитывать другие источники данных.

...