ansible自动化运维(三)——Playbook实战

前言

1.什么是ansible playbook?

Playbooks是一种完全不同的运用Ansible的方式,而且是非常之强大的;也是系统ansible命令的集合,其利用yaml语言编写,运行过程,ansbile-playbook命令根据自上而下的顺序依次执行。

简单来说,Playbooks 是一种简单的配置管理系统与多机器部署系统的基础。与现有的其他系统有不同之处,且非常适合于复杂应用的部署

同时,Playbooks开创了很多特性,它可以允许你传输某个命令的状态到后面的指令,如你可以从一台机器的文件中抓取内容并附为变量,然后在另一台机器中使用,这使得你可以实现一些复杂的部署机制,这是ansible命令无法实现的。

Playbooks可用于声明配置,更强大的地方在于,在Playbooks中可以编排有序的执行过程,甚至于做到在多组机器间,来回有序的执行特别指定的步骤。并且可以同步或异步的发起任务。

我们使用Ad-Hoc时,主要是使用 /usr/bin/ansible 程序执行任务.而使用Playbooks时,更多是将之放入源码控制之中,用之推送你的配置或是用于确认你的远程系统的配置是否符合配置规范。

2.playbook的语言格式

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

playbook是由一个或多个“play”组成的列表。play的主要功能在于将事先归并为一组的主机装扮成事先通过Ansible中的tasks定义好的角色(play的内容被称为tasks,即任务)。从根本上来讲所谓tasks无非是调用Ansible的一个module。将多个“play”组织在一个playbook中即可以让它们联同起来按事先编排的机制一同工作。

“plays”算是一个类比,可以通过多个plays告诉系统做不同的事情,不仅是定义一种特定的状态或模型。也可以在不同时间运行不同的plays。

playbook文件开头为 —;这是YAML将文件解释为正确的文档的要求。YAML允许多个“文档”存在于一个文件中,每个“文档”由 — 符号分割,但Ansible只需要一个文件存在一个文档即可,因此这里需要存在于文件的开始行第一行。

YAML对空格非常敏感,并使用空格来将不同的信息分组在一起,在整个文件中应该只使用空格而不使用制表符,并且必须使用一致的间距,才能正确读取文件。相同缩进级别的项目被视为同级元素。

以 - 开头的项目被视为列表项目。作为散列或字典操作,它具有key:value格式的项。YAML文档基本上定义了一个分层的树结构,其中位于左侧是包含的元素。YAML文件扩展名通常为.yaml或者.yml。

3.playbook的构成

Playbook主要有以下四部分构成:

  • target section:定义将要执行playbook的远程主机组
  • variable section:定义playbook运行时需要使用的变量
  • task section:定义将要在远程主机上执行的任务列表
  • handler section:定义task执行完成以后需要调用的任务

而Playbook对应的目录层有五个,分别如下:
一般所需的目录层有:(视情况可变化)

  • vars 变量层
  • tasks 任务层
  • handlers 触发条件
  • files 文件
  • template 模板

下面我们开始playbook文件的编写

1.实验环境

首先你需要部署好ansible,这里用的是前面部署好的环境,具体可参考博客:https://blog.csdn.net/meltsnow/article/details/95998573

2.修改vim编辑

我们在前面说过yaml文件的格式对空格时很敏感的,一般需要顶格书写,段落划分为两个空格,所以为了我们的书写习惯,我们修改.vimrc的形式,让我们的tab键一次时两个空格,方便我们的书写习惯。

[devops@server1 ansible]$ cd ..
[devops@server1 ~]$ ls
ansible
[devops@server1 ~]$ vim .vimrc
[devops@server1 ~]$ cat .vimrc 
autocmd filetype yaml setlocal ai ts=2 sw=2
[devops@server1 ~]$ 

在这里插入图片描述
这样更改后我们的devops的家目录地下的全部文件的vim编写tab键就都是两个空格了

3.编写playbook文件,自动安装httpd

[devops@server1 ~]$ cd ansible/
[devops@server1 ansible]$ mkdir file
[devops@server1 ansible]$ cd file/
[devops@server1 file]$ scp server2:/etc/httpd/conf/httpd.conf .
httpd.conf                                                        100%   11KB  11.5KB/s   00:00    
[devops@server1 file]$ ll
total 12
-rw-r--r-- 1 devops devops 11753 Jul 16 01:38 httpd.conf
[devops@server1 file]$ cd ..
[devops@server1 ansible]$ pwd
/home/devops/ansible
[devops@server1 ansible]$ 
[devops@server1 ansible]$ vim playbook.yml
[devops@server1 ansible]$ cat playbook.yml 
---
# deploy apache
- hosts: webservers
  tasks:
    - name: install httpd		安装httpd
      yum:
        name: httpd
        state: latest

    - name: create index.html		书写默认发布界面
      copy:
        content: "www.ljz.org\n"
        dest: /var/www/html/index.html
        
    - name: configure httpd		指定httpd的默认配置文件
      copy:
        src: file/httpd.conf
        dest: /etc/httpd/conf/httpd.conf
        owner: root
        group: root
        mode: 644
      notify: restart httpd		设置触发器,当更改httpd.conf就触发
  
	 - name: start httpd		启动httpd
       service:
         name: httpd
         state: started
         enabled: tr
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值