我试过这样 :
- name: Log into Docker registry
command: docker login --username "{{ docker_registry_username }}" --password-stdin
stdin: "{{ docker_registry_password }}"
这导致一个警告,一个失败的命令:
[警告]:忽略无效的属性:标准输入
...
无法从非TTY设备进行交互式登录
我也试过这样 :
- name: Log into Docker registry
command: docker login --username "{{ docker_registry_username }}" --password-stdin
stdin: "{{ docker_registry_password }}"
这将导致一个语法错误:
错误! 语法错误,同时加载YAML。
并command
stdin
实际Ansible 2.7工作? 如果是这样,我怎么使用它?
如果你想使用stdin
参数的command
模块,看看该文档 ,这显示了使用其他选项,如实例creates
,它看起来像这样:
# You can also use the 'args' form to provide the options.
- name: This command will change the working directory to somedir/ and will only run when /path/to/database doesn't exist.
command: /usr/bin/make_database.sh arg1 arg2
args:
chdir: somedir/
creates: /path/to/database
为了您的使用情况下,你会想:
- name: Log into Docker registry
command: docker login --username "{{ docker_registry_username }}" --password-stdin
args:
stdin: "{{ docker_registry_password }}"
你的第一次尝试失败,因为你设置stdin
作为在任务级别的关键(如when
或ignore_errors
等),当你真正希望它是一个参数的command
模块。
你的第二次尝试失败,因为它是无效的YAML。
为什么要使用命令/壳登录到码头工人注册表? Ansible已经docker_login模块为: https://docs.ansible.com/ansible/latest/modules/docker_login_module.html它在预览,从社区,但它的作品。
您可以创建敏感数据仓库的文件。
听起来像是你要使用的Ansible期待模块。 见https://docs.ansible.com/ansible/latest/modules/expect_module.html 。
希望这可以帮助。