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

ansible——playbook

playbook

playbook是剧本的意思 通过 task 调用 ansible 的模块将多个 play 组织在一 个playbook中运行。

playbook本身由以下各部分组成:

Tasks: 任务,即调用模块完成的某操作 Variables: 变量 Templates: 模板 Handlers: 处理器,当某条件满足时,触发执行的操作 Roles: 角色 playbook yaml语法是换行空两格,-和:后必须空一格

YAML:是一种非标记语言。是用来写配置文件的语言,非常简洁合强大;

YAML语法和其他语言类似,也可以表达散列表、标量等数据结构

结构通过空格来展示,序列里配置项通过 - 来表示;Map里的键值用:来分隔;YAML的扩展名为yaml

yaml基本语法规则

  1. 大小写敏感
  2. 使用缩进表示层级关系
  3. 缩进时不允许使用tab键、只允许使用空格
  4. 缩进的空格数目不重要,只要相同层级的元素左侧对齐即可
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

  1. 主机变量
  2. 组变量
  3. 组嵌套
    参数说明
    ansible_ssh_host将要连接的远程主机名,与你想要设定的主机的别名不同的话,可通过此变量设置
    ansible_ssh_port ssh端口号,如果不是默认的端口号,通过此变量设置
    ansible_ssh_user默认的ssh用户名
    ansible_ssh_passssh密码(这种方式并不安全,我们强烈建议使用 --ask-pass或SSH密钥)
    ansible_ssh_private_key_filessh使用的私钥文件,适用于有多个密钥,而你不想使用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而引起的。解决方法如下&#xff1a; 检查代码中是否有访问了空值的情况&#xff0c;比如变量未初始化或者传入了空值参数或者事件未定义。 在操作元素之前&#xff0c;确保元素已经被正确加载。可以使用如下方法&#xff1a; <…...

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图像化界面进行项目初始化&#xff08;git init&#xff09; 2. Git图形化界面对文件进行操作 当我们创建一个文件时&#xff0c;该文件后面有一个U&#xff0c;表示文件未跟踪。 我们在管理工具中输入日志并提交代码&#xff0c;相当于做了两件事&#xff0c;将文件由“…...

【双指针_移动零_C++】

题目解析 移动零 nums [0,1,0,3,12] [1,3,12,0,0]算法原理 数组划分&#xff08;数组分块&#xff09; 双指针算法&#xff08;利用数组下标来充当指针&#xff09;使用两个指针的作用&#xff1a; cur指针&#xff1a;从左往右扫描数组&#xff0c;就是遍历数组。 dest指针…...

【网络安全】网络安全威胁实时地图 - 2023

文章目录 [TOC] ① 360 安全大脑360 APT全景雷达 ② 瑞星杀毒瑞星云安全瑞星网络威胁态势感知平台 ③ 比特梵德 Bitdefender④ 飞塔防火墙 FortiGuard⑤ 音墙网络 Sonicwall⑥ 捷邦 Check Point⑦ AO卡巴斯基实验室全球模拟隧道模拟 ⑧ 数字攻击地图⑨ Threatbutt互联网黑客攻击…...

视频过大如何压缩变小?文件压缩技巧分享

如何压缩视频是许多视频编辑者、视频上传者经常遇到的问题&#xff0c;如果你也遇到了这个问题&#xff0c;不用担心&#xff0c;下面将就给大家分享几个视频压缩方法&#xff0c;可以帮助大家轻松地压缩视频&#xff0c;同时保持视频的高清晰度和音频质量。 一、嗨格式压缩大师…...

组合模式(Composite)

组合模式是一种结构型设计模式&#xff0c;主要用来将多个对象组织成树形结构以表示“部分-整体”的层次结构&#xff0c;因此该模式也称为“部分-整体”模式。简言之&#xff0c;组合模式就是用来将一组对象组合成树状结构&#xff0c;并且能像使用独立对象一样使用它们。 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的描述符&#xff0c;然后用bpf_map_reuse_fd函数来在不同program之间复用 kernel 与 user space之间 需要pin the BPF MAP to the BPF Virtual File System (VFS),来持久化存储&#xff0c;否则如果map用不到会被destory 引用…...

认识 mysql 命令

文章目录 1.简介2.选项3.子命令4.小结参考文献 1.简介 mysql 是 MySQL 的命令行客户端工具&#xff0c;用于连接到 MySQL 服务器并执行 SQL 语句。 它支持交互式和非交互式两种使用方式。以交互方式使用时&#xff0c;查询结果以 ASCII 表格式呈现。 当以非交互方式使用时&am…...

IK(Inverse Kinematics,逆运动学)

介绍 在Unity中&#xff0c;IK&#xff08;Inverse Kinematics&#xff0c;逆运动学&#xff09;是一种用于控制角色或物体骨骼的技术。通过使用IK&#xff0c;可以实现更自然和真实的动画效果&#xff0c;特别是在处理复杂的角色动作时非常有用。 IK Pass是Unity中的一个功能…...

Cadence 小技巧系列(持续更新)

■ ADE setup simulator/directory/host 更改仿真路径&#xff0c;默认home路径空间太小了&#xff0c;改成当前路径就行。 瞬态tran仿真要用APS跑&#xff08;setup--high...&#xff09; 瞬态tran仿真精度设置&#xff0c;conservation&#xff0c;option--maxstep设为0.1n…...

【unity】Pico VR 开发笔记(基础篇)

Pico VR 开发笔记(基础篇) XR Interaction Tooikit 版本 2.3.2 一、环境搭建 其实官方文档已经写的很详细了&#xff0c;这里只是不废话快速搭建&#xff0c;另外有一项官方说明有误的&#xff0c;补充说明一下&#xff0c;在开发工具部分说明 插件安装——安装pico的sdk和XR…...

竞争之王CEO商战课,聚百家企业在京举行

竞争之王CEO商战课&#xff0c;于2023年7月29-31日在北京临空皇冠假日酒店举办&#xff0c;近百家位企业家齐聚一堂&#xff0c;共享饕餮盛宴。 竞争之王CEO商战课是打赢商战的第一课。 竞争环境不是匀速变化&#xff0c;而是加速变化。 在未来的市场环境中&#xff0c;企业间…...

【shell】获取ping的时延数据并分析网络情况及常用命令学习

文章目录 获取ping的时延数据并分析网络情况|、||、&、&&辨析teetailkillall 获取ping的时延数据并分析网络情况 网络情况经常让我们头疼&#xff0c;每次都需要手动在终端ping太麻烦了&#xff0c;不如写个脚本ping并将数据带上时间戳存入文件&#xff0c;然后也…...

石子合并一章通(环形石子合并,四边形不等式,GarsiaWachs算法)(内附封面)

[NOI1995] 石子合并 题目描述 在一个圆形操场的四周摆放 N N N 堆石子&#xff0c;现要将石子有次序地合并成一堆&#xff0c;规定每次只能选相邻的 2 2 2 堆合并成新的一堆&#xff0c;并将新的一堆的石子数&#xff0c;记为该次合并的得分。 试设计出一个算法,计算出将 …...

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站&#xff0c;会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后&#xff0c;网站没有变化的情况。 不熟悉siteground主机的新手&#xff0c;遇到这个问题&#xff0c;就很抓狂&#xff0c;明明是哪都没操作错误&#x…...

从WWDC看苹果产品发展的规律

WWDC 是苹果公司一年一度面向全球开发者的盛会&#xff0c;其主题演讲展现了苹果在产品设计、技术路线、用户体验和生态系统构建上的核心理念与演进脉络。我们借助 ChatGPT Deep Research 工具&#xff0c;对过去十年 WWDC 主题演讲内容进行了系统化分析&#xff0c;形成了这份…...

SciencePlots——绘制论文中的图片

文章目录 安装一、风格二、1 资源 安装 # 安装最新版 pip install githttps://github.com/garrettj403/SciencePlots.git# 安装稳定版 pip install SciencePlots一、风格 简单好用的深度学习论文绘图专用工具包–Science Plot 二、 1 资源 论文绘图神器来了&#xff1a;一行…...

PPT|230页| 制造集团企业供应链端到端的数字化解决方案:从需求到结算的全链路业务闭环构建

制造业采购供应链管理是企业运营的核心环节&#xff0c;供应链协同管理在供应链上下游企业之间建立紧密的合作关系&#xff0c;通过信息共享、资源整合、业务协同等方式&#xff0c;实现供应链的全面管理和优化&#xff0c;提高供应链的效率和透明度&#xff0c;降低供应链的成…...

DIY|Mac 搭建 ESP-IDF 开发环境及编译小智 AI

前一阵子在百度 AI 开发者大会上&#xff0c;看到基于小智 AI DIY 玩具的演示&#xff0c;感觉有点意思&#xff0c;想着自己也来试试。 如果只是想烧录现成的固件&#xff0c;乐鑫官方除了提供了 Windows 版本的 Flash 下载工具 之外&#xff0c;还提供了基于网页版的 ESP LA…...

VTK如何让部分单位不可见

最近遇到一个需求&#xff0c;需要让一个vtkDataSet中的部分单元不可见&#xff0c;查阅了一些资料大概有以下几种方式 1.通过颜色映射表来进行&#xff0c;是最正规的做法 vtkNew<vtkLookupTable> lut; //值为0不显示&#xff0c;主要是最后一个参数&#xff0c;透明度…...

从 GreenPlum 到镜舟数据库:杭银消费金融湖仓一体转型实践

作者&#xff1a;吴岐诗&#xff0c;杭银消费金融大数据应用开发工程师 本文整理自杭银消费金融大数据应用开发工程师在StarRocks Summit Asia 2024的分享 引言&#xff1a;融合数据湖与数仓的创新之路 在数字金融时代&#xff0c;数据已成为金融机构的核心竞争力。杭银消费金…...

【Linux手册】探秘系统世界:从用户交互到硬件底层的全链路工作之旅

目录 前言 操作系统与驱动程序 是什么&#xff0c;为什么 怎么做 system call 用户操作接口 总结 前言 日常生活中&#xff0c;我们在使用电子设备时&#xff0c;我们所输入执行的每一条指令最终大多都会作用到硬件上&#xff0c;比如下载一款软件最终会下载到硬盘上&am…...

MySQL的pymysql操作

本章是MySQL的最后一章&#xff0c;MySQL到此完结&#xff0c;下一站Hadoop&#xff01;&#xff01;&#xff01; 这章很简单&#xff0c;完整代码在最后&#xff0c;详细讲解之前python课程里面也有&#xff0c;感兴趣的可以往前找一下 一、查询操作 我们需要打开pycharm …...

Xcode 16 集成 cocoapods 报错

基于 Xcode 16 新建工程项目&#xff0c;集成 cocoapods 执行 pod init 报错 ### Error RuntimeError - PBXGroup attempted to initialize an object with unknown ISA PBXFileSystemSynchronizedRootGroup from attributes: {"isa">"PBXFileSystemSynchro…...