天天看點

Ansible變量進階

1.0 Ansible怎麼定義變量

  • 通過

    playbook

    中的

    play

    進行變量的定義
  • 通過

    inventory

    主機清單進行變量定義
  • 通過執行

    playbook

    的時候增加

    -e

    選項進行定義

1.0.1 通過Playbook中的vars定義變量

  • Playbook

    中通過寫入

    vars

    文法定義變量
  • 通過

    {{變量名}}

    進行引用!
- hosts: test
  remote_user: root
  vars: 
    - httpd_package: httpd
  tasks:
    - name: Install DepencyEnvorment
      yum:
        name: {{httpd_package}}
        state: present
        update_cache: yes           

複制

1.0.2 通過定義變量檔案進行使用

  • 定義一個名字為

    public_vars.yaml

    的變量配置檔案
depence: ['openssl-devel','pcre-devel','zlib-devel']           

複制

注意: 當你引用了變量檔案中的變量,請在讀取變量的時候增加雙引号

""

- hosts: test
  remote_user: root
  vars_files: 
    - ./public_vars.yaml
    - ./public_vars2.yaml # 如果是多個變量的話
  tasks:
    - name: "Install De"
      yum: 
        name: "{{depence}}" # 通過雙引号去引入變量内容,不然會報錯
        state: present
        update_cache: no           

複制

1.0.3 通過編輯inventory主機清單進定義

  • 這種方法一般用的很少
[test]
10.1.6.205
[test:vars]
file_name=group_sys           

複制

官方推薦的方法: 在項目目錄中建立兩個變量目錄

host_vars

group_vars

group_vars

mkdir host_vars; mkdir group_vars           

複制

建立一個同名檔案,用于寫入變量内容

必須與hosts清單中的組名保持一緻,如果不同名會報錯。但是如果你想要多個配置檔案使用同一個組中的變量,隻需要在

group_vars/all

建立一個

all

檔案,所有組可用!
[root@bogon ~]# cat group_vars/test 
file_name: group_sys           

複制

host_vars

  • host_vars

    中建立一個檔案,檔案名與

    inventory

    清單中的主機名稱要保持完全一緻,如果是IP位址,則建立相同IP位址的檔案即可
vim host_vars/10.1.6.205
[root@bogon ~]# cat host_vars/10.1.6.205 
file_name: group_sys           

複制