自动化运维—ansible playbook(一)

playbook主要使用YMAL语法,这里通过几个例子直接了解编写规则!

示例1:

写一个playbook脚本,使其执行ping和创建目录的动作:

首先在server4中删除/testdir下的所有内容(如果之前没有做过即可忽略):

ansible playbook脚本 pip安装包 ansible playbook ping_vim


编写脚本:

vim ping.yml 
---
- hosts: testB
  remote_user: root
  tasks:
  - name: ping the host
    ping:
  - name: make directory haha
    file:
      path: /testdir/haha
      state: directory

注意:playbook脚本名的后缀一定是.yml或者.yaml

ansible playbook脚本 pip安装包 ansible playbook ping_创建目录_02


ansible playbook脚本 pip安装包 ansible playbook ping_创建目录_03

脚本解释:
操作对象:testB
在主机中以指定用户身份进行操作:root
tasks后是要执行的动作
第一个动作名为:ping the host(自己定义)
使用的模块:ping(没有指定参数)
第二个动作名为:make directory haha(自己定义)
使用的模块:file
指定参数:路径及名称:/testdir/haha;类型:目录

注意:
1.脚本以---开头
2.每个部分的开头需要有-和一个空格
3.参数名后面要加冒号,冒号后要有一个空格才能写具体内容

测试脚本内容是否正确:

ansible-playbook --syntax-check ping.yml

执行:

ansible-playbook ping.yml

ansible playbook脚本 pip安装包 ansible playbook ping_创建目录_04

示例2:

修改操作对象为testA:

vim ping.yml 
---
- hosts: testA
  remote_user: root
  tasks:
  - name: ping the host
    ping:
  - name: make directory haha
    file:
      path: /testdir/haha
      state: directory

模拟执行:

ansible-playbook --check ping.yml

执行:

ansible-playbook ping.yml

ansible playbook脚本 pip安装包 ansible playbook ping_vim_05


ansible playbook脚本 pip安装包 ansible playbook ping_创建目录_06


注意:此处的hosts和/etc/ansible/hosts文件中写的内容保持一致,可以是组名、别名,也可以是ip

示例3:

vim touch-test.yml
---
- hosts: testB
  remote_user: root
  tasks:
  - name: make testfile
    file:
      path: /testdir/testfile
      state: touch
      mode: 0700

ansible playbook脚本 pip安装包 ansible playbook ping_创建目录_07


模拟执行:

ansible-playbook --check touch-test.yml

执行:

ansible-playbook touch-test.yml

ansible playbook脚本 pip安装包 ansible playbook ping_创建目录_08


ansible playbook脚本 pip安装包 ansible playbook ping_创建目录_09

示例4:

cp touch-test.yml touch-test1.yml 
vim touch-test1.yml 
---
- hosts: testB
  remote_user: root
  tasks:
  - name: make testfile
    file: path=/testdir/testfile state=touch mode=0700

ansible playbook脚本 pip安装包 ansible playbook ping_vim_10


参数信息可以写在同一行,不使用冒号的格式,可以使用=号连接

ansible playbook脚本 pip安装包 ansible playbook ping_创建目录_11

示例5:

cp touch-test1.yml touch-test2.yml 
vim touch-test2.yml 
---
- hosts: testB
  remote_user: root
  tasks:
  - name: make testfile
    file: path=/testdir/testfile
          state=touch
          mode=0700

ansible playbook脚本 pip安装包 ansible playbook ping_创建目录_12


参数信息也可以分开来写,不使用冒号的格式,使用=号连接

ansible playbook脚本 pip安装包 ansible playbook ping_创建目录_13

示例6:

vim touch-test2.yml 
---
- hosts: testB
  remote_user: root
  tasks:
  - file: path=/testdir/testfile
          state=touch
          mode=0700

ansible playbook脚本 pip安装包 ansible playbook ping_vim_14

name参数可以不写,默认为使用的模块名。但这里建议不要省略name参数!
注意:删掉name参数后,file作为开头,所以需要加-

语法检测:

ansible-playbook --syntax-check touch-test2.yml

ansible playbook脚本 pip安装包 ansible playbook ping_创建目录_15

示例7:

vim touch-test2.yml 
---
- hosts: testB
  remote_user: root
  tasks:
  - file: path=/testdir/testfile
          state=touch
          mode=0700
    name: make testfile

ansible playbook脚本 pip安装包 ansible playbook ping_参数信息_16


name参数可以卸载file后面(顺序不会有影响)

语法检测:

ansible-playbook --syntax-check touch-test2.yml

ansible playbook脚本 pip安装包 ansible playbook ping_参数信息_17