2017-11-23 7 views
0

맞춤 북 (set_fact)을 플레이 북간에 유지하려고합니다.리디스로 캐싱 가능한 캐쉬

provision something.yaml -> email.yaml

나는 레디 스의 캐싱를 구성한 :

fact_caching = redis 
fact_caching_timeout = 86400 
fact_caching_connection = localhost:6379:0 

나는 사실이 레디 스 ("ansible_facts10.1.0.7)에 저장되는 것을 볼 수 있습니다

127.0.0.1:6379> keys * 
1) "ansible_cache_keys" 
2) "ansible_factslocalhost" 
3) "ansible_facts10.1.0.7" 

내가 이해할 수없는 것은 맞춤 속성을 다른 p 위치?

redis 조회을 사용해야하는 경우 redis 작업을 통해 나 자신이 redis에 set_facts를 쓸 수 있기 때문에 사실 캐싱을 사용하는 것이 의미가 없습니다.

다음 사용하지 않고 레디 스 캐시에 변수에 대한 자동 검색을 할 수있는 방법이 있나요 : 어떤 종류의 하드 코딩이 필요합니다 내 캐시 된 사실에 대한 레디 스에서

- name: query redis for somekey 
    debug: msg="{{ lookup('redis_kv', 'redis://localhost:6379,somekey') }} is value in Redis for somekey" 

을 순간 키가 있기 때문에, 그것은 호스트 파일에서 IP의 이름을 따서 명명됩니다. "ansible_facts 10.1.0.7"

누군가 올바른 방향으로 나를 가리킬 수 있습니까?

답변

1

당신은 set_fact 모듈의 cacheable 옵션을 사용할 수 있습니다 : myfact=somethingmyhost 호스트 레디 스 캐시에 착륙합니다

- name: provision 
    hosts: myhost 
    tasks: 
    - set_fact: 
     myfact: something 
     cacheable: true 

이 방법을.

당신은 당신은 레디 스에서 something를 가져올 볼 수

- name: check_fact 
    hosts: myhost 
    tasks: 
    - debug: 
     var: myfact 

다른 플레이를 실행합니다.

cacheable 옵션이 Ansible 2.4에 추가되었습니다.

+0

이제는 문제가 무엇인지 알았습니다 ... 내 첫 번째 게임 북은 이미 캐시 가능하지만 다른 호스트에 대해 실행 중입니다. 복잡한 redis 검색없이 다른 호스트에서 ** set_fact **에 액세스 할 수 있습니까? – MMT

+0

@MMT [다른 호스트에서 ** set_fact **에 액세스 할 수 있습니까?] (https://www.google.com/search?q=Is+it+possible+to+access+the+**set_fact** + from + different + host & oq = is + it + 가능 + + + + ** set_fact ** + from + 다른 + 호스트) – techraf

+1

[docs] (http://docs.ansible.com/ansible/) latest/playbooks_variables.html # magic-variables-and-how-to-access-other-hosts에 대한 정보) –