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