Ansible playbook简介与初步实战,实现批量机器应用下载与安装

news2024/11/27 0:26:41

一.Ansible playbook简介

  • playbook是ansible用于配置,部署,和管理被节点的剧本
  • 通过playbook的详细描述,执行其中的一些列tasks,可以让远端的主机达到预期的状态。playbook就像ansible控制器给被控节点列出的一系列to-do-list,而且被控节点必须要完成
  • playbook顾名思义,即剧本,现实生活中演员按照剧本表演,在ansible中,这次由被控计算机表演,进行安装,部署应用,提供对外的服务等,以及组织计算机处理各种各样的事情。

二.Ansible playbook使用场景

  • 执行一些简单的任务,使用ad-hoc命令可以方便的解决问题,但是有时一个设施过于复杂,需要大量的操作的时候,执行的ad-hoc命令是不合适的,这时候最好使用playbook。
  • 就像执行shell命令与写shell脚本一样,也可以理解为批处理任务,不过playbook有自己的语法格式
  • 使用playbook可以方便的重复使用这些代码,可以移植到不同的机器上面,像函数一样,最大化的利用代码。在你使用Ansible的过程中,你也会发现,你所处理的大部分操作都是编写playbook。可以把常见的应用都编写playbook,之后管理服务器会变得很简单。

三.Ansible playbook格式

格式简介:

  • playbook由YAML语言编写。
  • YAML( /ˈjæməl/ )参考了其他多种语言,包括:XML、C语言、Python、Perl以及电子邮件格式RFC2822,Clark Evans在2001年5月在首次发表了这种语言,另外Ingy döt Net与OrenBen-Kiki也是这语言的共同设计者。
  • YAML格式是类似JSON的文件格式。YAML用于文件的配置编写,JSON多用于开发设计。

YAML的格式如下:

1.文件的第一行应该以“—”(三个连字符)开始,表明YAML文件的开始。
2.在同一行中,#之后的内容表示注释,类似于shell,python和ruby。
3.YAML中的列表元素以“-”开头并且跟着一个空格。后面为元素内容。
4.同一个列表之中的元素应该保持相同的缩进,否则会被当做错误处理。
5.play中hosts、variables、roles、tasks等对象的表示方法都是以键值中间以“:”分隔表示,并且“:”之后要加一个空格。

四.Ansible playbook实战

1、任务目标

1、获取升级包
从XX网址中下载XXX安装包,并拷贝到对应的机器上并解压。

2、升级
进入安装包解压后所在目录,双击install.bat文件执行安装

3、启动服务
进入安装包解压后所在目录,双击start.bat文件启动服务。

2、实现功能

  1 ---
  2 - name: "agent upgrade"
  3   hosts: all
  4   gather_facts: no
  5   vars:
  6     host_agent_url: "https://XXXXXXXX/host-agent.zip"
  7     host_agent_destination: "C:\\host_agent_windows"
  8   tasks:
  9     - name: create destination directory
 10       win_file:
 11         path: "{{ host_agent_destination }}"
 12         state: directory
 13
 14     - name: download host agent zip file
 15       win_get_url:
 16         url: "{{ host_agent_url }}"
 17         dest: "{{ host_agent_destination }}\\host-agent.zip"
 18         force: yes
 19
 20     - name: extract host agent zip file
 21       win_unzip:
 22         src: "{{ host_agent_destination }}\\host-agent.zip"
 23         dest: "{{ host_agent_destination }}"
 24         creates: "{{ host_agent_destination }}\\host-agent"
 25
 26     - name: install host agent
 27       win_command: "{{ host_agent_destination }}\\host-agent\\install.bat"
 28       args:
 29         chdir: "{{ host_agent_destination }}\\host-agent"
 30
 31     - name: start host agent service
 32       win_command: "{{ host_agent_destination }}\\host-agent\\start.bat"
 33       args:
 34         chdir: "{{ host_agent_destination }}\\host-agent"

3、脚本说明

具体含义如下:

  • 第 2 行:设置 playbook 的名称。
  • 第 3 行:指定要升级 host agent 的主机。
  • 第 4 行:关闭收集主机信息的功能。
  • 第 5-7 行:定义变量,用于存储 host agent 的下载链接和目录。
  • 第 9-12 行:创建 host agent 目标目录。
  • 第 15 行中的 url 参数指定了 host agent 压缩包的下载链接。
  • 第 16 行中的 dest 参数指定了下载的文件应该保存在哪个目录下,这里是 C:\host_agent_windows\host-agent.zip
  • 第 17 行中的 force 参数指定了如果目标文件已经存在,是否要强制覆盖它。这里是 yes,表示无论文件是否存在都要覆盖。
  • 第 21 行中的 src 参数指定了要解压的文件路径,这里是 C:\host_agent_windows\host-agent.zip
  • 第 22 行中的 dest 参数指定了解压后的文件应该保存在哪个目录下,这里是 C:\host_agent_windows
  • 第 24 行中的 creates 参数指定了一个文件或目录的路径,如果这个文件或目录已经存在,那么这个任务就不会再次执行。这里是 C:\host_agent_windows\host-agent,表示如果这个目录已经存在,则不再执行解压任务。
  • 第 27 行中的 win_command 模块指定了要执行的命令,这里是 C:\host_agent_windows\host-agent\install.bat,表示要执行 host agent 的安装脚本。
  • 第 28-29 行中的 args 参数指定了要传递给命令的参数,这里是 chdir: "{{ host_agent_destination }}\host-agent",表示在执行命令之前要切换到 C:\host_agent_windows\host-agent 目录下。这个参数是必需的,因为 host agent 的安装脚本需要在这个目录下执行,否则会出现错误。
    请注意,这个脚本假设目标主机已经具有适当的网络配置,以便可以从 Ansible 主机访问它们,并且在目标主机上已安装了必要的软件和驱动程序。此外,如果您需要其他配置或自定义设置,请相应地更改脚本。

注意:第 3 行应该是 hosts 可别写成 host

4、脚本执行

我们对一台测试机器进行执行测试,首先我们创建 hosts 文件,其中输入信息根据实际场景来:

[win_base_image]
111.111.111.111

[win_base_image:vars]
ansible_user=Administrator
ansible_password=Administrator
ansible_connection=winrm
ansible_winrm_transport=basic
ansible_port=5555

然后我们通过ansible-playbook执行脚本:

ansible-playbook -i hosts playbooks/agent_upgrade_test.yml

在这里插入图片描述
可以发现执行成功。还有可以执行很多功能,等待我们后续探索。

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

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

相关文章

webpack(四)plugin

定义 和loader的区别 loader:文件加载器,能够加载资源,并对这些文件进行一些处理,诸如编译、压缩等,最终一起打包到指定的文件中。plugin:赋予了webpack各种灵活的功能,例如打包优化、资源管理、环境变量注入等&…

【c++ debug】cmake编译报错 No such file or directory

1. 报错:error while loading shared libraries: libprotoc.so.24: cannot open shared object file: No such file or directory 问题原因:找不到动态库 解决方法:添加动态库路径 export LD_LIBRARY_PATH$LD_LIBRARY_PATH:/your/protobuf/l…

企业架构LNMP学习笔记18

nginx的日志: 日志类型: access.log 访问日志、查看统计用户的访问信息,流量。 error.log 错误日志,错误信息,重写信息。 access.log日志文件内容示例: 192.168.17.1 - - [06/Sep/2023:20:37:39 0800] …

莫迪会见英伟达ceo黄仁勋:印度在人工智能领域的巨大潜力

据外媒报道,印度总理纳伦德拉莫迪(Narendra Modi)于9月5日晚上会见了英伟达创始人兼首席执行官(CEO)黄仁勋,讨论了印度在人工智能(AI)领域的巨大潜力。这是莫迪和黄仁勋的第二次会面…

LC2335. 装满杯子需要的最短总时长(JAVA)

装满杯子需要的最短总时长 题目描述递归法代码演示数学法代码演示 题目描述 难度 - 简单 Leetcode - 2335. 装满杯子需要的最短总时长 现有一台饮水机,可以制备冷水、温水和热水。每秒钟,可以装满 2 杯 不同 类型的水或者 1 杯任意类型的水。 给你一个下…

通过wordpress 自定义主题的额外CSS删除指定区块

最近用wordpress建站,想要删除指定区块,发现相关的教程蛮少的,作为小白的我搜了相关教程,好像没找到,只能自己慢慢摸索了,看了很多,终于尝试实现了,特记录下,免得自己忘了…

国美零售上半年几乎“全军覆没”,黄光裕回归后的至暗时刻

在黄光裕“回归”的900天之后,国美零售(00493)迎来了有史以来最为艰难的至暗时刻,营收同比暴跌超96%,股价为0.053港元,市值仅剩25.79亿港股。 2023年8月31日,国美零售发布了2023年上半年财报。报…

深入研究 Spring Cloud 和 Dubbo

什么是 SpringCloud Spring Cloud 框架为开发人员提供了快速构建健壮云应用程序的工具。我们还可以构建基于微服务的应用程序,例如配置管理、服务发现、断路器、智能路由、集群状态、微代理、控制总线、一次性令牌等。使用 Spring Cloud,开发人员可以快…

F5负载均衡融入新理念,全栈分布式云可持续发展

伴随企业上云速度加快,市场对云计算不断提出更高要求,中国分布式云计算发展进入实践落地阶段。作为一个因负载均衡而闻名的公司,F5紧密关注“加快建设数字中国”“加快发展方式绿色转型”等重大战略,积极探索分布式云计算的发展的…

使用Python实现二维应力云图

要画应力分布云图,可以使用Python中的科学计算和可视化库来实现 import numpy as np import matplotlib.pyplot as plt# 生成示例数据 x np.linspace(0, 10, 100) # X轴数据范围 y np.linspace(0, 5, 50) # Y轴数据范围 X, Y np.meshgrid(x, y) # 生成网…

2001-2022年上市公司供应链研究数据大全

2001-2022年上市公司供应链研究数据大全 1、时间:2001-2022年 2、指标: 供应链集中度指标、第一大客户销售额、前五大客户销售额、第一大供应商采购额、前五大供应商采购额、营业总收入、第一大客户销售额占总销售额比率、第一大供应商采购额 占总采购…

axmol引擎支持构建WASM了,非常简单

自axmol-2.0.0-rc6起,axmol引擎带了了实验性的wasm构建支持,提供简单易用的命令即可构建wasm应用在浏览器上跑,具体步骤: 下载最新引擎仓库,git clone https://github.com/axmolengine/axmol 并进入引擎根目录Windows…

git修改默认分支

git checkout 分支 切换到当前分支 git branch --set-upstream-toorigin/complete(远程分支名) 设置当前分支的上游分支为远程分支complete git branch --unset-upstream master 取消master上游分支的身份 现在,使用git commit,git push 命令可以直接…

【数学建模竞赛】评价类赛题常用算法解析

解析常见的评价类算法 常见的评价类算法 层次分析法 层次分析法(Analytic Hierarchy Process,简称AHP)是一种主观赋值评价方法,由美国运筹学家Saaty于20世纪70年代初期提出。该方法将与决策有关的元素分解成目标、准则、方案等多…

C++的向上转型

在 C/C++ 中经常会发生数据类型的转换,例如将 int 类型的数据赋值给 float 类型的变量时,编译器会先把 int 类型的数据转换为 float 类型再赋值;反过来,float 类型的数据在经过类型转换后也可以赋值给 int 类型的变量。 数据类型转换的前提是,编译器知道如何对数据进行取舍…

TreeList 的 增加、删除节点-----DevExpress

private void FrmDictionaryManaged_Load(object sender, EventArgs e){// treeList1.DataSource CreateDataTable();treeList2.DataSource CreateTreeList();// 绑定TreeList控件到数据源treeList1.DataSource GetData();treeList1.KeyFieldName "ID";treeList1.…

【Python小项目之Tkinter应用】Python的GUI库Tkinter实现随机点名工具或抽奖工具并封装成.exe可执行文件

文章目录 一、项目背景二、需求分析UI界面设计如下:具体需求如下: 二、实现思路三、项目关键代码读取excel中的人员名单实现随机滚动抽取主函数中Tkinter的界面相关操作实现窗口相关背景图设置组件相关 完整代码 四、将程序封装成.exe可执行文件将代码转…

【C++基础】6. 常量

文章目录 【 1. 常量的分类 】1.1 整型常量1.2 浮点常量1.3 字符常量1.4 字符串常量1.5 布尔常量 【 2. 常量的定义 】2.1 #define 预处理器2.2 const 关键字 常量 是固定值,在程序执行期间不会改变。这些固定的值,又叫做字面量。常量可以是任何的基本数…

Linux C进程间通信(IPC)

概述 每个进程有独立的进程空间: 好处————安全 缺点:开销大(独立的地址空间);进程的通信更加困难(对其他进程的操作开销也大) 广义上的进程间通信: A进程写给文件/数据库&am…

重拾html5

新增的position: sticky; 基于用户的滚动位置来定位,粘性定位的元素是依赖于用户的滚动,在 position:relative 与 position:fixed 定位之间切换。ie15以上的低版本不支持,Safari 需要使用 -webkit- prefix; vertical-align: midd…