一,ansible使用playbook的优点

1,用ansible执行一些简单的任务,使用ad-hoc命令就可以解决问题

如果执行复杂的功能,需要大量的操作,执行的ad-hoc命令会不够方便,这时我们选择使用playbook。

 使用playbook你可以方便的重用代码,可以移植到不同的机器上面

可以像函数一样,最大化的复用代码。

如果把常见的操作都编写成playbook,之后管理服务器会变得十分简单

2,playbook使用YMAL语言编写

YMAL语言的格式:

   文件的第一行以 "---" (三个连字符)开始,表示是YMAL文件的开始。
  在同一行中,#之后的内容表示注释
  YMAL中的列表元素以”-”开头然后紧跟着一个空格,后面为元素内容
  同一个列表中的元素应该保持相同的缩进,否则会被当做错误处理
  play中hosts/variables/roles/tasks等对象的表示方法都是键值中间以": "分隔表示(":"后面还有一个空格)

说明:刘宏缔的架构森林是一个专注架构的博客,地址:https://www.cnblogs.com/architectforest

对应的源码可以访问这里获取: https://github.com/liuhongdi/

说明:作者:刘宏缔 邮箱: 371125307@qq.com

二,例子:编写一个简单的playbook

功能:安装screen

#hosts:指定要操作的hosts,如果是所有机器,可以用all

#remote_user: 登录用的用户

#become:是否要切换用户

#become_user:要切换到的用户

#tasks:要执行的任务

#command: 用command模块执行命令

#说明:用dnf安装软件其实应该用dnf模块,我们这里只是做一个演示

[root@centos8 playbook]# vi installscreen.yml 

代码:

---
- hosts: yujian
remote_user: webop
become: yes
become_user: root
tasks:
- name: "安装screen"
command: dnf install --quiet -y screen

测试执行:

[liuhongdi@centos8 playbook]$ ansible-playbook installscreen.yml 

PLAY [yujian] ******************************************************************************************
TASK [Gathering Facts] ********************************************************************************* TASK [安装screen] ***************************************************************************************
[WARNING]: Consider using the dnf module rather than running 'dnf'.
If you need to use command because dnf is insufficient you can add 'warn: false' to this
command task or set 'command_warnings=False' in ansible.cfg to get rid of this message.
changed: [121.122.123.47] PLAY RECAP *********************************************************************************************
121.122.123.47 : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0

说明:用dnf安装软件应该使用dnf模块

ansible给出了一个warning,

我们这里只做为演示,不用管它

服务器端检查是否安装成功?

[root@blog ~]$ whereis screen
screen: /usr/bin/screen /usr/share/screen /usr/share/man/man1/screen.1.gz /usr/share/info/screen.info.gz

安装成功了

三,playbook参数的使用例子:

1,语法检查

[root@centos8 installscreen]# ansible-playbook  --syntax-check installscreen.yml

2,列出涉及到的host

[root@centos8 installscreen]# ansible-playbook  --list-host installscreen.yml 

3,检查会发生的改变,但不是真的执行命令

[root@centos8 installscreen]# ansible-playbook --check installscreen.yml 

4,列出tasks

[root@centos8 playbook]# ansible-playbook  --list-tasks installscreen.yml

四,例子: 使用playbook执行script并查看执行结果

脚本的功能是发布git分支

1,脚本:

[liuhongdi@centos8 script]$ vi gitpubwww.sh 

内容

cd /data/web/think_www;
echo "---------------------------------------git status:\n";
git status;
echo "---------------------------------------git pull:\n";
git pull origin master;
echo "---------------------------------------git status:\n";
git status;

2,发布git分支的playbook

#register: 注册一个变量,用来存储返回的结果

#debug:启用debug模块,把输出结果显示出来

[root@centos8 playbook]# vi gitpubwww.yml 

内容

---
- hosts: yujian
remote_user: webop
become: yes
become_user: root
tasks:
- name: "www项目发布git分支"
script: /data/ansible/script/gitpubwww.sh
register: gitpub_out
- name: "查看结果"
debug: var=gitpub_out verbosity=0

3,执行playbook

[liuhongdi@centos8 playbook]$ ansible-playbook gitpubwww.yml

五,查看ansible的版本

[liuhongdi@centos8 ~]$ ansible --version
ansible 2.9.7
config file = /etc/ansible/ansible.cfg
configured module search path = ['/home/liuhongdi/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
ansible python module location = /usr/lib/python3.6/site-packages/ansible
executable location = /usr/bin/ansible
python version = 3.6.8 (default, Nov 21 2019, 19:31:34) [GCC 8.3.1 20190507 (Red Hat 8.3.1-4)]

ansible使用playbook的简单例子(ansible2.9.7)的更多相关文章

  1. Ansible之playbook的使用总结 - 运维笔记

    之前详细介绍了Ansible的安装, 配置, 以及Ansible常用模块的使用. 下面对Ansible的playbook用法做一小结. 为什么引入playbook?一般运维人员完成一个任务, 比如安装 ...

  2. Ansible进阶--playbook的使用

    一.什么是playbooksplaybooks是ansible的脚本.如同shell脚本一样,它是控制远程主机的一系列命令的集合,通过YAML语言编写.执行一些简单的任务,我们可以使用ad-hoc命令 ...

  3. ansible基础-playbook剧本的使用

    ansible基础-playbook剧本的使用 作者:尹正杰  版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.YAML概述 1>.YAML的诞生 YAML是一个可读性高,用来表达数据序 ...

  4. ansible学习-playbook的YAML语法

    [一篇非常好的ansible参考博文] 初识Ansible http://liumissyou.blog.51cto.com/4828343/1616462 --------------------- ...

  5. 自动化运维工具——ansible剧本playbook(三)

    一.Playbook--Ansible剧本 playbook是由一个或多个 "play"组成的列表 play的主要功能在于将事先归并为一组的主机装扮成事先通过ansible中的ta ...

  6. 利用ansible书写playbook搭建HAProxy+Keepalived+PXC负载均衡和高可用的PXC环境续

    ansible.playbook.haproxy.keepalived.PXC haproxy+keepalived双主模式调度pxc集群 HAProxy介绍 反向代理服务器,支持双机热备支持虚拟主机 ...

  7. Hibernate4.2.4入门(一)——环境搭建和简单例子

    一.前言 发下牢骚,这段时间要做项目,又要学框架,搞得都没时间写笔记,但是觉得这知识学过还是要记录下.进入主题了 1.1.Hibernate简介 什么是Hibernate?Hibernate有什么用? ...

  8. AgileEAS.NET SOA 中间件平台.Net Socket通信框架-简单例子-实现简单的服务端客户端消息应答

    一.AgileEAS.NET SOA中间件Socket/Tcp框架介绍 在文章AgileEAS.NET SOA 中间件平台Socket/Tcp通信框架介绍一文之中我们对AgileEAS.NET SOA ...

  9. spring mvc(注解)上传文件的简单例子

    spring mvc(注解)上传文件的简单例子,这有几个需要注意的地方1.form的enctype=”multipart/form-data” 这个是上传文件必须的2.applicationConte ...

随机推荐

  1. [Binder深入学习一]Binder驱动——基础数据结构

    具体代码路径: kernel/drivers/staging/android/binder.c kernel/drivers/staging/android/binder.h /* * binder_ ...

  2. zepto | 用事件委托去解决无法给新增添的DOM添加事件的问题

    前段时间在做一个任务的时候,碰见了一个问题:zepto无法用on事件去监听新增加的dom事件.这个问题用live可解决, 但是live在ios下失效,为了解决这个问题,我采用了暴力的方法去解决,每次添 ...

  3. openstack共享组件——Memcache 缓存系统(4)

    云计算openstack共享组件——Memcache 缓存系统(4)   一.缓存系统 一.静态web页面: 1.在静态Web程序中,客户端使用Web浏览器(IE.FireFox等)经过网络(Netw ...

  4. 如何成为一位优秀的ScrumMaster

    嗨,大家好,我是叶子 背景介绍 目标:为了能更好的适应快速变化的需求和不确定的未来. 部门包含岗位:部门负责人.项目经理.产品经理.开发团队(开发人员.测试人员) 那么这种情况下,我们想转型Scrum ...

  5. Redis单机安装以及集群搭建

    今天主要来看一下Redis的安装以及集群搭建(我也是第一次搭建). 环境:CentOS 7.1,redis-5.0.7 一.单机安装 1.将Redis安装包放置服务器并解压 2.进入redis安装目录 ...

  6. Django中间件之SessionMiddleware源码分析

    settings.py文件中 MIDDLEWARE = [ 'django.contrib.sessions.middleware.SessionMiddleware', ] # from djang ...

  7. 虚拟机栈(Java Stack)基础知识

    虚拟机栈即是程序运行时的单位,而堆是数据存储的单位.换句话说,栈解决的是程序运行的问题,即程序如何执行,如何处理数据,而堆是解决数据的存储问题,数据存在哪,放在哪 虚拟机栈细节如下图所示,其中当前栈帧 ...

  8. Python推导式(列表推导式、元组推导式、字典推导式和集合推导式)

    列表表达式 a_range = range(10) # 对a_range执行for表达式 a_list = [x * x for x in a_range] # a_list集合包含10个元素 pri ...

  9. 能否使用GHDL+GTKWave代替Quartus ii (续——vhdl_testbench_cli)

    vhdl_testbench_cli项目介绍 这是我放在gitee上的一个项目. 项目是用于Mac系统下生成vhdl testbench的工具. 主要就是续着这篇文章<能否使用GHDL+GTKW ...

  10. Linux基本命令学习

    对操作系统进行信息查询 硬盘大小 查看磁盘信息:  fdisk -l/dev/sda       操作系统中第一块硬盘的名称以及所在路径linux操作系统中一切皆文件(文件名)        sd(硬 ...