變量名約束
- 變量名稱應為字母,數字和下劃線。
- 變量應始終以字母開頭。
- 變量名不應與python屬性和方法名沖突。
變量使用
通過命令行傳遞變量(extra vars)
ansible-playbook release.yml -e "user=starbuck"
在 inventory
中定義變量(inventory vars)
host3 http_port=80 # 定義主機變量
[webservers:vars] # 定義組的變量
ntp_server= ntp.example.com
在 playbook
中如何定義變量(play vars)
- hosts: webservers
vars:
http_port: 80
從角色和文件包含中定義變量
- hosts: webservers
include_vars: myvars.yml
- hosts: webservers
vars_files:
- /vars/external_vars.yml
定義角色默認的變量(role defaults)
在角色目錄中添加一個defaults/main.yml文件。文件里存儲著yaml或json格式的數據。
以交互方式獲取變量值
---
- hosts: server
vars_prompt:
- name: web
prompt: 'Please input the web server:'
private: no
定義角色變量(role and include vars)
roles:
- { role: app_user, name: Ian }
注冊變量(registered vars)
---
- hosts: all
tasks:
- shell: uptime
register: result
- name: show uptime
debug: var=result
此選項將任務的結果存儲在變量中,結果參數可以用在模版中。名稱為result,使用debug來輸出result的信息。
以下是一些重要的注冊變量的組件:
- changed: 顯示是否已更改
- cmd: 執行的命令
- rc: 命令的返回碼
- stdout:命令的輸出
- stdout_lines: 逐行輸出
- stderr: 如果有錯誤,則輸出錯誤的信息
內置變量
變量名稱 | 說明 | 使用 |
---|---|---|
hostvars | 包含主機得fcats信息 | {{ hostvars['db.example.com'].ansible_eth0.ipv4.address }} |
inventory_hostname | 當前主機的名稱 | {{ hostvars[inventory_hostname] }} |
groups_name | 當前主機所在組的主機列表 | {% if 'webserver' in group_names %}# some part of a configuration file that only applies to webservers{% endif %} |
groups | 包含設備清單組內的所有主機 | {% for host in groups[‘db_servers’] %} {{ host }}{% endfor %} |
play_hosts | 在當前playbook中處于活動狀態的主機名列表 | {{play_hosts}} |
ansible_version | ansible版本信息 | {{ansible_version}} |
變量優先級
最后的優先級最高
? role defaults
? inventory vars
? inventory group_vars
? inventory host_vars
? playbook group_vars
? playbook host_vars
? host facts
? play vars
? play vars_prompt
? play vars_files
? registered vars
? set_facts
? role and include vars
? block vars (only for tasks in block)
? task vars (only for the task)
? extra vars (always win precedence)
如果多個組具有相同的變量,則最后一個加載獲勝。
變量范圍
Ansible有3個主要范圍:
- 全局:這是由config,環境變量和命令行設置的
- play:每個play和包含的結構,vars條目,include_vars,角色默認和vars。
- 主機:直接與主機相關聯的變量
更多文章請看 Ansible 專題文章總覽