一、playbook用法

1、playbook的执行文件为YAML语言编写,所以文件名为xxx.yml。YAML语法可以参考https://docs.ansible.com/ansible/latest/reference_appendices/YAMLSyntax.html#id1

2、下面以安装httpd软件来作讲解

示例playbook:

[root@localhost test]# cat httpd.yml
---                    #文件起始行,也可以省略。但是不建议省略
- hosts: docker           #docker表示远程执行这个yml文件的主机组,这里也可以指定对应的主机ip,或者正则表达 
  remote_user: root         #远程执行命令的用户
  vars:              # vars以下为参数,可根据架构来选择是否有参数
    pkg: httpd           # 定义变量名为pkg,值为httpd,后续可以使用{{ pkg }}来引用

tasks:                 # tasks后续跟执行的任务
    - name: uninstall httpd         # 自定义任务名
      yum: name={{ pkg }} state=absent    # 任务执行命令, 这里表示用yum模块来卸载 httpd软件, {{ pkg }}引用vars中已经定义的变量,state表示对软件的操作,这里表示卸载
      tags: unhttpd               # tags为标签,任务都可以加上标签名,通过tags我们可以执行特定的任务,例如:ansible-playbook -t unhttpd httpd.yml 表示执行http.yml中tags为unhttpd的任务
    - name: install http
      yum: name={{ pkg }} state=installed  #这里表示用yum模块来安装 httpd软件
      tags: httpd
    - name: copy cfg
      copy: src=/opt/test/httpd.conf dest=/etc/httpd/conf/       #这里表示调用copy模块来将src的文件copy到目的地dest指定的位置
      notify: restart service         # notify 可以理解为触发器,与handlers配合起来使用。 当notify标注的任务被成功执行后,就会触发对应的handlers任务执行
      tags: copy
    - name: start service
      service: name=httpd state=started enabled=yes
      tags: httpd

handlers:               #handlers和notify配合使用
    - name: restart service        # 任务名需要和notify名称一致,多个相同的任务可以使用同一个notify名称来触发同一个handlers任务,handlers任务可以为多个
      service: name=httpd state=restarted

3、执行playbook

-C表示执行检查,不会对系统做改变,会完整的运行所有任务,检查playbook任务是否正确:

#ansible-playbook -C httpd.yml

执行playbook,根据任务顺序执行,系统会根据任务有所变化:

# ansible-playbook httpd.yml

执行结果说明:

绿色: 执行成功,不需要做改变(这里好像并不是一定不改变)

红色: 执行失败

黄色: 执行成功,并且系统有变化

执行结果颜色可以通过ansible的配置文件进行私人定制。

4、关于模块的使用

ansible-doc --list  #可以列出所有可使用模块,核心模块:http://ansible.com.cn/docs/modules_core.html  额外模块:http://github.com/ansible/ansible-modules-extras

ansible-doc  -s Module_Name   #查询模块的使用方法 ,如: ansible-doc  -s yum  查询yum模块的使用方法

ansible-doc Module_Name    #更详细的展示模块的使用,和linux中的man手册类似

5、关于参数的定义

参数优先级: 命令行>局部>全局

♦ 通过命令指定,优先级最高

ansible-playbook -e varname=value xxx.yml

♦ ansilbe setup facts远程主机的多有变量都可以直接使用可以在执行ansible命令的时候给与变量值

ansible hostip -m setup      #可以查询到ansible系统的一些信息,其中就包括可以直接使用的变量

♦ 在/etc/ansible/hosts中定义

普通变量;主机组中单独定义,优先级高于公共变量

公共(组)变量:针对主机组中所有主机定义统一变量

[docker]
172.17.0.2 http_port=80   #普通变量
172.17.0.3 http_port=90

[docker:vars]
http_port=100      #公共变量

♦ 在playbook中定义

vars:

- var1: value1

   - var2: value2

♦ 在role中定义

需要一个固定的vars目录来存放编辑变量的文件,后续roles的使用中会讲到

ansible-playbook用法的更多相关文章

  1. ansible playbook模式及语法

    一.什么是playbook及其组成 什么是playbook playbook 翻译过来就是"剧本" playbook的组成 play:定义的是主机的角色 task:定义的是具体执行 ...

  2. ansible playbook详解

    ansible playbook是由yml语法书写,结构清晰,可读性强,所以必须掌握yml基础语法 语法 描述 缩进 YAML使用固定的缩进风格表示层级结构,每个缩进由两个空格组成,不能使用tabs键 ...

  3. 02 . Ansible高级用法(运维开发篇)

    自动化任务简介 假设我们要在10台linux服务器上安装一个nginx服务,手动是如何做的? # 第一步, ssh登录NUM(1,n)服务器 # 第二步,输入对应服务器密码 # 第三步,执行命令: y ...

  4. (三)ansible playbook

    一,YAML语法 YAML的语法和其他高阶语言类似并且可以简单表达清单.散列表.标量等数据结构.(列表用横杆表示,键值对用冒号分割,键值对里又可以嵌套另外的键值对) YAML文件扩展名通常为.yaml ...

  5. Ansible playbook API 开发 调用测试

    Ansible是Agentless的轻量级批量配置管理工具,由于出现的比较晚(13年)基于Ansible进行开发的相关文档较少,因此,这里通过一些小的实验,结合现有资料以及源码,探索一下Ansible ...

  6. ansible playbook实践(四)-如何调试写好的playbook文件

    有时,我们写了一个长长,功能很强悍的yaml文件,但是,我们有可能会担心,写的yaml文件是否正确,是否有漏洞危机,毕竟是要修改线上的机器,那么,有可能我们可以从以下几个检查维度来进行,确保在大规模应 ...

  7. ansible playbook批量改ssh配置文件,远程用户Permission denied

    最近手里的数百台服务器需要改/etc/ssh/sshd_config的参数,禁止root直接登陆,也就是说 [root@t0 ~]# cat /etc/ssh/sshd_config | grep R ...

  8. ansible笔记(11):初识ansible playbook(二)

    ansible笔记():初识ansible playbook(二) 有前文作为基础,如下示例是非常容易理解的: --- - hosts: test211 remote_user: root tasks ...

  9. ansible笔记(10):初识ansible playbook

    ansible笔记():初识ansible playbook 假设,我们想要在test70主机上安装nginx并启动,我们可以在ansible主机中执行如下3条命令 ansible test70 -m ...

  10. Ansible playbook 批量修改服务器密码 先普通后root用户

    fsckzy   Ansible playbook 批量修改服务器密码 客户的需求:修改所有服务器密码,密码规则为Rfv5%+主机名后3位 背景:服务器有CentOS6.7,SuSE9.10.11,r ...

随机推荐

  1. java 设计模式 ---- 单例模式

    只产生一个实例, 所以要使用静态方法对外暴露对象(如果使用反射技术, 也能调用私有的构造方法) 懒汉模式 并发时还是可能会产生多个实例, 所以同步处理 public class User{ priva ...

  2. Android远程桌面助手(B1332)之文件管理器

    Android远程桌面助手除了支持Android界面的显示及控制外,还支持Android文件系统的管理,包括文件的快速上传(push).下拉(pull)和查看(cat). Android远程桌面助手( ...

  3. Android破解学习之路(十四)——【Unity3D】王牌大作战破解

    一.前言 今天带来的是王牌大作战的破解教程,游戏下载的话,我是直接去TapTap官网下载的 支付宝内购破解用老套了,今天学点破解的新花样吧!! 二.支付宝内购破解 支付宝的内购破解已经很熟悉了, 直接 ...

  4. 深圳市共创力推出独家课程《AHB和OSG》高级实务培训课程!

     <AHB和OSG>高级实务培训课程大纲 [适合对象]:高层管理者.产品经理.资源经理.各专项经理.研发等部门的负责人和骨干员工. [课程受益]:高层如何对项目的优先级进行排序和资源分配. ...

  5. 自动化批量管理工具pssh - 运维小结

    pssh提供OpenSSH和相关工具的并行版本.包括pssh,pscp,prsync,pnuke和pslurp.该项目包括psshlib,可以在自定义应用程序中使用.pssh是python写的可以并发 ...

  6. 网络流24题 P1251 餐巾计划问题 拆点

    题目描述 一个餐厅在相继的 NN 天里,每天需用的餐巾数不尽相同.假设第 ii 天需要 r_iri​块餐巾( i=1,2,...,N).餐厅可以购买新的餐巾,每块餐巾的费用为 pp 分;或者把旧餐巾送 ...

  7. random使用方法

    random.random() 没有参数,选择0到1之间的随机浮点数 random.uniform(a, b) 生成指定范围内的随机浮点数如果a.b哪个大那个小都没关系,生成的都是在小的与大的之间的随 ...

  8. [Alpha阶段]第七次Scrum Meeting

    Scrum Meeting博客目录 [Alpha阶段]第七次Scrum Meeting 基本信息 名称 时间 地点 时长 第七次Scrum Meeting 19/04/11 大运村寝室6楼 35min ...

  9. PY3_线程红绿灯

    # Author:jum_# event 事件监测 红灯停绿灯行 线程标志位# 事件主要提供了三个方法wait.clear.set# clear:将“Flag”设置为False#set:将“Flag” ...

  10. JS中的事件委托(事件代理)

    一步一步来说说事件委托(或者有的资料叫事件代理) js中事件冒泡我们知道,子元素身上的事件会冒泡到父元素身上. 事件代理就是,本来加在子元素身上的事件,加在了其父级身上. 那就产生了问题:父级那么多子 ...