Похоже, вы неправильно используете Ansible Vault.
В документации Ansible Vault указано:
Ansible Vault is a feature of ansible that allows you to keep sensitive data such as passwords or keys in encrypted files, rather than as plaintext in playbooks or roles.
Вы не можете шифровать файлы непосредственно на удаленном хосте.
Что вы можете сделать, так это зашифровать файл на локальном хосте, а затем скопировать зашифрованный файл с помощью модуля copy
на удаленный хост. По умолчанию модуль copy
расшифровывает файл, но вы можете перезаписать его, указав decrypt: no
. Для получения дополнительной информации см. документацию по модулю копирования .
ssh
и его двоюродный брат sftp
, потому что они написаны для обеспечения безопасности (в конце концов, это прямо в названии )по замыслу не разрешать ввод паролей в командной строке, так как это очень просто способ утечки ваших паролей в файл журнала с открытым текстом, такой как история оболочки.
Если вы хотите включить безголовую, но все же аутентифицированную передачу файлов, создайте пару открытый/закрытый ключ с ssh-keygen
, но укажите пустую фразу-пароль. Затем вы можете использовать эту пару ключей для аутентификации для вашей транзакции sftp
после того, как открытый ключ будет установлен на удаленном хосте.
Если вы действительно хотите использовать sftp
, вам также придется отправить команды на sftp
, которые вы обычно вводите в интерактивной подсказке. Было бы проще использоватьscp
:
$ scp username@remotehost.example.com /path/to/my/file./file