Ansible“調試”模塊


調試過程是開發軟件代碼的一個非常重要的部分。 Ansible Playbook 也不例外。

為了在執行期間將變量或消息打印到終端輸出,Ansible 提供了一個名為“調試”的模塊。這是開發劇本非常有用的實用程序。例如,它可以在“when:”指令中使用,而不會在 playbook 運行時中斷它。

你涵蓋什麼?

在本教程中,您將了解 Ansible 的“調試模塊”。我們還將研究不同的用例。現在就開始。

先決條件

要運行本教程中顯示的示例,您需要具備以下條件:

1. Ansible 應安裝在控制器節點上(本例中為 Ubuntu 20.04)。

2、你應該對Ansible是乾嘛的,怎麼寫playbook有一個基本的了解(當然你需要知道什麼是playbook)。

如果您是 Ansible 的新手,我們建議您首先了解 Vagrant 以及如何使用它來設置基本的本地測試環境。 在設置一個包含一個控制器節點和兩個目標節點的基礎實驗室後,您可以運行本指南中的示例。

調試模塊使用的參數

該模塊有幾個參數:

1. msg:字符串類型參數,輸出自定義消息。

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

3. Verbosity:僅在執行調試操作後設置數字。例如,如果設置為 2,調試將僅在指定“-vv”時運行。

使用調試模塊的示例

1.打印一個簡單的語句

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

---

- name: Ansible debug module basic example

hosts: web

tasks:

- name: Basic debug module message

debug:

msg: "LinuxHint Ansible"

要運行此劇本和後續劇本,請使用以下格式:

$ 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”參數中指定的消息。

同樣,您可以在劇本運行時使用劇本中聲明的變量打印到終端。

---

- 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. 使用帶有寄存器變量的調試模塊

您還可以使用與上一個示例類似的方法將調試模塊與寄存器變量一起使用。現在讓我們創建另一個包含以下內容的劇本:

---

- 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”語句設置了使用“debug”模塊的條件,僅當操作系統發行版為 Debian 時才輸出此信息。

結論是

在本指南中,我們已經在幾個示例中了解瞭如何使用 Debug 模塊。正如我們在上面的示例中看到的,Ansible 的“調試”模塊對於主動調試操作非常有用。從劇本中獲取詳細的輸出也很有幫助。