Ansible“調試”模塊

調試過程是開發軟件代碼的一個非常關鍵的部分。 Ansible 劇本也不例外。

為了在運行時將變量或消息打印到終端輸出,Ansible 提供了一個名為“debug”的模塊。 對於開發劇本來說,這是一個非常有益的實用程序。 例如,它可以與“when:”指令一起使用,並且在執行期間不會破壞劇本。

我們將涵蓋什麼?

在本教程中,我們將了解 Ansible 中的“調試模塊”。 我們還將了解各種用例。 讓我們現在開始。

以前的要求

要執行本教程中顯示的示例,我們需要滿足以下要求:

1.您必須在控制器節點上安裝 Ansible (Ubuntu20.04 在我們的例子中)。

2.你應該對Ansible的目的是什麼以及如何編寫劇本有一個基本的了解(當然你應該知道劇本是什麼)。

如果您只是 Ansible 世界的初學者,我們建議您首先了解 Vagrant 以及如何使用 Vagrant 設置基本的本地測試環境。 設置一個包含一個控制器節點和兩個目標節點的基本實驗室後,您就可以開始閱讀本指南中的示例了。

與調試模塊一起使用的參數

該模塊使用了幾個參數:

1. msg:是字符串類型參數,打印自定義消息。

2. var:指定要調試的變量:“msg”和“var”互斥。

3. 詳細程度:這僅設置執行調試操作之後的數字。 例如,如果設置為 2,調試僅在指定“-vv”時運行。

調試模塊的使用示例

1.打印一個簡單的語句

在其最基本的用法中,調試模塊可用於打印要輸出的語句。 創建一個包含以下內容的劇本“debug-demo.yml”:

                      ---

- name: Ansible debug module basic example

hosts: web

tasks:

- name: Basic debug module message

debug:

msg: "LinuxHint Ansible"

                    

要運行此 playbook 和任何後續 playbook,請使用以下格式:

                      $ ansible-playbook example.yml -i /path/to/inventory/file

                    

2. 打印變量

除了將基本語句打印到終端外,我們還可以使用“調試”模塊來打印變量的值。 在以下示例中,我們在“my_vars.yml”文件中設置一個變量,並使用調試模塊的“msg”參數生成其值:

                      ---

- hosts: web

vars_files:

- demo_vars.yml

tasks:

# Display "Variable ‘demo_var1’ is set to ‘demo_val1’".

- debug: msg="Variable ‘demo_var1’ is set to {{ demo_var1 }}"

                    

上面的劇本打印變量“demo_var1”的值以及參數“msg”中指定的消息。

同樣,在 playbook 中聲明的變量也可用於在 playbook 執行期間打印到終端:

                      ---

- hosts: web

vars:

my_var2: my_val2

tasks:

# This task displays "Variable ‘my_var2’ is set to ‘my_val2’".

- debug: msg="Variable ‘my_var2’ is set to {{ my_var2 }}"

                    

在上面的劇本中,變量“my_var2”在執行期間被打印出來。

3. 使用帶有註冊表變量的調試模塊

在與上述示例類似的方法中,我們還可以將調試模塊與註冊表變量一起使用。 現在,讓我們創建另一個具有以下內容的 playbook:

                      ---

- hosts: all

gather_facts: no

become: false

tasks:

- name: Check the user name

ansible.builtin.shell: /usr/bin/whoami

register: login

- name: Display the user name using the output from previous task

debug: msg="Logged in as user {{ login.stdout }}"

                    

上面的劇本有兩個任務。 第一個任務給出執行 shell 命令的用戶名,並將該值存儲在註冊表變量“login”中。 第二個任務在使用調試模塊的“msg”參數打印消息時使用此變量。

4. 將調試模塊與“When”條件一起使用

在這種情況下,我們可以設置條件,使調試模塊僅在滿足某些條件時運行。 創建一個包含以下內容的新劇本:

                       

---

- hosts: all

gather_facts: yes

become: true

tasks:

- name: Checking the release information of the servers

ansible.builtin.command: /usr/bin/lsb_release -a

register: info

- name: Print the release information

debug: msg="The System information is as follows {{ info.stdout }}"

when: ansible_facts['distribution']=="
                      
                        Debian
                      
                      "

                    

在之前的劇本中,我們使用命令“lsb_release -a”來打印系統的發布信息。 “when”語句設置了一個條件,僅當操作系統發行版是 Debian 時才使用“debug”模塊打印此信息。

結論

在本指南中,我們通過一些示例了解瞭如何使用“調試”模塊。 正如我們在給定示例中所見,Ansible 的“調試”模塊對於主動調試操作非常有用。 它對於從劇本中獲取詳細的輸出同樣有用。

相關文章