如何使用命令标准输入的Ansible?(How to use command stdin in An

2019-09-30 01:26发布

我试过这样 :

- 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工作? 如果是这样,我怎么使用它?

Answer 1:

如果你想使用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作为在任务级别的关键(如whenignore_errors等),当你真正希望它是一个参数的command模块。

你的第二次尝试失败,因为它是无效的YAML。



Answer 2:

为什么要使用命令/壳登录到码头工人注册表? Ansible已经docker_login模块为: https://docs.ansible.com/ansible/latest/modules/docker_login_module.html它在预览,从社区,但它的作品。

您可以创建敏感数据仓库的文件。



Answer 3:

听起来像是你要使用的Ansible期待模块。 见https://docs.ansible.com/ansible/latest/modules/expect_module.html 。

希望这可以帮助。



文章来源: How to use command stdin in Ansible?
标签: ansible