Я использую shell
модуль:
- name: trust gpg key
become: true
shell: echo -e '5\ny\n' | gpg --homedir /root/.gnupg --command-fd 0 --edit-key 1401d4d21e93 trust
Но это жалуется на
gpg: невозможно открыть '/ dev / tty': нет такого устройства или адреса
Команда gpg работает, когда я запускаю ее вручную. Итак, проблема, похоже, в echo
в трубу.
Как это исправить?
Возникшая ошибка вызвана конвейерная обработка.
Конвейерная обработка, если она поддерживается подключаемым модулем подключения, сокращает количество сетевых операций, необходимых для выполнения модуля на удаленном сервере, за счет выполнения многих модулей Ansible без фактической передачи файлов.
Вы можете попробовать установить:
export ANSIBLE_PIPELING=True
export ANSIBLE_SSH_PIPELING=True
Но я думаю, вы можете столкнуться с такой оговоркой:
Однако это (конвейерная обработка) конфликтует с повышением привилегий (стать). Например, при использовании операций «sudo:» вы должны сначала отключить «requiretty» в / etc / sudoers на всех управляемых хостах, поэтому он отключен по умолчанию. Эта опция отключена, если включен ANSIBLE_KEEP_REMOTE_FILES.
Чтобы обойти все это, вы можете создать файл для траста и использовать gpg --import-ownertrust
команда.
Ссылка
Конфигурация Ansible
GPG import-ownertrust
Инструкции по импорту и экспорту GPG