当前位置: 首页 > 面试题库 >

在Ansible中转义双花括号

壤驷英叡
2023-03-14
问题内容

如何在Ansible 1.9.2中转义双花括号?

例如,如何在以下shell命令中转义大括号?

- name: Test 
  shell: "docker inspect --format '{{ .NetworkSettings.IPAddress }}' instance1"

问题答案:

这是一个非常干净和Ansible的本机解决方法,不依赖于docker --inspect花括号。我们假设之前我们刚刚使用 Ansible
docker模块
引用了一个容器:

- name: query IP of client container
  shell: "docker exec {{ docker_containers[0].Id }} hostname -I"
  register: _container_query

- name: get IP of query result
  set_fact:
    _container_ip: "{{ _container_query.stdout | regex_replace('\\s','') }}"

现在,在Variable中具有Docker容器的IP
_container_ip。我还在我的文章《与Docker融为一体的婚姻》中发布了此变通办法。

[更新2015-11-03]删除了容器查询标准输出的空格。

[Update
2015-11-04]顺便说一句,官方的Ansible存储库中有两个请求请求,通过恢复Docker模块返回的事实,该解决方案变得不必要。因此,您可以通过来访问Docker容器的IP
docker_containers[0].NetworkSettings.IPAddress。因此,请为这些拉取请求投票:

  • 修复了破碎的事实#1457
  • 泊坞窗模块:修复f38186c和80aca4b#2093引入的回归


 类似资料:
  • 问题内容: 我想在Java MessageFormat中输出一些花括号。例如,我知道以下内容不起作用: 有没有一种方法可以逃避“ return {2}”周围的花括号? 问题答案: 您可以将它们放在单引号内,例如 有关更多详细信息,请参见此处。

  • 问题内容: 我对这个尖角世界是陌生的,我对使用双花括号{{}}和单花括号{}感到困惑,或者有时不使用花括号来包含指令中的表达式 问题答案: {{}}-双大括号: 是Angular表达式,当您希望将内容编写为HTML时非常方便: 不要在已经是表达式的地方使用它们! 例如,该指令将引号之间的任何内容都视为一个表达式: {}-大括号: 我们知道JavaScript代表对象。这里也没有什么不同: 使用一些

  • 问题内容: 我正在尝试为模板创建模板,如下所示: 我想保留三括号,但是将双括号替换为传入的JSON。任何人都知道无需编写后处理JS代码即可做到这一点的最佳方法,如果没有,那么是否有一个不错的nodeJS模板引擎可用于此场景类型? 问题答案: 您可以将定界符切换到与三重胡须不冲突的位置,例如erb样式的标签: 请注意,您可以在整个模板中执行任意多次。任何时候遇到冲突时,请选择一组新的定界符:)

  • 问题内容: 我想对带有双引号的关键字进行grep操作。举一个简单的例子: 那不匹配。我该如何解决? 问题答案: 问题是您没有正确转义输入字符串,请尝试: 或者,您可以在单引号内使用不转义的双引号: 尽管第二种方法阻止您将命令嵌套在另一组单引号(例如)中,但是您会更清楚地了解到这是一个优先事项。

  • 问题内容: 我需要运行以下命令: 所以我执行: 它失败,并显示以下错误: 在命令行中执行命令时,命令起作用。为什么会发生这种情况?我该如何转义那些双引号以防止发生此错误? 问题答案: 当执行给定命令行时,shell将其解析为一组命令行参数,这些参数实际上是: shell解释的参数中的多余引号,而不是传递给基础程序。因此,当使用Go执行相同的程序时,直接在其中传递参数列表,则应省去那些多余的引号。

  • 问题内容: 如您所知,角形和细枝形都有共同的控制结构-双花括号。如何更改Angular的默认值? 我知道我可以在Twig中做到这一点,但是在某些项目中,我只能做到JS。 问题答案: 您可以使用service 更改开始和结束插值标签。一个方便的地方是在模块初始化时。 https://docs.angularjs.org/api/ng/provider/$interpolateProvider