首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在redis中的不可接受的事实缓存

在redis中的不可接受的事实缓存
EN

Stack Overflow用户
提问于 2017-11-23 18:09:00
回答 1查看 2.2K关注 0票数 0

我正在尝试使自定义事实(set_fact)在两本剧本之间持久。

provision something.yaml -> email.yaml

我已经为redis配置了缓存:

代码语言:javascript
复制
fact_caching = redis
fact_caching_timeout = 86400
fact_caching_connection = localhost:6379:0

我可以看到这些事实存储在redis(“ansible_facts10.1.0.7”)中:

代码语言:javascript
复制
127.0.0.1:6379> keys *
1) "ansible_cache_keys"
2) "ansible_factslocalhost"
3) "ansible_facts10.1.0.7"

我不明白的是,我怎样才能让另一出戏得到一个习俗的事实呢?

我的问题是,如果我需要使用redis查找,那么使用事实缓存就没有意义了,因为我可以通过redis任务自己将set_facts写到redis。

是否有一种方法可以不使用以下方法自动查找redis缓存中的变量:

代码语言:javascript
复制
- name: query redis for somekey
  debug: msg="{{ lookup('redis_kv', 'redis://localhost:6379,somekey') }} is value in Redis for somekey"

目前,用于缓存事实的redis键需要某种类型的硬编码,因为它是以主机文件(即"ansible_facts10.1.0.7“)的IP命名的

有人能给我指明正确的方向吗?

EN

回答 1

Stack Overflow用户

发布于 2017-11-23 18:41:35

您可能希望使用cacheable选项的事实模块:

代码语言:javascript
复制
- name: provision
  hosts: myhost
  tasks:
    - set_fact:
        myfact: something
        cacheable: true

这样,myfact=something将进入myhost主机的redis缓存。

当你跑其他游戏的时候

代码语言:javascript
复制
- name: check_fact
  hosts: myhost
  tasks:
    - debug:
        var: myfact

您应该看到从redis获取的something

请记住,cacheable选项是在Anble2.4中引入的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47461359

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档