一尘不染

在Ansible中转义双花括号

docker

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

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

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

阅读 1265

收藏
2020-06-17

共1个答案

一尘不染

这是一个非常干净和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。因此,请为这些拉取请求投票:

2020-06-17