ansible——playbook
playbook
playbook是剧本的意思 通过 task 调用 ansible 的模块将多个 play 组织在一 个playbook中运行。
playbook本身由以下各部分组成:
Tasks: 任务,即调用模块完成的某操作 Variables: 变量 Templates: 模板 Handlers: 处理器,当某条件满足时,触发执行的操作 Roles: 角色 playbook yaml语法是换行空两格,-和:后必须空一格
YAML:是一种非标记语言。是用来写配置文件的语言,非常简洁合强大;
YAML语法和其他语言类似,也可以表达散列表、标量等数据结构
结构通过空格来展示,序列里配置项通过 - 来表示;Map里的键值用:来分隔;YAML的扩展名为yaml
yaml基本语法规则
- 大小写敏感
- 使用缩进表示层级关系
- 缩进时不允许使用tab键、只允许使用空格
- 缩进的空格数目不重要,只要相同层级的元素左侧对齐即可
| hosts | 定义节点,可以是组 |
|---|---|
| remote_user | 是你以什么用户身份进行登陆 |
| tasks | 是你的任务 |
| become:yes | 表示切换用户 |
| become_user: mysql | 表示切换到mysql用户,配合上一条使用 |
| - name: | 为下面执行的操作起名 |
yaml支持的数据结构
1、对象:键值对的集合,又称为映射(mapping)/ 哈希(hashes)/ 字典(dictionary)
2、数组:一组按次序排列的值,又称为序列(sequence)/ 列表(list)
3、纯量:单个的、不可再分的值
Inventory中变量
Inventory是Ansible管理主机信息的配置文件,相当于系统HOSTS文件的功能,默认存放在/etc/ansible/hosts
- 主机变量
- 组变量
- 组嵌套
参数 说明 ansible_ssh_host 将要连接的远程主机名,与你想要设定的主机的别名不同的话,可通过此变量设置 ansible_ssh_port ss h端口号,如果不是默认的端口号,通过此变量设置 ansible_ssh_user 默认的ssh用户名 ansible_ssh_pass ssh密码(这种方式并不安全,我们强烈建议使用 --ask-pass或SSH密钥) ansible_ssh_private_key_file ssh使用的私钥文件,适用于有多个密钥,而你不想使用SSH代理的情况 ansible_ssh_common_args 此设置附加到sftp,scp和ssh的缺省命令行 ansible_sftp_extra_args 此设置附加到默认sftp命令行 ansible_scp_extra_args 此设置附加到默认scp命令行 ansible_ssh_extra_args 此设置附加到默认ssh命令行 ansible_ssh_pipelining 确定是否使用SSH管道。这可以覆盖ansible.cfg中得到设置 ansible_shell_type 目标系统的shell类型,默认情况下,命令的执行使用sh语法,可设置为csh 或 fish ansible_python_interpreter 目标主机的python路径,适用于的情况:系统中有多个python,或者命令路径不是“/usr/bin/python” ansible_*_interpreter 这里的*可以是ruby或perl或其他语言的解释器,作用和ansible_python_interpreter类似 ansible_shell_executable 这将设置ansible控制器将在目标机器上使用的shell,覆盖ansible.cfg中的配置,默认为/bin/sh
playbook示例
基本命令介绍
ansible-playbook xxx.yaml --syntax-check #检查yaml文件的语法是否正确
ansible-playbook xxx.yaml --list-task #检查tasks任务
ansible-playbook xxx.yaml --list-hosts #检查生效的主机
ansible-playbook xxx.yaml --start-at-task='xxx' #指定从某个task开始运行- hosts: webserver #指定主机组,可以是一个或多个组remote_user: root #指定远程主机执行的用户名
| 参数 | 说明 |
|---|---|
| -k(-ask-pass) | 用来交互输入ssh密码 |
| -K(-ask-become-pass) | 用来交互输入sudo密码 |
| -u | 指定用户 |
| -e | 引入变量值 |
为每个任务定义远程执行用户
cd /opt
vim 1.yaml- hosts: mysqlremote_user: roottasks:- name: test connectionping:remote_user: mysql ansible mysql -m user -a 'name=mysql'
ansible mysql -m shell -a 'echo 123123 | passwd --stdin mysql'
ansible-playbook 1.yaml -k
123123
指定远程主机切换用户执行剧本
vim 2.yaml- hosts: mysqlremote_user: rootbecome: yes become_user: mysql tasks:- name: copy textcopy: src=/etc/fstab dest=/home/mysql/fstab.bakansible-playbook 2.yaml
tasks忽略错误,强制返回成功
错误示例:遇到错误task自动停止,apache服务不会继续安装
vim 3.yaml- hosts: webserverremote_user: roottasks:- name: stop selinuxcommand: '/usr/sbin/setenforc 0'- name: install httpdyum: name=httpd- name: start httpdservice: name=httpd state=startedansible-playbook 3.yaml
错误示例:遇到错误task自动停止,apache服务不会继续安装
vim 3.yaml- hosts: webserverremote_user: roottasks:- name: stop selinuxcommand: '/usr/sbin/setenforc 0'ignore_errors: True- name: install httpdyum: name=httpd- name: start httpdservice: name=httpd state=startedansible-playbook 3.yaml
针对多个主机节点执行剧本
vim 4.yaml- hosts: webserverremote_user: roottasks:- name: remove httpdyum: name=httpd state=absent- hosts: mysqlremote_user: roottasks:- name: copy filecopy: src=/etc/fstab dest=/opt/haha.txt
Handlers概述
Handlers也是一些task的列表, 和一般的task并没有什么区别。 是由通知者进行的notify,如果没有被notify,则Handlers不会执行,假如被notify了 ,则Handlers被执行不管有多少个通知者进行了notify,等到play中的所有task执行完成之后,handlers也只会被执行一次
vim 5.yaml- hosts: webserverremote_user: roottasks:- name: remove httpdyum: name=httpd state=absent- name: start firewalldservice: name=firewalld state=started- name: setenforce 0 && install httpdcommand: '/usr/sbin/setenforce 0'notify:- step one- name: stop firewalld && start httpdservice: name=firewalld state=stoppednotify:- step twohandlers:- name: step oneyum: name=httpd- name: step twoservice: name=httpd state=startedansible-playbook 5.yaml
引入变量
playbook引入变量有三种方式
1、通过ansible命令参数-e传递
2、直接在yaml中定义
3、引用主机清单中定义的变量
通过ansible命令参数-e传递
vim 6_1.yaml- hosts: mysqlremote_user: rootvars:- user:tasks:- name: add useruser: name={{user}}ansible-playbook 6_1.yaml -e "user=wangwu"
ansible mysql -a 'tail -1 /etc/passwd'
直接在yaml中定义,或者内置变量
vim 6_2.yaml- hosts: mysqlremote_user: rootvars:- user: lisitasks:- name: add useruser: name={{user}}ansible-playbook 6_2.yaml
ansible mysql -a 'tail -1 /etc/passwd'
引用主机清单内自定义变量
vim /etc/ansible/hosts[webserver]
192.168.161.152
[mysql]
192.168.161.153 vim 6_3.yaml- hosts: mysqlremote_user: roottasks:- name: add useruser: name={{user}}ansible-playbook 6_3.yaml
ansible mysql -a 'tail -1 /etc/passwd'
相关文章:
ansible——playbook
playbook playbook是剧本的意思 通过 task 调用 ansible 的模块将多个 play 组织在一 个playbook中运行。 playbook本身由以下各部分组成: Tasks: 任务,即调用模块完成的某操作 Variables: 变量 Templates: 模板 Handlers: 处理器,当某条件…...
DDS中间件设计
OpenDDS、FastDDS数据分发服务中间件设计 软件架构 应用层DDS层RTPS层传输层 软件层次 FastDDS整体架构如下,这里可以看到DDS和RTPS的关系。另外缺少一部分IDL(统一描述语言),其应该是Pub、Sub的反序列化、序列化工具。 在RT…...
aws的EC2云服务器自己操作记录
亚马逊官网有免费试用1年的服务器 以下内容参考 1. 启动生成实例 1.1 创建实例时需要生成 使用的默认的 Debian 和 一个.pem后缀的秘钥 1.2 网上下一个Mobaxterm ,实例名是公有 IPv4 DNS 地址 ,使用SSH连接,登录名是admin 1.3 登录进去后 输入用户名 admin 后进去,sudo …...
基本ACL 和高级ACL配置
基本ACL 一、要求 1.全网可达 2.在1的基础上使PC1不能访问PC2 二、思路 1.通过写静态的方式使全网可达 2.配置acl主要是拒绝源IP的访问 3.在靠近目标的地方配置acl及使用 三、操作配置 1.IP及静态配置 [r1]int g0/0/0 [r1-GigabitEthernet0/0/0]ip add 123.0.0.1 24 [r…...
【uniapp 报错 Cannot read properties of null (reading ‘offsetWidth‘)解决办法】
该错误通常是由于访问了一个空值的offsetWidth而引起的。解决方法如下: 检查代码中是否有访问了空值的情况,比如变量未初始化或者传入了空值参数或者事件未定义。 在操作元素之前,确保元素已经被正确加载。可以使用如下方法: <…...
6.s081/6.1810(Fall 2022)Lab2: System calls
文章目录 前言其他篇章参考链接0. 前置准备1. System call tracing (moderate)1.1 简单分析1.2 Hint 11.3 Hint 21.4 Hint 31.5 Hint 41.6 Hint 51.7 测试 2. Sysinfo (moderate)2.1 声明2.2 实现2.2.1 框架2.2.2 用户态与内核态交互2.2.3 计算空闲内存的大小2.2.4 计算非UNUSE…...
Git在VSCode中的使用
1.Git图像化界面进行项目初始化(git init) 2. Git图形化界面对文件进行操作 当我们创建一个文件时,该文件后面有一个U,表示文件未跟踪。 我们在管理工具中输入日志并提交代码,相当于做了两件事,将文件由“…...
【双指针_移动零_C++】
题目解析 移动零 nums [0,1,0,3,12] [1,3,12,0,0]算法原理 数组划分(数组分块) 双指针算法(利用数组下标来充当指针)使用两个指针的作用: cur指针:从左往右扫描数组,就是遍历数组。 dest指针…...
【网络安全】网络安全威胁实时地图 - 2023
文章目录 [TOC] ① 360 安全大脑360 APT全景雷达 ② 瑞星杀毒瑞星云安全瑞星网络威胁态势感知平台 ③ 比特梵德 Bitdefender④ 飞塔防火墙 FortiGuard⑤ 音墙网络 Sonicwall⑥ 捷邦 Check Point⑦ AO卡巴斯基实验室全球模拟隧道模拟 ⑧ 数字攻击地图⑨ Threatbutt互联网黑客攻击…...
视频过大如何压缩变小?文件压缩技巧分享
如何压缩视频是许多视频编辑者、视频上传者经常遇到的问题,如果你也遇到了这个问题,不用担心,下面将就给大家分享几个视频压缩方法,可以帮助大家轻松地压缩视频,同时保持视频的高清晰度和音频质量。 一、嗨格式压缩大师…...
组合模式(Composite)
组合模式是一种结构型设计模式,主要用来将多个对象组织成树形结构以表示“部分-整体”的层次结构,因此该模式也称为“部分-整体”模式。简言之,组合模式就是用来将一组对象组合成树状结构,并且能像使用独立对象一样使用它们。 Co…...
grid map学习笔记3之详解grid_map_pcl库实现point cloud点云转换成grid map栅格地图
文章目录 0 引言1 grid_map_pcl示例1.1 主要文件1.2 示例数据1.3 启动文件1.4 配置文件1.5 主要实现流程1.6 启动示例1.7 示例结果 2 D435i 点云生成栅格地图2.1 D435i 点云文件2.2 修改启动文件2.3 测试和结果2.4 修改配置文件2.5 重新测试和结果 0 引言 grid map学习笔记1已…...
ebpf开发问题汇总
不同Programs之间通信 用bpf_obj_get来获取MAP的描述符,然后用bpf_map_reuse_fd函数来在不同program之间复用 kernel 与 user space之间 需要pin the BPF MAP to the BPF Virtual File System (VFS),来持久化存储,否则如果map用不到会被destory 引用…...
认识 mysql 命令
文章目录 1.简介2.选项3.子命令4.小结参考文献 1.简介 mysql 是 MySQL 的命令行客户端工具,用于连接到 MySQL 服务器并执行 SQL 语句。 它支持交互式和非交互式两种使用方式。以交互方式使用时,查询结果以 ASCII 表格式呈现。 当以非交互方式使用时&am…...
IK(Inverse Kinematics,逆运动学)
介绍 在Unity中,IK(Inverse Kinematics,逆运动学)是一种用于控制角色或物体骨骼的技术。通过使用IK,可以实现更自然和真实的动画效果,特别是在处理复杂的角色动作时非常有用。 IK Pass是Unity中的一个功能…...
Cadence 小技巧系列(持续更新)
■ ADE setup simulator/directory/host 更改仿真路径,默认home路径空间太小了,改成当前路径就行。 瞬态tran仿真要用APS跑(setup--high...) 瞬态tran仿真精度设置,conservation,option--maxstep设为0.1n…...
【unity】Pico VR 开发笔记(基础篇)
Pico VR 开发笔记(基础篇) XR Interaction Tooikit 版本 2.3.2 一、环境搭建 其实官方文档已经写的很详细了,这里只是不废话快速搭建,另外有一项官方说明有误的,补充说明一下,在开发工具部分说明 插件安装——安装pico的sdk和XR…...
竞争之王CEO商战课,聚百家企业在京举行
竞争之王CEO商战课,于2023年7月29-31日在北京临空皇冠假日酒店举办,近百家位企业家齐聚一堂,共享饕餮盛宴。 竞争之王CEO商战课是打赢商战的第一课。 竞争环境不是匀速变化,而是加速变化。 在未来的市场环境中,企业间…...
【shell】获取ping的时延数据并分析网络情况及常用命令学习
文章目录 获取ping的时延数据并分析网络情况|、||、&、&&辨析teetailkillall 获取ping的时延数据并分析网络情况 网络情况经常让我们头疼,每次都需要手动在终端ping太麻烦了,不如写个脚本ping并将数据带上时间戳存入文件,然后也…...
石子合并一章通(环形石子合并,四边形不等式,GarsiaWachs算法)(内附封面)
[NOI1995] 石子合并 题目描述 在一个圆形操场的四周摆放 N N N 堆石子,现要将石子有次序地合并成一堆,规定每次只能选相邻的 2 2 2 堆合并成新的一堆,并将新的一堆的石子数,记为该次合并的得分。 试设计出一个算法,计算出将 …...
Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以?
Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以? 在 Golang 的面试中,map 类型的使用是一个常见的考点,其中对 key 类型的合法性 是一道常被提及的基础却很容易被忽视的问题。本文将带你深入理解 Golang 中…...
《Qt C++ 与 OpenCV:解锁视频播放程序设计的奥秘》
引言:探索视频播放程序设计之旅 在当今数字化时代,多媒体应用已渗透到我们生活的方方面面,从日常的视频娱乐到专业的视频监控、视频会议系统,视频播放程序作为多媒体应用的核心组成部分,扮演着至关重要的角色。无论是在个人电脑、移动设备还是智能电视等平台上,用户都期望…...
MODBUS TCP转CANopen 技术赋能高效协同作业
在现代工业自动化领域,MODBUS TCP和CANopen两种通讯协议因其稳定性和高效性被广泛应用于各种设备和系统中。而随着科技的不断进步,这两种通讯协议也正在被逐步融合,形成了一种新型的通讯方式——开疆智能MODBUS TCP转CANopen网关KJ-TCPC-CANP…...
QT: `long long` 类型转换为 `QString` 2025.6.5
在 Qt 中,将 long long 类型转换为 QString 可以通过以下两种常用方法实现: 方法 1:使用 QString::number() 直接调用 QString 的静态方法 number(),将数值转换为字符串: long long value 1234567890123456789LL; …...
有限自动机到正规文法转换器v1.0
1 项目简介 这是一个功能强大的有限自动机(Finite Automaton, FA)到正规文法(Regular Grammar)转换器,它配备了一个直观且完整的图形用户界面,使用户能够轻松地进行操作和观察。该程序基于编译原理中的经典…...
蓝桥杯 冶炼金属
原题目链接 🔧 冶炼金属转换率推测题解 📜 原题描述 小蓝有一个神奇的炉子用于将普通金属 O O O 冶炼成为一种特殊金属 X X X。这个炉子有一个属性叫转换率 V V V,是一个正整数,表示每 V V V 个普通金属 O O O 可以冶炼出 …...
虚拟电厂发展三大趋势:市场化、技术主导、车网互联
市场化:从政策驱动到多元盈利 政策全面赋能 2025年4月,国家发改委、能源局发布《关于加快推进虚拟电厂发展的指导意见》,首次明确虚拟电厂为“独立市场主体”,提出硬性目标:2027年全国调节能力≥2000万千瓦࿰…...
MySQL 索引底层结构揭秘:B-Tree 与 B+Tree 的区别与应用
文章目录 一、背景知识:什么是 B-Tree 和 BTree? B-Tree(平衡多路查找树) BTree(B-Tree 的变种) 二、结构对比:一张图看懂 三、为什么 MySQL InnoDB 选择 BTree? 1. 范围查询更快 2…...
SQL进阶之旅 Day 22:批处理与游标优化
【SQL进阶之旅 Day 22】批处理与游标优化 文章简述(300字左右) 在数据库开发中,面对大量数据的处理任务时,单条SQL语句往往无法满足性能需求。本篇文章聚焦“批处理与游标优化”,深入探讨如何通过批量操作和游标技术提…...
【记录坑点问题】IDEA运行:maven-resources-production:XX: OOM: Java heap space
问题:IDEA出现maven-resources-production:operation-service: java.lang.OutOfMemoryError: Java heap space 解决方案:将编译的堆内存增加一点 位置:设置setting-》构建菜单build-》编译器Complier...
