доступный модуль apt-key с петлей

Я настраиваю систему, которая требует добавления нескольких ключей GPG. Я пытаюсь упростить процесс и следовать принципам DRY.

У меня есть подходящие пакеты, устанавливаемые из списка vars, например:

      - name: Install packages
  apt: name={{ apt_packages }}

Где мой выглядит так:

      apt_packages:
  - tilix
  - terraform
  - ansible
  - opera

Это работает, потому что apt модуль принимает входные данные, разделенные запятыми, и анализирует соответственно.

Поэтому я пытаюсь добиться аналогичного процесса при использовании apt_keyмодуль, но я не могу заставить его работать. Вот несколько моих попыток:

      - name Add keys
  apt_key:
    url: url="{{ items }}"
    loop: "{{ gpg_keys }}"
    state: present

а также

      - name: Add GPG Keys
  apt_key:
    url: url="{{ gpg_keys }}"
    state: present

Оба выдают разные ошибки.

Можно ли сделать что-то подобное с помощью модуля apt-key? Очевидно, я стараюсь избегать отдельного вызывающего абонента для каждого ключа, который я хочу добавить, поскольку будет много ключей, и я хотел бы иметь возможность добавлять дополнительные ключи позже, просто добавляя список в vars.yml.

1 ответ

Решение

В вашей задаче есть несколько мелких ошибок.
Правильный способ таков:

      - name: Add keys
  apt_key:
    url: "{{ item }}"
    state: present
  loop: "{{ gpg_keys }}"
  • у вас уже есть ключ, поэтому добавляйте url= это неверно
  • loop является аргументом задачи, а не модуля, поэтому он должен иметь отступ до уровня apt_key (в отличие url что является аргументом модели)

Примечания:

  • Вам также необходимо убедиться, что gpg_keys содержит список, похожий на apt_packages.
  • В name параметр apt принимает список, как вы правильно определили в своем vars.yml, без строки, разделенной запятыми. (Вы уже делаете это правильно)

Документация:

Другие вопросы по тегам