当前位置: 首页 > news >正文

playbook剧本

playbook剧本

示例一、对所有受控主机配置yum仓库
[student@master ansible]$ vim web.yml
[student@master ansible]$ ansible-playbook web.ymlPLAY [repo] ****************************************************************************TASK [Gathering Facts] *****************************************************************
ok: [node4]
ok: [node3]
ok: [node5]
ok: [node2]
ok: [node1]TASK [repo1] ***************************************************************************
ok: [node3]
ok: [node4]
ok: [node5]
ok: [node2]
ok: [node1]TASK [repo2] ***************************************************************************
changed: [node1]
changed: [node5]
changed: [node2]
changed: [node4]
changed: [node3]PLAY RECAP *****************************************************************************
node1                      : ok=3    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
node2                      : ok=3    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
node3                      : ok=3    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
node4                      : ok=3    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
node5                      : ok=3    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   

在这里插入图片描述

示例二:
1、 安装httpd,在node1执行
2、 开机自启
3、 给/var/www/html目录创建软链接/www
4、 从http://ansible.example.com/index.html下载至/www
5、 能够访问该web站点
[root@ansible ~]# cd /var/www/html
[root@ansible html]# ls
ansible-automation-platform  materials  rhel9  roles
[root@ansible html]# vim index.html
[root@ansible html]# cat index.html
welcome
[student@master ansible]$ vim web1.yml
[student@master ansible]$ ansible-playbook web1.ymlPLAY [webstation] **********************************************************************TASK [Gathering Facts] *****************************************************************
ok: [node1]TASK [install httpd] *******************************************************************
changed: [node1]TASK [create link] *********************************************************************
changed: [node1]TASK [get html] ************************************************************************
changed: [node1]TASK [restart httpd] *******************************************************************
changed: [node1]TASK [set firewalld for http] **********************************************************
changed: [node1]PLAY RECAP *****************************************************************************
node1                      : ok=6    changed=5    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   [student@master ansible]$ curl http://node1
welcome

在这里插入图片描述

示例三:
notify handlers用法(当完成….任务时,则进行….任务)
1、创建用户user1
2、创建用户user2
3、在创建用户user2之后执行在/tmp下创建文件stw1(也就是在完成创建user2任务后,触发任务stw)
[student@master ansible]$ vim test.yml
[student@master ansible]$ ansible-playbook test.ymlPLAY [this is a test playbook] *********************************************************TASK [Gathering Facts] *****************************************************************
ok: [node1]TASK [create user1] ********************************************************************
changed: [node1]TASK [create user2] ********************************************************************
changed: [node1]RUNNING HANDLER [stw] ******************************************************************
changed: [node1]PLAY RECAP *****************************************************************************
node1                      : ok=4    changed=3    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   

在这里插入图片描述

在执行一遍:发现不执行stw任务(因为创建user2任务状态没有改变,只有创建user2任务状态改变时才会执行stw任务)
[student@master ansible]$ ansible-playbook test.ymlPLAY [this is a test playbook] *********************************************************TASK [Gathering Facts] *****************************************************************
ok: [node1]TASK [create user1] ********************************************************************
ok: [node1]TASK [create user2] ********************************************************************
ok: [node1]PLAY RECAP *****************************************************************************
node1                      : ok=3    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
更改剧本:

在这里插入图片描述

[student@master ansible]$ ansible-playbook test.ymlPLAY [this is a test playbook] *********************************************************TASK [Gathering Facts] *****************************************************************
ok: [node1]TASK [create user1] ********************************************************************
ok: [node1]TASK [create user2] ********************************************************************
changed: [node1]RUNNING HANDLER [stw] ******************************************************************
changed: [node1]PLAY RECAP *****************************************************************************
node1                      : ok=4    changed=2    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   

只触发了stw任务,没有触发abc任务(abc任务属于handlers的层级,但是我的notify只写了触发stw任务)

如果想要执行abc任务需要把abc任务写在handlers前面(也就是handlers需要写在剧本的最后)

在这里插入图片描述

[student@master ansible]$ ansible-playbook test.ymlPLAY [this is a test playbook] *********************************************************TASK [Gathering Facts] *****************************************************************
ok: [node1]TASK [create user1] ********************************************************************
ok: [node1]TASK [create user2] ********************************************************************
changed: [node1]TASK [abc] *****************************************************************************
ok: [node1] => {"msg": 123
}RUNNING HANDLER [stw] ******************************************************************
changed: [node1]PLAY RECAP *****************************************************************************
node1                      : ok=5    changed=2    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   

handlers任务永远最后执行

示例四:
1、 写一个剧本galaxy.yml,只对node1操作
2、 创建用户aa,该用户不能用于登录,家目录/www1
3、 在/www1创建一个文件html
4、 每次执行该剧本时,将系统的当前时间输入到html文件中
5、 如果html中的时间发生变化,那么创建/tmp/kk的文件
[student@master ansible]$ vim test1.yml
[student@master ansible]$ ansible-playbook test1.ymlPLAY [test1] ***************************************************************************TASK [Gathering Facts] *****************************************************************
ok: [node1]TASK [create user aa] ******************************************************************
changed: [node1]TASK [create file] *********************************************************************
changed: [node1]TASK [input html] **********************************************************************
changed: [node1]RUNNING HANDLER [kk] *******************************************************************
changed: [node1]PLAY RECAP *****************************************************************************
node1                      : ok=5    changed=4    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   

在这里插入图片描述

再执行一遍也仍旧触发
[student@master ansible]$ ansible-playbook test1.ymlPLAY [test1] ***************************************************************************TASK [Gathering Facts] *****************************************************************
ok: [node1]TASK [create user aa] ******************************************************************
ok: [node1]TASK [create file] *********************************************************************
changed: [node1]TASK [input html] **********************************************************************
changed: [node1]RUNNING HANDLER [kk] *******************************************************************
changed: [node1]PLAY RECAP *****************************************************************************
node1                      : ok=5    changed=3    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
因为状态发生了改变,并且不用date,只要使用shell模块,状态都会发生改变
示例五:

tags用法:给任务打标签,一个任务可以有多个标签

ansible-playbook -t 来指定需要指定的任务标签

注意:

其实ansible还预置了5个特殊的tag

always:如果添加此标签,不管是否指定该任务,都执行

never:不执行标签(指定执行时执行此标签任务)

tagged:在执行时使用ansible-playbook playbook.yml -t tagged

​ 只执行带有标签的任务(带never标签的不执行)

untagged:在执行时使用ansible-playbook playbook.yml -t untagged

​ 只执行不带标签的任务,包含always标签也执行

all:所有任务都执行,默认标签

可以同时使用多个标签,需要用”,”隔开

[student@master ansible]$ vim a.yml

在这里插入图片描述

(1)ansible-playbook a.yml -t l2:执行带l2标签的任务,带always标签任务也执行
[student@master ansible]$ vim a.yml
[student@master ansible]$ ansible-playbook a.yml -t l2 PLAY [test] ****************************************************************************TASK [Gathering Facts] *****************************************************************
ok: [node2]TASK [user1] ***************************************************************************
changed: [node2]TASK [user2] ***************************************************************************
changed: [node2]TASK [user4] ***************************************************************************
changed: [node2]PLAY RECAP *****************************************************************************
node2                      : ok=4    changed=3    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
(2)ansible-playbook a.yml -t tagged:执行带标签的任务,不执行带never标签的任务
[student@master ansible]$ ansible-playbook a.yml -t taggedPLAY [test] ****************************************************************************TASK [Gathering Facts] *****************************************************************
ok: [node2]TASK [user1] ***************************************************************************
ok: [node2]TASK [user2] ***************************************************************************
ok: [node2]TASK [user3] ***************************************************************************
changed: [node2]TASK [user4] ***************************************************************************
ok: [node2]PLAY RECAP *****************************************************************************
node2                      : ok=5    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
(3)ansible-playbook a.yml -t untagged:执行不带标签的任务(这里只执行always)
[student@master ansible]$ ansible-playbook a.yml -t untaggedPLAY [test] ****************************************************************************TASK [Gathering Facts] *****************************************************************
ok: [node2]TASK [user4] ***************************************************************************
ok: [node2]PLAY RECAP *****************************************************************************
node2                      : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
(3)ansible-playbook a.yml -t always:执行带always标签的
[student@master ansible]$ ansible-playbook a.yml -t alwaysPLAY [test] ****************************************************************************TASK [Gathering Facts] *****************************************************************
ok: [node2]TASK [user4] ***************************************************************************
ok: [node2]PLAY RECAP *****************************************************************************
node2                      : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
(4)ansible-playbook a.yml -t never:执行带never标签的,并且带always标签的也执行
[student@master ansible]$ ansible-playbook a.yml -t neverPLAY [test] ****************************************************************************TASK [Gathering Facts] *****************************************************************
ok: [node2]TASK [user4] ***************************************************************************
ok: [node2]TASK [user5] ***************************************************************************
changed: [node2]PLAY RECAP *****************************************************************************
node2                      : ok=3    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
(5)跳过带l2标签的,不执行带never标签的,其余的都执行
[student@master ansible]$ ansible-playbook a.yml --skip-tags l2PLAY [test] ****************************************************************************TASK [Gathering Facts] *****************************************************************
ok: [node2]TASK [user3] ***************************************************************************
ok: [node2]TASK [user4] ***************************************************************************
ok: [node2]PLAY RECAP *****************************************************************************
node2                      : ok=3    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
(6)ansible-playbook a.yml:不执行带never标签的,其余的都执行
[student@master ansible]$ ansible-playbook a.ymlPLAY [test] ****************************************************************************TASK [Gathering Facts] *****************************************************************
ok: [node2]TASK [user1] ***************************************************************************
ok: [node2]TASK [user2] ***************************************************************************
ok: [node2]TASK [user3] ***************************************************************************
ok: [node2]TASK [user4] ***************************************************************************
ok: [node2]PLAY RECAP *****************************************************************************
node2                      : ok=5    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
http://www.dtcms.com/a/357665.html

相关文章:

  • 4. LangChain4j 模型参数配置超详细说明
  • LangChain框架入门02:开发环境配置
  • 光伏发多少电才够用?匹配家庭用电需求
  • 【C/C++】柔性数组
  • 用html+js下拉菜单的demo,当鼠标点击后展开,鼠标点击别的地方后折叠
  • 高斯滤波的简介、C语言实现和实测
  • simd笔记
  • 嵌入式-定时器的从模式控制器、PWM参数测量实验-Day24
  • 命令拓展(草稿)
  • C++ 并发编程:全面解析主流锁管理类
  • 虚拟私有网络笔记
  • HDMI2.1 8K验证平台
  • websocket建立连接过程
  • 航电系统路径规划技术解析
  • C++Primer笔记——第六章:函数(下)
  • Python气象与海洋:安装入门+科学计算库+可视化+台风数据+WRF/ROMS后处理+EOF分析+机器学习
  • C++标准库断言头文件<cassert>使用指南
  • 告别音色漂移!微软超长语音合成模型VibeVoice正式开源​
  • Ubuntu磁盘分区重新挂载读写指南
  • 蓓韵安禧活性叶酸专利益生菌优生优选
  • 3D 数字孪生可视化技术在学校项目中的应用
  • AI 自动化编程 trae 体验3 开发小程序
  • 通过Kubernetes安装mysql5服务
  • Aha Moment——啊哈时刻!
  • ContextMenuManager for Win:优化右键菜单,解决用户痛点
  • Coze源码分析-API授权-编辑令牌-前端源码
  • 今天聊聊支付里的三个小概念:同名充值、非同代付和 D0。
  • NLP:驱动人工智能迈向 “理解” 与 “对话” 的核心引擎
  • 2025年06月 Scratch 图形化(一级)真题解析#中国电子学会#全国青少年软件编程等级考试
  • 小杰机器视觉(five day)——直方图均衡化