I've tried this:
- name: Log into Docker registry
command: docker login --username "{{ docker_registry_username }}" --password-stdin
stdin: "{{ docker_registry_password }}"
This results in a warning and a failing command:
[WARNING]: Ignoring invalid attribute: stdin
…
Cannot perform an interactive login from a non TTY device
I've also tried this:
- name: Log into Docker registry
command: docker login --username "{{ docker_registry_username }}" --password-stdin
stdin: "{{ docker_registry_password }}"
This results in a syntax error:
ERROR! Syntax Error while loading YAML.
Does command
stdin
actually work in Ansible 2.7? If so, how am I supposed to use it?
If you want to use the
stdin
argument to thecommand
module, take a look at the docs, which show examples using other options such ascreates
, which looks like this:For your use case, you would want:
Your first attempt failed because you were setting
stdin
as a key at the task level (likewhen
orignore_errors
, etc), when you actually want it to be an argument to thecommand
module.Your second attempt failed because it wasn't valid YAML.
Sounds like you want to use the Ansible expect module. See https://docs.ansible.com/ansible/latest/modules/expect_module.html.
Hope this helps.
Why do you use command/shell to log into Docker registry? Ansible has docker_login module for that: https://docs.ansible.com/ansible/latest/modules/docker_login_module.html it's in preview, from community, but it works.
You can create vault file with sensitive data.