一、playbook剧本介绍

1)playbook介绍

Playbooks是Ansible的配置,部署和编排语言。它们可以描述您希望远程系统执行的策略,或一般IT流程中的一组步骤。
如果说ansible 模块 是你车间里的工具,那么playbooks 是你的说明书/使用手册,并且资源清单上的主机是你的原材料。
在基本层面上,剧本可以用于管理远程主机的配置与部署,在更高的一层来说,它们可以对涉及滚动更新的多层发布任务进行排序,并且可以将操作委派给其他主机,同时与监视服务器和负载平衡器进行交互。
在ansible 上使用Playbooks是一种完全不同于adhoc的任务执行模式,并且特别强大。简单地说,playbooks是一个非常简单的配置管理和多机器部署系统的基础,以及非常适合部署复杂应用程序的系统。
Playbooks可以对任务进行编排,就像我们要安装一个程序,写个安装shell脚本一样,在哪一步复制配置文件,最后一步启动服务。
虽然/usr/bin/ansible 可以运行一些临时任务,但是针对复杂的配置,并且可以将配置标准化,这个时候就需要Playbooks了。

2)写简单的playbook剧本,tree_install.yml

[root@web01 ~]# cat ansible_test/tree_install.yml
---
- hosts: web01
tasks:
- name: Installs tree
yum: name=tree state=installed update_cache=true

剧本写好了,需要先测试一下语法

 ansible-playbook -C xx.yml  测试的时候先验证语法 

分析剧本内容

---
- hosts: web01
tasks:
- name: Installs tree
yum: name=tree state=installed update_cache=true =======分析=========
hosts 执行的主机。在 /etc/ansible/hosts
tasks 任务
name 任务名字
yum 执行的命令操作
yum install tree -y
name=tree ==>指要安装的名字,update_cache=true ==> 相当于 y

执行记录

第一次执行
[root@web01 ~]# ansible-playbook ansible_test/tree_install.yml
PLAY [web01] ************************************************************************************************************************************************************************ TASK [Gathering Facts] **************************************************************************************************************************************************************
ok: [192.168.10.25]
ok: [myweb] TASK [Installs lrzsz] ***************************************************************************************************************************************************************
changed: [myweb]
changed: [192.168.10.25] PLAY RECAP **************************************************************************************************************************************************************************
192.168.10.25 : ok= changed= unreachable= failed=
myweb : ok= changed= unreachable= failed=
返回状态:ok=(执行成功) changed=(命令执行成功) 第二次再执行
[root@web01 ~]# ansible-playbook ansible_test/tree_install.yml
PLAY [web01] ************************************************************************************************************************************************************************ TASK [Gathering Facts] **************************************************************************************************************************************************************
ok: [192.168.10.25]
ok: [myweb] TASK [Installs lrzsz] ***************************************************************************************************************************************************************
ok: [192.168.10.25]
ok: [myweb] PLAY RECAP **************************************************************************************************************************************************************************
192.168.10.25 : ok= changed= unreachable= failed=
myweb : ok= changed= unreachable= failed=
返回状态:ok=(执行成功) changed=(已经安装了)

执行结果

等同于 ansible web01 -m yum -a "name=tree state=present update-cache=true"

等同于ansible web01 -a "yum install tree -y"

3)playbook剧本安装nginx并启动他

[root@web01 ~]# cat ansible_test/nginx_install.yml
---
- hosts: nginx01
tasks:
- name: Installs nginx web server
yum: name=nginx state=installed update_cache=true
notify:
- start nginx handlers:
- name: start nginx
service: name=nginx state=started

执行结果分析

[root@web01 ~]# ansible-playbook ansible_test/nginx_install.yml
PLAY [nginx01] ********************************************************************************************************************************************************************** TASK [Gathering Facts] **************************************************************************************************************************************************************
ok: [k8s1_192_168_10_41] TASK [Installs nginx web server] ****************************************************************************************************************************************************
changed: [k8s1_192_168_10_41] RUNNING HANDLER [start nginx] *******************************************************************************************************************************************************
changed: [k8s1_192_168_10_41] PLAY RECAP **************************************************************************************************************************************************************************
k8s1_192_168_10_41 : ok= changed= unreachable= failed=
结果分析ok=,连接OK,安装OK,启动ok changed=,安装变化,启动变化

4)以指定主机iP的形式提交任务,需要加上 -l

ansible-playbook -l 192.168.10.176 nginx_install.yml

测试未通过

5) 安装nginx并拷贝文件

---
- hosts: all
tasks:
- name: Installs nginx web server
yum: name=nginx state=installed update_cache=true
notify:
- start nginx
- name: Upload default index.html for host
copy: src=static_files/index.html dest=/usr/share/nginx/html/ mode= handlers:
- name: start nginx
service: name=nginx state=started

6)调用shell命令

[root@k8s6 ansible_yml]# cat shell.yml
---
- hosts: web
tasks:
- name: shell_test
shell: ss -tnl|grep :

二、playbook剧本的深入操作

1)任务执行结果判断,register

---
- hosts: all
tasks:
- name: Installs nginx web server
yum: name=nginx state=installed update_cache=true
notify:
- start nginx - name: Upload default index.html for host
copy: src=static_files/index.php dest=/usr/share/nginx/html/ mode=
register: php
ignore_errors: True

# 如果任务php执行成功,执行该任务
- name: Remove index.html for host
command: rm /usr/share/nginx/html/index.html
when: php|success

# 如果任务php执行失败,执行该任务
- name: Upload default index.html for host
copy: src=static_files/index.html dest=/usr/share/nginx/html/ mode=
when: php|failed handlers:
- name: start nginx
service: name=nginx state=started

分析关键字

执行该任务,并注册任务名字
register: php php任务执行成功后执行
when: php|success php任务执行失败后执行
when: php|failed

2)生产环境服务安装

---
- name: 安装neodb
hosts: eos-neodb
vars_files:
- vars/iot.yml
tasks:
- name: "build java 1.8.0"
shell: "sudo sed -i s/jdk1.7.0_79/jdk1.8.0_60/g {{ profile_path }}" - name: "check java version"
shell: "source {{ profile_path }} && java -version"
register: java_version
failed_when: java_version is defined and "1.8.0" not in java_version.stderr - name: "check neodb"
shell: "sudo ls /home/envuser/ongdb-enterprise-3.4.9"
register: check_neodb
failed_when: check_neodb is defined and "No such file or directory" not in check_neodb.stderr - name: Upload {{ neodb }}
become: yes
become_user: root
become_method: sudo
copy: src={{ srcfile }} dest={{ descfile }} - name: tar -xf {{ neodb }}
become: yes
become_user: root
become_method: sudo
shell: cd {{ descfile }} && tar -xf {{ neodb }} && chown envuser:envuser -R {{ ongdb }} - name: Upload neo4j.conf
become: yes
become_user: root
become_method: sudo
copy: src=/home/supper-user/tools/neo4j.conf dest=/home/envuser/ongdb-enterprise-3.4./conf/ - name: ln -s ongdb-enterprise-3.4.
become: yes
become_user: envuser
become_method: sudo
shell: cd /home/envuser && ln -s ongdb-enterprise-3.4. ongdb - name: sed neo4j
become: yes
become_user: envuser
become_method: sudo
shell: cd /home/envuser/ongdb-enterprise-3.4./conf/ && sed -i "s#hostname#`hostname`#g" neo4j.conf && chown envuser:envuser neo4j.conf - name: "set admin password"
become: yes
become_user: envuser
become_method: sudo
shell: source {{ profile_path }} && cd /home/envuser/ongdb-enterprise-3.4./bin/ && ./neo4j-admin set-initial-password admin

ansible的playbook剧本的更多相关文章

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

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

  2. Ansible之playbook剧本

    Ansible之playbook剧本 目录 Ansible之playbook剧本 1. playbook的组成 2. 剧本示例test1 2.1 剧本制作 2.2 准备http.conf 2.3 运行 ...

  3. 2.Ansible Playbook剧本

    1.playbook?playbook翻译过来就是"剧本",那playbook组成如下 play: 定义的是主机的角色 task: 定义的是具体执行的任务 playbook: 由一 ...

  4. Linux ansible 之 playbook

    playbook 剧本 yaml 字典 key:value 列表 [] - 后缀名:yaml.yml playbook 命令格式 Usage: ansible-playbook [options] p ...

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

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

  6. 在CentOS7.6上安装自动化运维工具Ansible以及playbook案例实操

    前言 Ansible是一款优秀的自动化IT运维工具,具有远程安装.远程部署应用.远程管理能力,支持Windows.Linux.Unix.macOS和大型机等多种操作系统. 下面就以CentOS 7.6 ...

  7. ansible 调用playbook api执行(一)

    一 调用ansible playbook api执行playbook 1 准备好hosts文件 root@ansible:~/ansible/playbooks# cat hosts [all:var ...

  8. Ansible基于playbook批量修改主机名实战

    Ansible基于playbook批量修改主机名 安装Ansible,相信这里也不用多说,大家都知道 说一下环境:这里的主机名是修改之后的,我先把其他两台的主机名改为别的 192.168.30.21 ...

  9. Playbook剧本小结

    1.Playbook剧本小结 1.什么是playbook,playbook翻译过来就是"剧本",那playbook组成如下 play: 定义的是主机的角色task: 定义的是具体执 ...

随机推荐

  1. TCP和UDP协议的比较

    通信协议 网络通信是两台计算机上的两个进程之间的通信. 网络通信需要通信协议.网络协议有很多种,就像我们平常交流说话,也有多种语言.. 最常见的协议是TCP/IP协议.UDP协议. TCP:TCP 是 ...

  2. WebForm从客户端中检测到有潜在危险的Request.Form 值的处理办法

    从客户端中检测到有潜在危险的 Request.Form 值由于在.net中,Request时出现有HTML或Javascript等字符串时,系统会认为是危险性值.立马报错上面的错误. 如:在网页的Te ...

  3. 专项测试——移动app安装包检测

    一.背景和现状 安装包的重要性无需多提,针对安装包质量控制越来越严格和规范,包括证书.文件大小.安装成功率等,APP的证书及混淆是影响APP的安装成功率及代码安全性的很大因素,随着功能迭代,安装包也会 ...

  4. Win7系统不能记忆窗口大小与位置解决方法

    似在某此系统优化后,无意发现系统在注销或重启后,打开资源管理器,它以默认大小及位置显示. 对于习惯自定义操作来说,甚为不便,遍找方法未有奏效者,但总萦绕心头,时时记起. 今日再找问题解决方法,难兄难弟 ...

  5. swift - layer - 渐变色 - CAGradientLayer

    1.创建 渐变色 /// 渐变色:默认从上到下 private var gradientLayer: CAGradientLayer = { let g = CAGradientLayer() g.c ...

  6. 关于MYSQL字符集问题(二)

    1.查看默认字符集(默认情况下,mysql的字符集是latin1(ISO_8859_1) 通常,查看系统的字符集和排序方式的设定可以通过下面的两条命令: mysql> SHOW VARIABLE ...

  7. BOM浏览器对象模型;

    1.window.open(url,ways) url是打开的网页地址 ways是打开方式(-blank:-self) 2.window.close()关闭窗口 3.浏览器的用户信息 window.n ...

  8. DevExpress之TreeList节点绑定图片

    最近在项目中使用到了DX中的TreeList控件绑定数据源时在每个节点前显示特点的图片:查阅相关资料实现方法如下:1.首先打开VS2010新建一个WINFROM应用程序: 2.在WINFROM应用程序 ...

  9. Oracle_SQL(3) DML增删改

    sql语言按功能分为:数据定义语言DDL.数据操纵语言DML.数据查询语言DQL.数据控制语言DCL 一.数据操纵语言DML1.insert 新增 语法:insert into <表名> ...

  10. HTML知识基础

    HTML 超文本标记语言(Hyper  Text  Markup Language):是一种用于创建网页的标准标记语言. Hyper  Text:指具有交互功能文本. Markup Language: ...