ansible 開啟facts_cache快取

anyux發表於2024-08-17

目錄
  • 1. 常見的快取外掛及其儲存位置
  • 2. 如何查詢快取的變數
  • 總結

透過 facts_cache 快取的變數通常儲存在由 Ansible 配置檔案中指定的位置,具體位置取決於你使用的快取外掛。下面是幾個常見的快取外掛和它們的儲存方式,以及如何查詢這些快取變數。

1. 常見的快取外掛及其儲存位置

  • jsonfile 外掛

    • 儲存位置:快取變數會被儲存為 JSON 檔案,通常存放在你指定的檔案路徑中。你可以在 ansible.cfg 檔案中配置 fact_caching_connection 來指定快取檔案的目錄。
    • 配置示例
      [defaults]
      fact_caching = jsonfile
      fact_caching_connection = /path/to/cache/dir
      fact_caching_timeout = 86400  # 快取過期時間(秒)
      
    • 儲存方式:在指定的目錄下,每個主機的 facts 會以 JSON 檔案形式儲存,每個檔名通常對應於主機名。
  • redis 外掛

    • 儲存位置:快取變數儲存在 Redis 資料庫中。
    • 配置示例
      [defaults]
      fact_caching = redis
      fact_caching_connection = localhost:6379
      fact_caching_timeout = 86400
      
    • 儲存方式:Redis 資料庫中,每個主機的 facts 會儲存為鍵值對,鍵名通常是主機名,值是對應的 facts 資料。
  • memcached 外掛

    • 儲存位置:快取變數儲存在 Memcached 中。
    • 配置示例
      [defaults]
      fact_caching = memcached
      fact_caching_connection = 127.0.0.1:11211
      fact_caching_timeout = 86400
      
    • 儲存方式:類似於 Redis,Memcached 中每個主機的 facts 儲存為鍵值對。

2. 如何查詢快取的變數

  • 檢視快取檔案(適用於 jsonfile 外掛):

    • 如果使用的是 jsonfile 外掛,你可以直接在指定的快取目錄下找到主機名對應的 JSON 檔案,開啟它檢視快取的變數。
    • 示例
      cat /path/to/cache/dir/hostname.json
      
    • 這個 JSON 檔案將包含主機的所有 cached facts,包括你使用 set_facts 設定的變數。
  • 透過命令查詢 Redis 或 Memcached 中的快取

    • Redis:你可以使用 redis-cli 連線到 Redis 資料庫,然後使用命令檢視快取內容。
      redis-cli
      KEYS *
      GET hostname
      
    • Memcached:你可以使用 memcached-tool 或其他 Memcached 客戶端工具查詢快取。
      echo "get hostname" | nc localhost 11211
      
  • 透過 Playbook 查詢快取的變數

    • 你可以編寫一個簡單的 Playbook 來載入並檢視快取的變數。
    • 示例
      ---
      - name: 載入並檢視快取的 facts
        hosts: all
        tasks:
          - name: 顯示快取的變數
            debug:
              var: ansible_facts
      

總結

  • 儲存位置:快取的變數儲存位置取決於你使用的快取外掛,如 jsonfile 外掛會將變數儲存在指定目錄下的 JSON 檔案中,而 redismemcached 則將變數儲存在各自的資料庫中。
  • 查詢方式:可以直接訪問儲存目錄或資料庫來查詢快取的變數,也可以透過 Ansible Playbook 來載入和檢視這些快取的變數。

相關文章