ansible-playbook 應用

YAML標記語言
基本語法規則:
    大小寫敏感
    使用縮進表示層級關係
    縮進時不允許使用tab鍵,只允許使用空格
    縮進的空格數目不重要,只要相同層級的元素左對齊即可
    # 表示註釋
YAML支持的數據結構有三種:
    對象:
        對象的一組鍵值對,使用冒號結構表示。
        my_key:my_value
    數組:
        數據結構的子成員是一個數組,則可以在該項下面縮進一個空格
        languages:
         - python
         - perl
         - ruby
    純量:
        純量是最基本的、不可再分的值
        字符串var:abc
        布爾值var:true
        整數var:123
        浮點數var:123.123
        Null var:~
        時間time:2000-12-12
        日期date:20:20:20
playbook用來完成將任務寫到一個YAML格式的文件中,然後利用ansible-playbook進行調用該文件,從而實現了多條語句,可重複執行的效果,類似shell腳本的效果,ansible的playbook要藉助YAML文件來實現,YAML文件擴展名通常爲.yaml或者.ym

playbook的基礎組件
    hosts:運行指定任務的目標主機,多主機用冒號分隔
    remote_user:在遠程主機上執行任務的用戶,可以全局指定,也可以單個任務指定
    sudo_user:表示以sudo方式運行任務時,切換爲哪個用戶身份運行
    tasks:任務列表

示例
- hosts: wyq
  remote_user: root
  tasks:
  - name:  add_group
    group: gid=8888 name=redhat state=present
  - name: copy
    copy: src=/etc/hosts dest=/tmp/

1.用戶在.yml文件自定義變量
---
- hosts: wyq
  remote_user: root
  vars:
  - packname: "nmap"
  tasks:
  - name: uninstall nmap
    yum: name={{packname}} state=absent

2.通過-e參數傳遞的變量
---
- hosts: wyq
  remote_user: root
  tasks:
  - name: install package nmap
    yum: name={{pkname}} state=present

ansible-playbook vartest.yml -e pkname=nmap

3.通過主機或主機配置文件傳遞變量
主機
vim /etc/ansible/hosts 
[wyq]
192.168.254.228 package=nmap

---
- hosts: wyq
  remote_user: root
  tasks:
  - name: install package nmap
    yum: name={{package}} state=present

ansible-playbook vartest.yml

主機組
vim /etc/ansible/hosts 
[wyq]
192.168.254.228 
#192.168.254.244
#127.0.0.1

[wyq:vars]
packname=nmap

---
- hosts: wyq
  remote_user: root
  tasks:
  - name: install package nmap
    yum: name={{packname}} state=abesent

通過facts獲取的系統的變量
即ansible wyq -m setup查到的變量
---
- hosts: wyq
  remote_user: root
  tasks:
  - name: save facts var in file
    shell: echo "{{ansible_default_ipv4.address}}" >> /tmp/vars.txt
    

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章