自动化运维ansible使用playbook自动化一键部署

一,使用playbook的好处

Playbook 是由一个或多个play组成的列表,主要功能是将task定义好的角色归并为一组进行统一管理,也就是通过Ansible的模板将多个play组织在一个Playbook中运行。相当于shell脚本,shell脚本与linux普通命令之间的关系就像是playbook与ansible命令之间的关系。都是集中化的一键式部署,减少了工作中的繁琐简单或者是重复性的操作。

1,playbook的特点

  • 易读的编排语言
  • 适合配置管理和应用部署
  • 非常适合部署复杂的工作

2,playbook格式(yaml语言)

playbook由YMAL语言编写。YAML参考了其他多种语言,包括:XML、C语言、Python、Perl等。MAL格式是类似于JSON的文件格式,便于人理解和阅读,同时便于书写。以下为playbook常用到的YMAL格式。

  • YMAL中的列表元素以”-”开头然后紧跟着一个空格,后面为元素内容。就像这样- host。
  • 同一个列表中的元素应该保持相同的缩进。否则会被当做错误处理。
  • playbook中hostsvariablesrolestasks等对象的表示方法都是键值中间以”:”分隔,”:”后面还要增加一个空格。
  • 剧本以.yml后缀

3,palybook的核心元素

Playbook本身由以下各部分组成:

  • (1)Hosts 运行指定任务的目标主机;
  • 2)Tasks: 任务,即调用模块完成的操作;
  • (3)Variables: 变量;内置变量或自定义变量在playbook中调用
  • (4)Templates: 模板;使用模板语法的文件,比如说是配置文件等等
  • (5)Handles: 处理器,与notity结合使用,当某条件满足时,触发执行的操作;
  • (6)Roles: 角色

二,任务列表的元素介绍

Playbook的主体是任务列表。任务列表中的任务依照次序逐个在hosts中指定的所有主机上执行,如果发生错误会将所有已执行任务回滚。

1,模块,模块参数格式

 task的任务是按照指定的参数去执行模块。

格式为:


task
  - name: 执行项名称
     执行的动作: 条件或选项

例如: 
tasks:
 - name: test connection
   ping: ping 20.0.0.20
   

在Ansible自带模块中,command模块和shell模块只需要一个列表定义即可,无需使用key=value格式。

2.Handles和tags的使用

Handlers用于当关注的资源发生变化时所采取的操作。使用tags让用户选择跳过没有变化的代码,只运行Playbook中发生变化的部分代码。

(1) 某任务的状态在运行后为changed时,可通过“notify”通知给相应的handlers;

(2) 任务可以通过“tags“打标签,通过 ansible-playbook命令 使用 --tags选项能实现仅运行指定的tasks

vim /etc/ansible/nginx.yml

- hosts: nginx
  remote_user: root
  tasks:
    - name:yum install epel-release -y    #安装epel源
      yum: name=epel-release state=latest
    - name: yum install nginx -y  #安装nginx
      yum: name=nginx state=latest
    - name: copy nginx.conf   #拷贝配置文件
      copy: src=/opt/nginx.conf dest=/etc/nginx/nginx.conf backup=yes
      notify:
        - reload     #会触发handlers中名字为reload的任务
      tags: 
        - reloadnginx
    - name: start nginx   #启动nginx服务
      service: name=nginx state=started
      tags: 
        - startnginx
  handlers:
    - name: reload  #重载配置
      service: name=nginx state=reloaded

执行:ansible-playbook nginx.yml 

修改配置文件内容之后执行时调用标签ansible-playbook nginx.yml --tags= “reloadnginx”,就会跳过安装步骤直接重载配置文件并启动服务。

3,variables: 变量

猜你喜欢

转载自blog.csdn.net/Lihuihui006/article/details/112618039