Ansible varialbes

1.什么是變量?

以一個(gè)固定的字符串,表示一個(gè)不固定的值 version: 1.12

2.定義變量?

1.在playbook中定義變量?

  • vars 關(guān)鍵字
[root@manager project1]# cat f2.yml 
- hosts: webservers
  vars:
    - file_name: playbook_vars

  tasks:
    - name: Create New File
      file:
        path: /tmp/{{ file_name }}
        state: touch
  • vars_file 屬于一種共享的方式


    image.png
[root@manager project1]# cat vars_file.yml 
web_packages: httpd
ftp_packages: vsftpd

[root@manager project1]# cat f2.yml 
- hosts: webservers
  vars:
    - file_name: playbook_vars

 #調(diào)用共享vars_file文件,只不過(guò)剛好文件名叫vars_file
  vars_files: ./vars_file.yml

  tasks:
    - name: Create New File
      file:
        path: /tmp/{{ file_name }}
        state: touch

    - name: Installed Packages {{ web_packages }}
      yum:
        name: "{{ web_packages }}"
        state: present

2.在inventory主機(jī)清單中定義變量?

  • 1.清單文件中直接定義 hosts文件定義
[webservers]
172.16.1.7
172.16.1.8 
[webservers:vars]
file_name=hostsfile_group_vars
  • 2.創(chuàng)建hosts_vars group_vars 目錄
[root@manager project1]# mkdir hosts_vars   #單個(gè)主機(jī)
[root@manager project1]# mkdir group_vars   #主機(jī)組


1.單個(gè)主機(jī)定義和使用方式 (host_vars能分別對(duì)不同的主機(jī)定義變量)
[root@manager project1]# cat host_vars/172.16.1.7 
host_vars_name: 172.16.1.7

[root@manager project1]# cat host_vars/172.16.1.8 
host_vars_name: 172.16.1.8

[root@manager project1]# cat f4.yml 
- hosts: webservers

  tasks:
    - name: Create New File
      file:
        path: /opt/{{ host_vars_name }}
        state: touch

2.針對(duì)主機(jī)組定義的方式 
#給指定的webserver組設(shè)定變量.其他組主機(jī)無(wú)法使用該變量
[root@manager project1]# cat group_vars/webservers 
group_host_vars: webservers

[root@manager project1]# cat f5.yml 
- hosts: webservers
  tasks:
    - name: Create New File {{ group_host_vars }}
      file:
        path:  /opt/{{ group_host_vars }}
        state: touch


3.針對(duì)主機(jī)組定義的方式  (給所有的主機(jī)和主機(jī)組設(shè)定變量)
[root@manager project1]# cat group_vars/all 
group_host_vars: all

[root@manager project1]# cat f5.yml 
- hosts: webservers
  tasks:
    - name: Create New File {{ group_host_vars }}
      file:
        path:  /opt/{{ group_host_vars }}
        state: touch
  • 3.通過(guò)外置傳參定義變量? -e
[root@manager project1]# ansible-playbook -i hosts f6.yml  -e "web_vars=123"

3.變量沖突,優(yōu)先級(jí)?

定義相同的變量不同的值,來(lái)測(cè)試變量的優(yōu)先級(jí)。操作步驟如下   file_name:
??1)在plabook中定義vars變量
??2)在playbook中定義vars_files變量
??3)在inventory主機(jī)定義變量
??4)在inventory主機(jī)組定義變量
??5)在host_vars中定義變量
??6)在group_vars中定義變量  組      all組
??7)通過(guò)執(zhí)行命令傳遞變量
?
?
優(yōu)先級(jí)測(cè)試:
外置傳入?yún)?shù)優(yōu)先級(jí)最高 (e)
---> playbook ( vars_files(共享)
---> vars(私有) )  
---> host_vars  
---> group_vars/group_name 
---> group_vars/all

4.變量注冊(cè)

[root@manager project1]# cat f8.yml 
- hosts: webservers
  tasks:
        # System_Status=$(netstat -lntp)
    - name: Get Network Status
      shell: netstat -lntp | grep "nginx"
      register: System_Status

        # echo "$System_Status"
    - name: Debug output Variables
      debug:
        msg: "{{ System_Status.stdout_lines }}"

5.facts變量

1.根據(jù)主機(jī)的cpu信息,生成不同的配置.
    A: 1核心    work_process 1;
    B: 2核心    work_process 2;
    
2.根據(jù)主機(jī)名稱設(shè)定不同配置文件
    zabbix_agent
        Server:   ===> 指向172.16.1.61
        Hostname:      web01   web02

[root@manager project1]# cat ./file/zabbix_agent.conf.j2 
Server={{ zabbix_server_ip }}
ServerActive={{ zabbix_server_ip }}
Hostname={{ ansible_hostname }}

[root@manager project1]# cat f11.yml 
- hosts: webservers
  vars:
    - zabbix_server_ip: 172.16.1.61
  tasks:
    - name: Configure zabbix-agent.conf
      template:
        src: ./file/zabbix_agent.conf.j2
        dest: /tmp/zabbix-agent.conf
        
        
3.根據(jù)主機(jī)的內(nèi)存生成不同的配置文件,memcached
[root@manager project1]# cat f12.yml 
- hosts: webservers
  tasks:
    - name: Installed Memcached Server
      yum:
        name: memcached
        state: present

    - name: Configure Memcached Server
      template:
        src: ./file/memcached.j2
        dest: /etc/sysconfig/memcached
      notify: Restart Memcached Server

    - name: System Memcached Server
      systemd:
        name: memcached
        state: started
        enabled: yes

  handlers:
    - name: Restart Memcached Server
      systemd:
        name: memcached
        state: restarted

[root@manager project1]# cat file/memcached.j2 
PORT="11211"
USER="memcached"
MAXCONN="1024"
CACHESIZE="{{ ansible_memtotal_mb //2 }}"
OPTIONS=""


1.根據(jù)cpu
2.根據(jù)內(nèi)存
3.根據(jù)主機(jī)名
4.Redis配置文件     bind本地地址
5.操作系統(tǒng)不統(tǒng)一

        變量可以進(jìn)行運(yùn)算  + - * // 
        
        
        
        
1.定義變量
    playbook
        vars            私有
        vars_files      共享
    inventory
        host_vars   
        group_vars
            group_vars/group_name
            group_vars/all
    外置傳參
        -e
2.測(cè)試優(yōu)先級(jí)
    在不改變playbook變量的情況下,使用新的值測(cè)試.

3.變量注冊(cè)register
    1.將任務(wù)執(zhí)行的結(jié)果存儲(chǔ)至特定的變量中
    2.可以使用debug模塊將變量進(jìn)行打印輸出
    
    python: 字典
    json 格式化數(shù)據(jù)
    {
        k1: v1
        k2: v2
    }
4.facts 
[root@manager project1]# cat f13.yml 
- hosts: webservers
  tasks:
    - name: RANDOM
      shell:  echo "$RANDOM"
      register: System_SJ

    - name: Debug 
      debug:
        msg: "web_{{ System_SJ.stdout }}"

1.提取facts變量中的IP地址   mac地址  UUID 等等  只要唯一
    ansible_default_ipv4.address
[root@manager project1]# cat f14.yml 
- hosts: webservers
  tasks:

    - name: Debug 
      debug:
        msg: "web_{{ ansible_default_ipv4.address }}"
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末凡辱,一起剝皮案震驚了整個(gè)濱河市担巩,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌阱当,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,277評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異笤受,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)敌蜂,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門箩兽,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人章喉,你說(shuō)我怎么就攤上這事汗贫。” “怎么了秸脱?”我有些...
    開封第一講書人閱讀 163,624評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵落包,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我撞反,道長(zhǎng)妥色,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,356評(píng)論 1 293
  • 正文 為了忘掉前任遏片,我火速辦了婚禮嘹害,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘吮便。我一直安慰自己笔呀,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,402評(píng)論 6 392
  • 文/花漫 我一把揭開白布髓需。 她就那樣靜靜地躺著许师,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上微渠,一...
    開封第一講書人閱讀 51,292評(píng)論 1 301
  • 那天搭幻,我揣著相機(jī)與錄音,去河邊找鬼逞盆。 笑死檀蹋,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的云芦。 我是一名探鬼主播俯逾,決...
    沈念sama閱讀 40,135評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼舅逸!你這毒婦竟也來(lái)了桌肴?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,992評(píng)論 0 275
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤琉历,失蹤者是張志新(化名)和其女友劉穎坠七,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體善已,經(jīng)...
    沈念sama閱讀 45,429評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡灼捂,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,636評(píng)論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了换团。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,785評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡宫蛆,死狀恐怖艘包,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情耀盗,我是刑警寧澤想虎,帶...
    沈念sama閱讀 35,492評(píng)論 5 345
  • 正文 年R本政府宣布,位于F島的核電站叛拷,受9級(jí)特大地震影響舌厨,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜忿薇,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,092評(píng)論 3 328
  • 文/蒙蒙 一裙椭、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧署浩,春花似錦揉燃、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至,卻和暖如春抢腐,著一層夾襖步出監(jiān)牢的瞬間姑曙,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工迈倍, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留渣磷,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,891評(píng)論 2 370
  • 正文 我出身青樓授瘦,卻偏偏與公主長(zhǎng)得像醋界,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子提完,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,713評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容