1. 程式人生 > 其它 >第十一章 Ansible-playbook變數註冊和Facts快取

第十一章 Ansible-playbook變數註冊和Facts快取

一、變數註冊概述

當absible的模組在執行之後,其實都會返回一些result結果,就像是執行指令碼,我們有的時候需要指令碼給我們一些return返回值,我們才知道,上一步是否可以執行成功,但是...預設情況下,ansible的result並不會顯示出來,所以,我們可以把這些返回值'儲存'到變數中,這樣我們就能通過'呼叫'對應的變數名,從而獲取到這些result,這種將模組的返回值,寫入到變數中的方法被稱為變數註冊。

二、變數註冊配置

1.配置

[root@m01 ~]# vim list.yml 
- hosts: web01
  tasks:
    - name: list dir
      shell: ls -l /root
      register: list_dir

2.輸出呼叫的變數

[root@m01 ~]# vim list.yml 
- hosts: web01
  tasks:
    - name: list dir
      shell: ls -l /root
      register: list_dir
      
    - name: get list_dir
      debug:
        msg: "{{ list_dir }}"

3.輸出我們想要的部分

[root@m01 ~]# vim list.yml 
- hosts: web01
  tasks:
    - name: list dir
      shell: ls -l /root
      register: list_dir
      
    - name: get list_dir
      debug:
        msg: "{{ list_dir.stdout_lines }}"

三、變數註冊使用場景

#一般使用變數註冊進行判斷
[root@m01 ~]# cat install.yml 
- hosts: nfs
  tasks:
    - name: decide nfs status
      shell: systemctl is-active nfs
      ignore_errors: yes
      register: nfs_status

    - name: Start nfs
      systemd:
        name: nfs
        state: started
      when: nfs_status.rc != 0

    - name: Restart nfs
      systemd:
        name: nfs
        state: restarted 
      when: nfs_status.rc == 0

四、Facts快取概述

Ansible facts是在被管理主機上通過Ansible自動採集發現的變數。facts包含每臺特定的主機資訊。比如:被控端的主機名、IP地址、系統版本、CPU數量、記憶體狀態、磁碟狀態等等。

setup模組實際上就是facts快取得到的

五、Facts快取使用場景

1.通過facts快取檢查CPU,來生成對應的nginx配置檔案
2.通過facts快取檢查主機名,生成不同的zabbix配置檔案
3.通過facts快取檢索物理機的記憶體大小來生成不通的mysql配置檔案

綜上所述的Ansible facts類似於saltstack中的grains對於做自動化的小夥伴是非常有用滴。

六、Facts快取基本用法

#編輯
[root@m01 ~]# vim facts.yml
- hosts: web_group
  tasks:
    - name: Get Host Info
      debug:
        msg: Hostname "{{ ansible_fqdn }}" and IP "{{ ansible_default_ipv4.address }}"

七、關閉facts快取

[root@m01 ~]# vim facts.yml
- hosts: web_group
  gather_facts: no #關閉資訊採集
  tasks: