доступный модуль 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
, без строки, разделенной запятыми. (Вы уже делаете это правильно)
Документация: