Ansible剧本的使用及简单演示(三)

一.playbooks编写说明

1)Playbooks 是 Ansible的配置,部署,编排语言.他们可以被描述为一个需要希望远程主机执行命令的方案,或者一组IT程序运行的命令集合.playbook中,当一个任务没有正常结束,那么其返回值不是0,那么后面的所有的操作不再执行

编写playbook需要用到的组件
1. Iventory file
2. Moudles
3. actions(command)

2).Playbooks 的格式是YAML,语法做到最小化,意在避免 playbooks 成为一种编程语言或是脚本,但它也并不是一个配置模型或过程的模型.

使用yaml语法时需要注意的问题:
1.所有的 YAML 文件(无论和 Ansible 有没有关系)开始行都应该是 —. 这是 YAML 格式的一部分, 表明一个文件的开始

2.列表中的所有成员都开始于相同的缩进级别, 并且使用一个 "- " 作为开头(一个横杠和一个空格
3.一个字典是由一个简单的 键: 值 的形式组成(这个冒号后面必须是一个空格
4.Ansible 使用 “{{ var }}” 来引用变量. 如果一个值以 “{” 开头, YAML 将认为它是一个字典, 所以我们必须引用它。

二.playbook的构成

  1. tasks 任务
  2. variables 变量
  3. templates 模版
  4. handlers 处理器
  5. roles 角色

三.Ansible剧本常用命令

1 .对剧本语法检测:

ansible-playbook --syntax-check  /root/ansible/httpd.yaml

2.-C模拟执行剧本:

ansible-playbook  -C /root/ansible/httpd.yaml

3.执行剧本:

ansible-playbook   /root/ansible/httpd.yaml

四.Ansible剧本实例

安装httpd并启动

第一步: 编写一个httpdin.yaml剧本,剧本内容如下
复制代码

[root@yxx ~]# vim httpdin.yaml
- hosts: all
  tasks:
   - name: install httpd
     yum: name=httpd state=present
   - name: start httpd
     service: name=httpd state=started

第二步:语法检测

检测没有问题

[root@yxx~]# ansible-playbook --syntax-check httpdin.yaml 

playbook: httpdin.yaml

第三步:模拟执行剧本

[root@yxx ~]# ansible-playbook -C httpdin.yaml 

PLAY [all] *********************************************************************************************************************

TASK [Gathering Facts] *********************************************************************************************************
ok: [10.220.5.139]
ok: [10.220.5.138]

TASK [install httpd] ***********************************************************************************************************
ok: [10.220.5.138]
changed: [10.220.5.139]

TASK [start httpd] *************************************************************************************************************
changed: [10.220.5.139]
ok: [10.220.5.138]

PLAY RECAP *********************************************************************************************************************
10.220.5.138               : ok=3    changed=0    unreachable=0    failed=0   
10.220.5.139               : ok=3    changed=2    unreachable=0    failed=0

第四步:执行剧本

经过上面的模拟执行,并不会真的执行脚本,下面我们来进行真正的执行
复制代码

[root@yxx~]# ansible-playbook  httpdin.yaml 

PLAY [all] *********************************************************************************************************************

TASK [Gathering Facts] *********************************************************************************************************
ok: [10.220.5.138]
ok: [10.220.5.139]

TASK [install httpd] ***********************************************************************************************************
ok: [10.220.5.138]
changed: [10.220.5.139]

TASK [start httpd] *************************************************************************************************************
ok: [10.220.5.138]
changed: [10.220.5.139]

PLAY RECAP *********************************************************************************************************************
10.220.5.138               : ok=3    changed=0    unreachable=0    failed=0   
10.220.5.139               : ok=3    changed=2    unreachable=0    failed=0

第五步:检查是否已经安装并启动成功

执行表名httpd安装并启动成功

[root@yxx ~]# ansible all -m shell -a "ss -tnl | grep 80"
10.220.5.139 | SUCCESS | rc=0 >>
LISTEN     0      128         :::80                      :::*                  

10.220.5.138 | SUCCESS | rc=0 >>
LISTEN     0      128         :::80                      :::*

经过上面的五步,就可以安装任意软件及启动了,前提是你需要配置好你的yum源。你来试一下安装nginx吧!