ansible學(xué)習(xí)筆記-變量

一姐军、變量規(guī)則

1撵颊、變量的名稱由字母宇攻、下劃線和數(shù)字組成,但是只能以字母開頭
2倡勇、變量不能是關(guān)鍵字

二逞刷、變量類型

  • 全局變量
  • 劇本變量
  • 資產(chǎn)變量

全局變量

1、傳遞key=value的形式

root@zsh-virtual-machine:~# ansible all -i localhost, -m debug -a "msg='my name is {{ name }}'" -e "name=alonzo"
[WARNING]: Found variable using reserved name: name
localhost | SUCCESS => {
    "msg": "my name is alonzo"
}

2妻熊、使用yaml或者json的形式(都必須是字典格式)

#json形式
root@zsh-virtual-machine:~# cat test.json
{"name":"alonzo","age":"18"}
root@zsh-virtual-machine:~# ansible all -i localhost, -m debug -a "msg='my name is {{ name }}, age is {{ age }}'" -e "@./test.json"
[WARNING]: Found variable using reserved name: name
localhost | SUCCESS => {
    "msg": "my name is alonzo, age is 18"
}
#yaml形式
root@zsh-virtual-machine:~# cat test.yaml
---
name: alonzo
age: 18
root@zsh-virtual-machine:~# ansible all -i localhost, -m debug -a "msg='my name is {{ name }}, age is {{ age }}'" -e "@./test.yaml"
[WARNING]: Found variable using reserved name: name
localhost | SUCCESS => {
    "msg": "my name is alonzo, age is 18"
}

劇本變量

此變量和PlayBook有關(guān)夸浅,定義在playbook中的,他們的定義方式有多種扔役,這里介紹兩種最常見的方式
1帆喇、使用key=value的形式

root@zsh-virtual-machine:~# cat test_var.yaml
---
- name: test playbook vars
  hosts: all
  remote_user: root
  vars:
    user: alonzo
    home: /home/alonzo
  tasks:
    - name: create the user {{ user }}
      user:
        name: "{{ user }}"
        home: "{{ home }}"

2、使用yaml或者json的形式

root@zsh-virtual-machine:~# cat test_var1.yaml
---
- name: test playbook vars
  hosts: all
  remote_user: root
  vars_files:
    - /root/users.yaml
  tasks:
    - name: create the user {{ user }}
      user:
        name: "{{ user }}"
        home: "{{ home }}"
root@zsh-virtual-machine:~# cat users.yaml
---
user: alonzo1
home: /home/alonzo1

注意:在playbook中變量的使用需要加雙引號(hào)亿胸,否則會(huì)被錯(cuò)誤解析成字典

資產(chǎn)變量

1坯钦、主機(jī)變量

root@zsh-virtual-machine:~# cat hosts
[server]
192.168.100.128 user=alonzo
root@zsh-virtual-machine:~# ansible all -i hosts -m debug -a "msg='name is {{ user }}'"
192.168.100.128 | SUCCESS => {
    "msg": "name is alonzo"
}

2、主機(jī)組變量

root@zsh-virtual-machine:~# cat hosts
[servers]
192.168.100.128 user=alonzo
192.168.100.130
[servers:vars]
home="/home/alonzo"
root@zsh-virtual-machine:~# ansible all -i hosts -m "debug" -a "msg='home is {{ home }}'"
192.168.100.128 | SUCCESS => {
    "msg": "home is /home/alonzo"
}
192.168.100.130 | SUCCESS => {
    "msg": "home is /home/alonzo"
}

注意:主機(jī)變量的優(yōu)先級(jí)大于主機(jī)組變量
3侈玄、變量的繼承

root@zsh-virtual-machine:~# cat hosts
[servers]
192.168.100.128
192.168.100.130

[allservers]
[allservers:children]
servers

[allservers:vars]
user=alonzo
home="/home/alonzo"
root@zsh-virtual-machine:~# ansible all -i hosts -m "debug" -a "msg='name is {{ user }}, home is {{ home }}'"
192.168.100.128 | SUCCESS => {
    "msg": "name is alonzo, home is /home/alonzo"
}
192.168.100.130 | SUCCESS => {
    "msg": "name is alonzo, home is /home/alonzo"
}

4婉刀、Inventory內(nèi)置變量的說明
內(nèi)置變量基本上都是以ansible_為前綴

ansible_ssh_host #ssh的主機(jī),要連接的主機(jī)與之前設(shè)定的主機(jī)的別名不同可用此變量
ansible_ssh_port #ssh的端口
ansible_ssh_user #ssh的用戶名
ansible_ssh_pass #ssh密碼
ansible_sudo_pass #sudo密碼
ansible_sudo_exe #sudo命令路徑
ansible_ssh_private_key_file #ssh使用的私鑰文件
ansible_python_interpreter #目標(biāo)主機(jī)python的路徑

Facts變量

手動(dòng)收集Facts變量

root@zsh-virtual-machine:~# ansible all -i localhost, -c local -m setup
localhost | SUCCESS => {
    "ansible_facts": {
        "ansible_all_ipv4_addresses": [
            "192.168.100.129",
            "172.17.0.1"
        ],
        "ansible_all_ipv6_addresses": [
            "fe80::ab41:46ea:3769:3734",
            "fe80::42:e6ff:fe0c:6607",
            "fe80::ac74:1ff:fe93:c02d"
        ],
        "ansible_apparmor": {
            "status": "enabled"
        },
        "ansible_architecture": "x86_64",
        "ansible_bios_date": "02/27/2020",
        "ansible_bios_version": "6.00",
        "ansible_cmdline": {
            "BOOT_IMAGE": "/boot/vmlinuz-5.4.0-52-generic",
            "quiet": true,
            "ro": true,
            "root": "UUID=2adfa333-b010-4ccd-b3ad-41f5717705ef",
            "splash": true
        },
        "ansible_date_time": {
            "date": "2020-11-04",
            "day": "04",
            "epoch": "1604495082",
            "hour": "21",
            "iso8601": "2020-11-04T13:04:42Z",
            "iso8601_basic": "20201104T210442626327",
            "iso8601_basic_short": "20201104T210442",
            "iso8601_micro": "2020-11-04T13:04:42.626327Z",
            "minute": "04",
            "month": "11",
            "second": "42",
            "time": "21:04:42",
            "tz": "CST",
            "tz_offset": "+0800",
            "weekday": "星期三",
            "weekday_number": "3",
            "weeknumber": "44",
            "year": "2020"
        },
        "ansible_default_ipv4": {
            "address": "192.168.100.129",
            "alias": "ens33",
            "broadcast": "192.168.100.255",
            "gateway": "192.168.100.2",
            "interface": "ens33",
            "macaddress": "00:0c:29:b3:15:4c",
            "mtu": 1500,
            "netmask": "255.255.255.0",
            "network": "192.168.100.0",
            "type": "ether"
        },
···
···

過濾Facts變量

  • 獲取服務(wù)器的內(nèi)存情況
root@zsh-virtual-machine:~# ansible all -i localhost, -m setup -a "filter=*memory*" -c local
localhost | SUCCESS => {
    "ansible_facts": {
        "ansible_memory_mb": {
            "nocache": {
                "free": 809,
                "used": 3099
            },
            "real": {
                "free": 132,
                "total": 3908,
                "used": 3776
            },
            "swap": {
                "cached": 7,
                "free": 1804,
                "total": 2047,
                "used": 243
            }
        },
        "discovered_interpreter_python": "/usr/bin/python"
    },
    "changed": false
}
  • 獲取服務(wù)器的掛載情況
root@zsh-virtual-machine:~# ansible all -i localhost, -m setup -a "filter='*mount*'" -c local
localhost | SUCCESS => {
    "ansible_facts": {
        "ansible_mounts": [
            {
                "block_available": 0,
                "block_size": 131072,
                "block_total": 248,
                "block_used": 248,
                "device": "/dev/loop6",
                "fstype": "squashfs",
                "inode_available": 0,
                "inode_total": 472,
                "inode_used": 472,
                "mount": "/snap/snapd/9721",
                "options": "ro,nodev,relatime",
                "size_available": 0,
                "size_total": 32505856,
                "uuid": "N/A"
            },
            {
                "block_available": 0,
                "block_size": 131072,
                "block_total": 443,
                "block_used": 443,
                "device": "/dev/loop0",
                "fstype": "squashfs",
                "inode_available": 0,
                "inode_total": 10779,
                "inode_used": 10779,
                "mount": "/snap/core18/1932",
                "options": "ro,nodev,relatime",
                "size_available": 0,
                "size_total": 58064896,
                "uuid": "N/A"
            },
            {
                "block_available": 0,
                "block_size": 131072,
                "block_total": 3,
                "block_used": 3,
                "device": "/dev/loop4",
                "fstype": "squashfs",
                "inode_available": 0,
                "inode_total": 230,
                "inode_used": 230,
                "mount": "/snap/gnome-characters/570",
                "options": "ro,nodev,relatime",
                "size_available": 0,
                "size_total": 393216,
                "uuid": "N/A"
            },
            {
                "block_available": 0,
                "block_size": 131072,
                "block_total": 497,
                "block_used": 497,
                "device": "/dev/loop3",
                "fstype": "squashfs",
                "inode_available": 0,
                "inode_total": 62342,
                "inode_used": 62342,
                "mount": "/snap/gtk-common-themes/1506",
                "options": "ro,nodev,relatime",
                "size_available": 0,
                "size_total": 65142784,
                "uuid": "N/A"
            },
            {
                "block_available": 0,
                "block_size": 131072,
                "block_total": 18,
                "block_used": 18,
                "device": "/dev/loop8",
                "fstype": "squashfs",
                "inode_available": 0,
                "inode_total": 784,
                "inode_used": 784,
                "mount": "/snap/gnome-system-monitor/148",
                "options": "ro,nodev,relatime",
                "size_available": 0,
                "size_total": 2359296,
                "uuid": "N/A"
            },
            {
                "block_available": 0,
                "block_size": 131072,
                "block_total": 1744,
                "block_used": 1744,
                "device": "/dev/loop5",
                "fstype": "squashfs",
                "inode_available": 0,
                "inode_total": 18513,
                "inode_used": 18513,
                "mount": "/snap/gnome-3-34-1804/60",
                "options": "ro,nodev,relatime",
                "size_available": 0,
                "size_total": 228589568,
                "uuid": "N/A"
            },
            {
                "block_available": 70483722,
                "block_size": 4096,
                "block_total": 77146320,
                "block_used": 6662598,
                "device": "/dev/sda1",
                "fstype": "ext4",
                "inode_available": 19431972,
                "inode_total": 19660800,
                "inode_used": 228828,
                "mount": "/",
                "options": "rw,relatime,errors=remount-ro",
                "size_available": 288701325312,
                "size_total": 315991326720,
                "uuid": "2adfa333-b010-4ccd-b3ad-41f5717705ef"
            },
            {
                "block_available": 0,
                "block_size": 131072,
                "block_total": 20,
                "block_used": 20,
                "device": "/dev/loop2",
                "fstype": "squashfs",
                "inode_available": 0,
                "inode_total": 1384,
                "inode_used": 1384,
                "mount": "/snap/gnome-calculator/826",
                "options": "ro,nodev,relatime",
                "size_available": 0,
                "size_total": 2621440,
                "uuid": "N/A"
            },
            {
                "block_available": 0,
                "block_size": 131072,
                "block_total": 443,
                "block_used": 443,
                "device": "/dev/loop12",
                "fstype": "squashfs",
                "inode_available": 0,
                "inode_total": 10775,
                "inode_used": 10775,
                "mount": "/snap/core18/1885",
                "options": "ro,nodev,relatime",
                "size_available": 0,
                "size_total": 58064896,
                "uuid": "N/A"
            },
            {
                "block_available": 0,
                "block_size": 131072,
                "block_total": 240,
                "block_used": 240,
                "device": "/dev/loop11",
                "fstype": "squashfs",
                "inode_available": 0,
                "inode_total": 463,
                "inode_used": 463,
                "mount": "/snap/snapd/8542",
                "options": "ro,nodev,relatime",
                "size_available": 0,
                "size_total": 31457280,
                "uuid": "N/A"
            },
            {
                "block_available": 0,
                "block_size": 131072,
                "block_total": 3,
                "block_used": 3,
                "device": "/dev/loop10",
                "fstype": "squashfs",
                "inode_available": 0,
                "inode_total": 230,
                "inode_used": 230,
                "mount": "/snap/gnome-characters/550",
                "options": "ro,nodev,relatime",
                "size_available": 0,
                "size_total": 393216,
                "uuid": "N/A"
            },
            {
                "block_available": 0,
                "block_size": 131072,
                "block_total": 2045,
                "block_used": 2045,
                "device": "/dev/loop9",
                "fstype": "squashfs",
                "inode_available": 0,
                "inode_total": 24339,
                "inode_used": 24339,
                "mount": "/snap/gnome-3-34-1804/36",
                "options": "ro,nodev,relatime",
                "size_available": 0,
                "size_total": 268042240,
                "uuid": "N/A"
            },
            {
                "block_available": 0,
                "block_size": 131072,
                "block_total": 20,
                "block_used": 20,
                "device": "/dev/loop1",
                "fstype": "squashfs",
                "inode_available": 0,
                "inode_total": 1351,
                "inode_used": 1351,
                "mount": "/snap/gnome-calculator/748",
                "options": "ro,nodev,relatime",
                "size_available": 0,
                "size_total": 2621440,
                "uuid": "N/A"
            },
            {
                "block_available": 0,
                "block_size": 131072,
                "block_total": 8,
                "block_used": 8,
                "device": "/dev/loop7",
                "fstype": "squashfs",
                "inode_available": 0,
                "inode_total": 355,
                "inode_used": 355,
                "mount": "/snap/gnome-logs/100",
                "options": "ro,nodev,relatime",
                "size_available": 0,
                "size_total": 1048576,
                "uuid": "N/A"
            }
        ],
        "discovered_interpreter_python": "/usr/bin/python"
    },
    "changed": false
}
  • 在playbook中使用Facts變量
root@zsh-virtual-machine:~# cat fact.yaml
---
- name: print facts vars
  hosts: all
  remote_user: root
  tasks:
    - name: print ip
      debug:
        msg: "The default IPV4 is {{ ansible_default_ipv4.address }}"

root@zsh-virtual-machine:~# ansible-playbook -i hosts fact.yaml

PLAY [print facts vars] **********************************************************************************************************

TASK [Gathering Facts] ***********************************************************************************************************
ok: [192.168.100.130]
ok: [192.168.100.128]

TASK [print ip] ******************************************************************************************************************
ok: [192.168.100.128] => {
    "msg": "The default IPV4 is 192.168.100.128"
}
ok: [192.168.100.130] => {
    "msg": "The default IPV4 is 192.168.100.130"
}

PLAY RECAP ***********************************************************************************************************************
192.168.100.128            : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0
192.168.100.130            : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

  • 關(guān)閉playbook中facts變量獲取
root@zsh-virtual-machine:~# cat fact.yaml
---
- name: print facts vars
  hosts: all
  remote_user: root
  gather_facts: no
  tasks:
    - name: test
      shell: ls /root
root@zsh-virtual-machine:~# ansible-playbook -i hosts fact.yaml

PLAY [print facts vars] **********************************************************************************************************

TASK [test] **********************************************************************************************************************
changed: [192.168.100.130]
changed: [192.168.100.128]

PLAY RECAP ***********************************************************************************************************************
192.168.100.128            : ok=1    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0
192.168.100.130            : ok=1    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

注冊(cè)變量

用于保存一個(gè)task任務(wù)的執(zhí)行結(jié)果序仙,以便于做進(jìn)一步的處理
注冊(cè)變量在playbook中通過register關(guān)鍵字去實(shí)現(xiàn)

root@zsh-virtual-machine:~# cat fact.yaml
---
- name: print facts vars
  hosts: all
  remote_user: root
  gather_facts: no
  tasks:
    - name: test
      shell: ls /root
      register: check
    - name: print check
      debug: var=check.stdout
root@zsh-virtual-machine:~# ansible-playbook -i hosts fact.yaml

PLAY [print facts vars] **********************************************************************************************************

TASK [test] **********************************************************************************************************************
changed: [192.168.100.130]
changed: [192.168.100.128]

TASK [print check] ***************************************************************************************************************
ok: [192.168.100.128] => {
    "check.stdout": "aaa.txt\ninstall_docker.sh"
}
ok: [192.168.100.130] => {
    "check.stdout": "aaa.txt"
}

PLAY RECAP ***********************************************************************************************************************
192.168.100.128            : ok=2    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0
192.168.100.130            : ok=2    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

變量?jī)?yōu)先級(jí)

全局變量 > 劇本變量 > 資產(chǎn)變量

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末突颊,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子诱桂,更是在濱河造成了極大的恐慌洋丐,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,744評(píng)論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件挥等,死亡現(xiàn)場(chǎng)離奇詭異友绝,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)肝劲,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,505評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門迁客,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人辞槐,你說我怎么就攤上這事掷漱。” “怎么了榄檬?”我有些...
    開封第一講書人閱讀 163,105評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵卜范,是天一觀的道長。 經(jīng)常有香客問我鹿榜,道長海雪,這世上最難降的妖魔是什么锦爵? 我笑而不...
    開封第一講書人閱讀 58,242評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮奥裸,結(jié)果婚禮上险掀,老公的妹妹穿的比我還像新娘。我一直安慰自己湾宙,他們只是感情好樟氢,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,269評(píng)論 6 389
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著侠鳄,像睡著了一般埠啃。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上畦攘,一...
    開封第一講書人閱讀 51,215評(píng)論 1 299
  • 那天霸妹,我揣著相機(jī)與錄音,去河邊找鬼知押。 笑死叹螟,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的台盯。 我是一名探鬼主播罢绽,決...
    沈念sama閱讀 40,096評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼静盅!你這毒婦竟也來了良价?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,939評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤蒿叠,失蹤者是張志新(化名)和其女友劉穎明垢,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體市咽,經(jīng)...
    沈念sama閱讀 45,354評(píng)論 1 311
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡痊银,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,573評(píng)論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了施绎。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片溯革。...
    茶點(diǎn)故事閱讀 39,745評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖谷醉,靈堂內(nèi)的尸體忽然破棺而出致稀,到底是詐尸還是另有隱情,我是刑警寧澤俱尼,帶...
    沈念sama閱讀 35,448評(píng)論 5 344
  • 正文 年R本政府宣布抖单,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏矛绘。R本人自食惡果不足惜躺酒,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,048評(píng)論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望蔑歌。 院中可真熱鬧,春花似錦揽碘、人聲如沸次屠。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,683評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽劫灶。三九已至,卻和暖如春掖桦,著一層夾襖步出監(jiān)牢的瞬間本昏,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,838評(píng)論 1 269
  • 我被黑心中介騙來泰國打工枪汪, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留涌穆,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,776評(píng)論 2 369
  • 正文 我出身青樓雀久,卻偏偏與公主長得像宿稀,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子赖捌,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,652評(píng)論 2 354