我正在研究将升级我拥有的应用程序的剧本。升级的一部分意味着我被问到一个问题。
理想情况下,我希望能够对这些问题回答“是/否”,而不必进行任何形式的暂停或提示用户输入。
从我在网上阅读的内容来看,这绝对有可能,但是我似乎无法使它对我有用。
这是我的代码:
$post= Post::Query();
…
elseif($range == "week") {
$post= $post->where('date', <', Carbon::now()->addDays(7));
}
elseif($range == "day") {
$post= $post->where('date', '=', Carbon::today());
}
....
答案 0 :(得分:1)
您正在混合您的响应类型。如果提供列表,则不需要/不需要该问题。如果您想使问题与答案特别匹配,请使用正则表达式将问题匹配为字典的关键字。
所以,版本1:
- name: Upgrade
expect:
command: /tmp/bin/update_script.sh
environment:
JAVA_HOME: /opt/java/
responses:
Question:
- n
或版本2(检查我的正则表达式*):
- name: Upgrade
expect:
command: /tmp/bin/update_script.sh
environment:
JAVA_HOME: /opt/java/
responses:
Question:
cipher: n
我使用了Expect,但是没有使用ansible模块,那是几年前的事,我从没使用过。希望这两种方法都可以按原样工作,但请准备好进行一下调整。 ;)
祝你好运!
答案 1 :(得分:0)
您应该只使用extra_variables将问题的答案作为变量传递。这样可以避免出现提示,并允许您将变量也设置为一些默认值。
ansible-playbook playbooks/release.yml --extra-vars 'updateciphers=True updatedcipherslist=["cipher1","cipher2","cipher3"]'
->您可能需要转义双引号。 vars: 更新密码:错误
tasks:
- name: Upgrade
command: /tmp/bin/update_script.sh
environment:
JAVA_HOME: /opt/java/
when: updateciphers
with_items: "{{ updatedcipherslist }}"
答案 2 :(得分:0)
这完成了我所需要的..不幸的是,它不允许您回答“是/否”,但现在可以完成工作。
拥有更多控制权将是不错的选择,但是目前它仍是暂时的解决方法。.当我有了永久解决方案时,我会再次发布。
- name: Upgrade Starting
shell: |
yes | /tmp/bin/update_script.sh