redis中的ansible事实缓存

redis中的ansible事实缓存,ansible,ansible-facts,Ansible,Ansible Facts,我正在尝试在剧本之间设置自定义事实 i、 e.provision.yaml->email.yaml 我已经为redis配置了缓存: fact_caching = redis fact_caching_timeout = 86400 fact_caching_connection = localhost:6379:0 我可以看到事实存储在可再分解事实10.1.0.7中: 127.0.0.1:6379> keys * 1) "ansible_cache_keys" 2) "ansible_f

我正在尝试在剧本之间设置自定义事实

i、 e.provision.yaml->email.yaml

我已经为redis配置了缓存:

fact_caching = redis
fact_caching_timeout = 86400
fact_caching_connection = localhost:6379:0
我可以看到事实存储在可再分解事实10.1.0.7中:

127.0.0.1:6379> keys *
1) "ansible_cache_keys"
2) "ansible_factslocalhost"
3) "ansible_facts10.1.0.7"
我不明白的是,我怎样才能在另一个剧本中得到一个自定义的事实

我的问题是,如果我需要使用redis查找,那么使用事实缓存是毫无意义的,因为我可以通过redis任务自己将set_事实写入redis

有没有一种方法可以在不使用以下内容的情况下自动查找redis缓存中的变量:

- name: query redis for somekey
  debug: msg="{{ lookup('redis_kv', 'redis://localhost:6379,somekey') }} is value in Redis for somekey"
目前,redis中缓存事实的密钥需要某种硬编码,因为它是以主机文件IP命名的,即ansible_facts10.1.0.7

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

您可能需要使用模块的可缓存选项:

通过这种方式,myfact=某些内容将登录到myhost的redis缓存中

当你运行其他游戏时

- name: check_fact
  hosts: myhost
  tasks:
    - debug:
        var: myfact
您应该看到从redis获取的内容


请记住,可缓存选项是在Ansible 2.4中引入的。

好的,现在我知道问题出在哪里了。。。我的第一个剧本已经可以缓存了,但是如果运行在不同的主机上。是否可以从不同主机访问set_事实,而无需复杂的redis查找?请检查
- name: check_fact
  hosts: myhost
  tasks:
    - debug:
        var: myfact