规则一:缩进

    yaml使用一个固定的缩进风格表示数据层结构关系,Saltstack需要每个缩进级别由两个空格组成。一定不能使用tab键

    注意:编写yaml文件,就忘记键盘有tab

    规则二:冒号

    CMD=”echo”

    yaml:

    mykey:

    每个冒号后面一定要有一个空格(以冒号结尾不需要空格,表示文件路径的模版可以不需要空格)

    规则三:短横线

    想要表示列表项,使用一个短横杠加一个空格。多个项使用同样的缩进级别作为同一个列表的一部分

 

例子:

### 剧本的开头,可以不写
- hosts: all         <- 处理所有服务器,找到所有服务器;  -(空格)hosts:(空格)all
tasks:             <- 剧本所要干的事情;                (空格)(空格)task:
- command: echo hello oldboy linux.  
  (空格)(空格)空格)(空格)-(空格)模块名称:(空格)模块中对应的功能
ansible all -m command -a "echo hello oldboy linux"     

编写后检查方法:

01:ansible-playbook –syntax-check 01.yml 

        — 进行剧本配置信息语法检查

02:ansible-playbook -C 01.yml             

           — 模拟剧本执行(彩排)

说明:ansible执行时,加1上-vvvv显示ansible详细执行过程,也可以定位异常原因!

剧本编写内容扩展:剧本任务编写多个任务

- hosts: all
  tasks:
    - name: restart-network
      cron: name='restart network' minute=00 hour=00 job='/usr/sbin/ntpdate time.nist.gov >/dev/null 2>&1'
    - name: sync time
      cron: name='sync time' minute=*/5 job="/usr/sbin/ntpdate pool.ntp.com >/dev/null 2>&1"

剧本编写内容扩展:剧本任务编写多个主机

复制代码

- hosts: 172.16.1.7
  tasks:
    - name: restart-network
      cron: name='restart network' minute=00 hour=00 job='/usr/sbin/ntpdate time.nist.gov >/dev/null 2>&1'
    - name: sync time
      cron: name='sync time' minute=*/5 job="/usr/sbin/ntpdate pool.ntp.com >/dev/null 2>&1"
- hosts: 172.16.1.31
  tasks:
    - name: show ip addr to file
      shell: echo $(hostname -i) >> /tmp/ip.txt

例子:

#cat test1.sh 
#!/bin/bash
if [ -z $1 ] || [ -z $2 ];then
   echo "Wrong,Please input two args"
   echo "Usage `basename $0` arguments arguments"
   exit 6
fi
mkdir -pv /usr/local/src/$1/$2
#cat createdir.yml 
---
- hosts: "{{ host }}"
  user: "{{ user }}"
  gather_facts: True
  tasks:
    - name: Create Dir in client server
      script: /etc/ansible/test1.sh data log
执行:
#ansible-playbook createdir.yml -e "host=web user=root" # 给{{ host }} {{ user }} 传值