ANSIBLE-对问题回答“是”或“否”

ANSIBLE-对问题回答“是”或“否”,ansible,prompt,Ansible,Prompt,我正在编写一个剧本,它将升级我的一个应用程序。升级的一部分意味着我会被问到一个问题 理想情况下,我希望能够回答这些问题的是/否,而不必对用户输入进行任何暂停或提示 从我在网上看到的情况来看,这绝对是可能的,但我似乎无法让它为我工作 这是我的密码: - name: Upgrade expect: command: /tmp/bin/update_script.sh environment: JAVA_HOME: /opt/java/

我正在编写一个剧本,它将升级我的一个应用程序。升级的一部分意味着我会被问到一个问题

理想情况下,我希望能够回答这些问题的是/否,而不必对用户输入进行任何暂停或提示

从我在网上看到的情况来看,这绝对是可能的,但我似乎无法让它为我工作

这是我的密码:

  - name: Upgrade
    expect:
      command: /tmp/bin/update_script.sh 
      environment:
        JAVA_HOME: /opt/java/
      responses:
        Question:
          - Do you want to use the standard cipher suites [N]: n

您正在混合您的响应类型。如果你提供一个列表,它就不想/不需要这个问题。如果您想专门将问题与回答匹配,请使用正则表达式将问题作为字典的键进行匹配

因此,第1版:

- name: Upgrade
  expect:
    command: /tmp/bin/update_script.sh 
    environment:
      JAVA_HOME: /opt/java/
    responses:
      Question:
        - n
或版本2(检查我的正则表达式*):

我使用过expect,但没有使用ansible模块,这是几年前的事了,我从来没有经常使用它。希望这两种方法都能奏效,但要准备好玩弄它


祝你好运

您应该使用额外的变量将问题的答案作为变量传递。这将避免提示,并允许您将变量设置为某些默认值

->您可能需要转义双引号。 变量: 更新密码:False

tasks:
  - name: Upgrade
    command: /tmp/bin/update_script.sh 
    environment:
      JAVA_HOME: /opt/java/
    when: updateciphers
    with_items: "{{ updatedcipherslist }}"

这是我所需要的。。不幸的是,它不允许您回答是/否,但它现在已经完成了工作

如果能有更多的控制权就好了,但现在它可以作为临时解决办法。。当我有一个永久的解决方案,我会再次张贴

  - name: Upgrade Starting
    shell: |
      yes | /tmp/bin/update_script.sh

似乎太复杂了。。我将尝试以下方法-name:Upgrade start命令:yes |/tmp/bin/update_script.sh请参阅
如果要通过shell运行命令(例如使用、|等),则必须在命令中指定shell,例如/bin/bash-c“/path/to/something | grep else”。
此外,
expect模块是为简单场景设计的。对于更复杂的需求,考虑使用shell或脚本模块的EXCEL代码。< /C> >示例是模块文档的一部分。如果你这样做了,你可以说
是不是|…
-有趣!)这是可行的,只是遗憾我不能有更多的控制权,这是可以的,但有时我可能有3个问题要回答,我可能不想总是回答yes shell:| yes |/tmp/bin/update_script.shNo joy,它只是不想回答它正在问的问题。是否要使用新的默认设置(禁用较弱的密码套件)?(是/否)您尝试将
n
作为列表传递,但没有问题?或者这不是一个选项?如果我尝试上面的任何一个选项,它只会抛出问题并失败。。。。。。是否要使用新的默认设置(禁用较弱的密码套件)?(y/n)“]}………非常奇怪,请编辑您的问题,以包括您尝试的代码版本和实际输出,格式整齐。
tasks:
  - name: Upgrade
    command: /tmp/bin/update_script.sh 
    environment:
      JAVA_HOME: /opt/java/
    when: updateciphers
    with_items: "{{ updatedcipherslist }}"
  - name: Upgrade Starting
    shell: |
      yes | /tmp/bin/update_script.sh