如何在 Ansible Playbook 中使用變量¶
Ansible 支持使用變量
來更好地自定義任務和劇本的執行。這樣,就可以將同一劇本用於不同的目標和環境。
變量
可以來自不同的來源,例如劇本文件本身或劇本中導入的外部變量文件。當使用定義同名變量的多個變量源時,將應用特殊優先級規則。
為了了解變量在實踐中是如何工作的,我們將創建一個新的測試 playbook,它將打印兩個變量的值,username
和 home_dir
。在你的 ansible-practice 目錄中創建一個名為 playbook-02.yml 的新文件:
playbook-02.yml
---
- hosts: all
vars:
- username: vagrant
- home: /home/vagrant
tasks:
- name: print variables
debug:
msg: "Username: {{ username }}, Home dir: {{ home }}"
playbook 的 vars
部分定義了將在該 play 範圍內要注入的變量列表。所有任務以及可能包含在 playbook 中的任何文件或模板都可以訪問這些變量。
要在您的清單文件中的服務器上嘗試此 playbook,請使用您之前在運行我們的第一個示例時使用的相同連接參數運行 ansible-playbook。同樣,我們將使用一個名為 inventory 的清單文件連接到遠程服務器:
結果:
PLAY [all] ***********************************************************************************************************************************************************************************
TASK [Gathering Facts] ***********************************************************************************************************************************************************************
ok: [demo-vm]
TASK [print variables] ***********************************************************************************************************************************************************************
ok: [demo-vm] => {
"msg": "Username: vagrant, Home dir: /home/vagrant"
}
PLAY RECAP ***********************************************************************************************************************************************************************************
demo-vm : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
打印變量任務將使用調試模塊打印我們在劇本的 vars
區塊中定義的兩個變量的值。