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