Ansible-playbook之定義變量


1.引用變量

# 變量引用方式
"{{ }}"

2.定義變量 (vars)

- hosts: web
  # 定義變量
  vars:
    - play_var: This_is_play_vars
  
  tasks:
    - name: touch new files
      file:
      # 引用變量
        path: "/tmp/{{ play_var }}"
        state: touch

3.定義變量文件 (vars_files)

# 定義變量文件 var.yml
# cat var.yml
play_var1: play_var1_sb1
play_var2: play_var2_sb2

# 測試劇本: cat web_test.yml
- hosts: web
  #引用變量文件
  vars_files: 
  - ./var.yml
  
  tasks:
    - name: touch new files
      # 引用變量
      file: 
        name: "/tmp/{{ play_var1 }}"
        state: touch

4.主機清單中定義變量 (inventory)

# cat hosts
[web]
172.16.1.7
172.16.1.8
172.16.1.9

# 定義web組的變量,僅web組可使用
[web:vars]
inventory_var=inventory_variables

# 測試劇本: cat web_test.yml
- hosts: web
  tasks:
    - name: touch new files
      file:
        path: "/tmp/{{ inventory_var }}"
        state: touch

5.定義主機變量 (host_vars)

# 創建主機變量目錄
mkdir host_vars

# 創建主機變量文件
touch host_vars/172.16.1.7
# cat host_vars/172.16.1.7
host_var: host_var172.16.1.7

# cat host_vars/172.16.1.8
host_var: host_var172.16.1.8

6.定義主機組變量 (group_vars)

# 創建組變量目錄
mkdir group_vars

# 創建組變量文件
touch group_vars/web
# cat group_vars/web
group_vars: group_vars_web

# cat web_test.yml
- hosts:
  tasks:
    - name: touch new files
      file:
        path: "/tmp/{{ group_vars }}"
        state: touch
# 創建所有主機組變量文件
touch group_vars/all
# cat group_vars/all
group_all: group_all_test

# cat web_test.yml
- hosts:
  tasks:
    - name: touch new files
      file:
        path: "/tmp/{{ group_all }}"
        state: touch

7.命令行傳參 (extra)

# cat web_test.yml
- hosts: all
  tasks:
    - name: touch new files
      file:
        path: "/tmp/{{ extra_vars }}"
        state: touch
# 命令行傳參
ansible-playbook web_test.yml -e "extra_vars=123"

8.定義變量的優先級

# 命令行
1. extra

# playbook
2. vars
3. vars_files

# inventory
4. host_vars
5. group_vars
6. group_all
# 可通過debug模塊測試
- hosts: web
  tasks:
    - name: touch new files
      debug:
        msg: "{{ extra_vars }}"

9.變量注冊register

- hosts: web
  tasks:
    - name: Output Nginx Process
      shell: ps aux| grep nginx
      # 注冊變量
      register: nginx_process

    - name:
      debug:
        msg: "{{ nginx_process.stdout_lines }}"

10.核心變量 facts

# 查看ansible可調用系統變量
ansible localhost -m setup
# 調用系統變量,查看系統IP
- hosts: web
  tasks:
    - name:
      debug:
        msg: "{{ ansible_eth1.ipv4.address }}"


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM