Linux:ansible-playbook配置文件(剧本)

news2024/10/7 8:21:57

如果你还没有配置基础的ansible和一些基础用法可以去下面的链接 

playbook是基于ansible的    

Linux:ansible自动化运维工具_鲍海超-GNUBHCkalitarro的博客-CSDN博客

Linux:ansible自动化运维工具_鲍海超-GNUBHCkalitarro的博客-CSDN博客

Linux:ansible自动化运维工具_鲍海超-GNUBHCkalitarro的博客-CSDN博客


 目录

介绍 

 playbook基础组件 

 playbook基础用法(*.yml)

开始测试文件有没有问题

开始执行

查看执行结果

列出该剧本执行主机

查看剧本任务列表

查看标签列表

基础实战

 触发器操作


介绍 

我们完成一个任务,例如安装部署一个httpd服务,我们需要多个模块(一个模块也可以称之为task)提供功能来完成。而playbook就是组织多个task的容器,他的实质就是一个文件,有着特定的组织格式,它采用的语法格式是YAML(Yet Another Markup Language)。YAML语法能够简单的表示散列表,字典等数据结构。

playbook是由一个或多个模块组成的,使用多个不同的模块,完成一件事情。
编写剧本-脚本(playbook)---针对重复性的操作 


 playbook基础组件 

Hosts:运行执行任务(task)的目标主机
remote_user:在远程主机上执行任务的用户
tasks:任务列表
handlers:任务,与tasks不同的是只有在接受到通知时才会被触发
templates:使用模板语言的文本文件,使用jinja2语法。
variables:变量,变量替换{{ variable_name }}
整个playbook是以task为中心,表明要执行的任务。hosts和remote_user表明在哪些远程主机以何种身份执行。其他组件让其能够更加灵活。    

roles:角色。将hosts剥离出去。由tasks、handlers等所组成的一种特定的结构集合

Usage: ansible-playbook playbook.yml
相对于ansible,增加了下列选项:
--flush-cache # 清除fact缓存
--syntax-check # 语法检查
--force-handlers # 如果任务失败,也要运行handlers
--list-tags # 列出所有可用的标签
--list-tasks # 列出将要执行的所有任务
--skip-tags=SKIP_TAGS # 跳过运行标记此标签的任务
--start-at-task=START_AT_TASK # 在此任务处开始运行
--step 一步一步:在运行之前确认每个任务
-t TAGS, --tags=TAGS 只运行标记此标签的任务

YAML有以下基本规则: 
1、大小写敏感 
2、使用缩进表示层级关系 
3、禁止使用tab缩进,只能使用空格键 
4、缩进长度没有限制,只要元素对齐就表示这些元素属于一个层级。 
5、使用#表示注释 
6、字符串可以不用引号标注

7.'-'表示项
8。 ’:‘ 分隔键和值
9.整个文件以‘---’开始,以'...’结束


 playbook基础用法(*.yml)

playbook的语法格式是YAML对空格缩进十分严格
 现在我的主机列表是这样的

hosts详细写法在:Linux:ansible自动化运维工具_鲍海超-GNUBHCkalitarro的博客-CSDN博客

要写的playbook文件后缀必须以   .yml    结尾 

创建一个文件   名字随便写 后缀要yml    我这里叫   a.yml

vim /root/a.yml

放在哪里无所谓

 写入以下内容

---
# --- 代表着开始  ...就是结束
- hosts: web1
# 选择web1主机组   -   代表项   前面两个缩进
  remote_user: root
# 远程执行的用户
  tasks:
# tasks是任务列表
      - name: useradd
        # 任务名称  四缩进
        user: name=test1111 state=present
        # 调用user模块执行
        tags:
            - aaa
        # 标签(别名)
...

---开始...结束上面的#注释就是上面一条命令的解释

开始测试文件有没有问题

ansible-playbook --syntax-check 文件路径

ansible-playbook --syntax-check /root/a.yml

 

没问题,但是预测试,并不真正执行命令

 ansible-playbook -C 文件路径

ansible-playbook -C /root/a.yml

 

如果都没有问题,那么恭喜你,他就可以执行了

开始执行

 ansible-playbook 文件路径

ansible-playbook /root/a.yml 

  

查看执行结果

 现在到了目标主上     刚刚在ansible主服务器远程执行的,成功了

列出该剧本执行主机

ansible-playbook --list-hosts 文件路径

ansible-playbook --list-hosts /root/a.yml 

 

可以看到刚刚写的剧本里的,只有对web1组执行,那个组里包含了 192.168.254.2主机

查看剧本任务列表

ansible-playbook --list-tasks  文件路径

ansible-playbook --list-tasks  /root/a.yml

 那个aaa就是刚刚写的别名   前面的useradd 就是调用的模块

查看标签列表

ansible-playbook --list-tags 文件路径

ansible-playbook --list-tags /root/a.yml 

 aaa就是标签也是别名的意思


基础实战

我现在有两个主机组,现在web1 要求添加一个用户 和一个组   用户名为:tarro1111   组名为:tarrogroup

web2上  把ansible服务器上的/etc/passwd 文件  复制到web2的/root下

vim /root/yml/aaa.yml
---
- hosts: web1
  remote_user: root
  tasks:
      - name: useradd
        user: name=tarro1111 state=present
        tags:
            - usertarro1111

      - name: groupadd
        group: name=tarrogroup system=yes
        tags:
            - grouptarrogroup


- hosts: web2
  remote_user: root
  tasks:
      - name: copypasswd
        copy: src=/etc/passwd dest=/root
        tags:
            - ccc
~                  
ansible-playbook --syntax-check /root/yml/aaa.yml 
ansible-playbook -C /root/yml/aaa.yml 

 测试成功

ansible-playbook /root/yml/aaa.yml

 

成功


 触发器操作

vim /etc/ansible/httpd.yml

随便创建一个*.yml 

---
- hosts: web1
# 对web1主机组执行
  remote_user: root
# 远程用户使用root
  tasks:
#任务列表
        - name: change port
		# 任务名称
          command: sed -i 's/Listen\ 80/Listen \ 8080/g' /etc/httpd/conf/httpd.conf  
            ##调用command模块,编辑httpd文件,更改侦听端口为8080

          
          notify:
        ##配置触发条件,触发名称与下列的触发器名称对应

                - restart httpd server
                # 这里的和下面的名称一样就行
				
				
  handlers:
##配置触发器

        - name: restart httpd server
	##触发器名称
          service: name=httpd state=restarted  
		##调用服务模块,重启httpd服务
...

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/951985.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

4.5 放映演示文稿

制作完成的演示文稿最终是为了向观众进行展示,因此掌握演示文稿放映的技巧至关重要。本节主要介绍演示文稿放映的相关技巧,包括排练计时、自定义放映、设置放映方式以及墨迹画笔等内容。 4.5.1 排练计时 当进行演讲汇报时,常常要使用到幻灯…

【PHP】文件操作

文章目录 文件编程的必要性目录操作其它目录操作递归遍历目录PHP5常见文件操作函数PHP4常见文件操作函数其他文件操作函数 文件编程的必要性 文件编程指利用PHP代码针对文件(文件夹)进行增删改查操作。 在实际开发项目中,会有很多内容&…

kafka原理与应用

架构图 Broker Kafka集群包含多个服务器,服务器节点称为BrokerBroker存储Topic数据 如果某topic有N个partition,集群有N个broker,那么每个broker存储该topic的一个partition。如果某topic有N个partition,集群有(NM)个broker&#…

【期末复习笔记】计算机操作系统

计算机操作系统 进程的描述与控制程序执行进程进程的定义与特征相关概念定义特征进程与程序的区别 进程的基本状态和转换PCBPCB中的信息作用PCB的组织方式 线程进程与线程的比较 处理机调度与死锁处理机调度处理机调度的层次 调度算法处理机调度算法的目标处理机调度算法的共同…

C++ 多重继承

所谓多重继承就是一个儿子有好几个爹&#xff0c;然后一个人继承了这几个爹的财产。只需注意构造顺序即可&#xff0c;反正析构的顺序也是一样的。 #include <iostream> #include <string.h> using namespace std;class base_a { public:base_a(const char *str){…

内网隧道技术学习

1. 隧道技术 在进行渗透测试以及攻防演练的时候&#xff0c;通常会存在各种边界设备、软硬件防火墙、IPS等设备来检测外部连接情况&#xff0c;这些设备如果发现异常&#xff0c;就会对通信进行阻断。 那么隧道技术就是一种绕过端口屏蔽的通信方式&#xff0c;在实际情况中防…

自用Eclipse配置记录

喜欢用eclipse写代码&#xff0c;由于现在的eclipse配置导出的功能缺失较多。这里开一帖把本人常用的配置记录一番&#xff0c;省得再到处找。 另&#xff1a;工作空间中有个.metadata 目录保存了相关的插件及配置&#xff0c;可以复制到其他空工作间中复用配置。 设置工作空间…

【Tkinter系列07/15】小部件Message、下拉菜单、移动窗

17. 小部件Message 此小部件类似于小部件 &#xff08;请参见第 12 节 “标签小部件”&#xff09;&#xff0c;但它适用于 在多行上显示消息。所有文本将 以相同的字体显示;如果需要显示文本 使用多种字体&#xff0c;请参见第 24 节 “文本小部件”。Label 创建新构件作为子…

【AI】数学基础——数理统计(概念参数估计)

概率论 文章目录 3.6 数理统计概念与定理3.6.1 概率论与数理统计区别3.6.2 基本定理大数定理马尔科夫不等式切比雪夫不等式中心极限定理 3.6.3 统计推断的基本问题 3.7 参数估计3.7.1 频率派点估计法矩阵估计法极大似然估计点估计量的评估 区间估计 3.7.2 贝叶斯派贝叶斯定理条…

26、ADS瞬时波形仿真-TRANSIENT仿真(以共射放大器为例)

26、ADS瞬时波形仿真-TRANSIENT仿真&#xff08;以共射放大器为例&#xff09; 在本科期间&#xff0c;学习模电的时候总是要对各种三极管电路进行MULTISIM仿真&#xff0c;其实ADS具备相同的功能&#xff0c;而且对于射频电路&#xff0c;使用ADS进行仿真可以结合版图进行&am…

SpringBoot初级开发--整体应用的统一性异常管理(7)

在整个系统中&#xff0c;通常会要求有统一性的异常抛出&#xff0c;统一的异常格式&#xff0c;统一的异常界面&#xff0c;而不是把整个堆栈错误信息抛出&#xff0c;这样对整个系统的安全性以及错误定位都非常不好&#xff0c;接下来我们紧接上一章的源码&#xff0c;加上统…

23.手风琴效果

效果 源码 <!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>CSS Only Accordion Design</title><link rel="stylesheet" href="style.css"> </head> <bod…

ChatGPT辅助编写自动化测试

大家好&#xff0c;我是洋子&#xff0c;ChatGPT已经越来越火爆&#xff0c;国内百度、阿里等互联网大厂也纷纷投入大模型研究&#xff0c;OpenAI官网中提供了许多ChatGPT应用场景&#xff0c;例如SQL翻译、语言翻译、代码解释等 作为一名QA&#xff0c;我更关注ChatGPT生成的…

【全面讲解】CPU缓存一致性:从理论到实战(上)

本文从 CPU、缓存、内存屏障、CAS到原子操作&#xff0c;再到无锁实践&#xff0c;逐一详细介绍。 01存储体系结构 速度快的存储硬件成本高、容量小&#xff0c;速度慢的成本低、容量大。为了权衡成本和速度&#xff0c;计算机存储分了很多层次&#xff0c;扬长避短&#xff…

动态主机配置协议 (DHCP):简化网络中IP地址分配的利器

文章目录 一、引言二、什么是DHCP&#xff1f;三、DHCP的工作原理IP地址分配流程解决多服务器冲突IP地址租约更新 四、DHCP中继代理五、相关命令 首先可以看下思维导图&#xff0c;以便更好的理解接下来的内容。 一、引言 在局域网中&#xff0c;手动配置静态IP地址不仅繁琐…

22.3D等距社交媒体菜单的悬停特效

效果 源码 <!doctype html> <html><head><meta charset="utf-8"><title>CSS Isometric Social Media Menu</title><link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.1.…

ThinkPHP 集成 jwt 技术 token 验证

ThinkPHP 集成 jwt 技术 token 验证 一、思路流程二、安装 firebase/php-jwt三、封装token类四、创建中间件&#xff0c;检验Token校验时效性五、配置路由中间件六、写几个测试方法&#xff0c;通过postman去验证 一、思路流程 客户端使用用户名和密码请求登录服务端收到请求&…

Android-关于页面卡顿的排查工具与监测方案

作者&#xff1a;一碗清汤面 前言 关于卡顿这件事已经是老生常谈了&#xff0c;卡顿对于用户来说是敏感的&#xff0c;容易被用户直接感受到的。那么究其原因&#xff0c;卡顿该如何定义&#xff0c;对于卡顿的发生该如何排查问题&#xff0c;当线上用户卡顿时&#xff0c;在线…

Android Aidl跨进程通讯(二)--异常捕获处理

学更好的别人&#xff0c; 做更好的自己。 ——《微卡智享》 本文长度为1623字&#xff0c;预计阅读5分钟 前言 上一篇《Android Aidl跨进程通讯的简单使用》中介绍了跨进程的通讯处理&#xff0c;在进程间的数据通过Aidl实现了交互&#xff0c;项目中经常会遇到Bug&#xff0c…

charles证书失效解决方法

1. 先reset 2. 再下载&#xff08;即下载最新的证书&#xff09; 钥匙串中信任后即可正常使用