网站集群批量管理-Ansible-(playbook)

news2024/10/9 8:26:33

1.剧本概述

1. playbook 文件,用于长久保存并且实现批量管理,维护,部署的文件. 类似于脚本存放命令和变量

2. 剧本yaml格式,yaml格式的文件:空格,冒号

2. 区别

ans-playbookans  ad-hoc
共同点批量管理,使用模块批量管理,使用模块
区别重复调用不是很方便,不容易重复
场景部署服务,多个步骤的任务测试使用

3. 剧本书写格式

##书写剧本
---
- hosts: all
  tasks:
   - name: 这是第1个
     shell: echo '1' >/tmp/xzb66.txt
   - name: 这是第2个
     shell: echo '2'>/tmp/xzb66.txt
   - name: 这是第3个
     shell: echo '3'>/tmp/xzb66.txt
##执行剧本 -i 指定你的/etc/ansible/hosts的文件地址
ansible-playbook -i hosts 01-playbook-yml 

执行的时候有奶牛:

可以删除软件或修改ansible.cfg配置进行关闭 #nocows = 1 去掉注释即可 

书写Ans playbook注意事项:

1. 同一个层级的内容对齐的 

2. 不同层级的通过2个空格对齐

3. 不能使用tab键

3.剧本案例 

案例01: 创建目录并分发文件

##1. 创建目录/server/files/
##2. /etc/hosts文件发送过去/server/files/
---
- hosts: all
  tasks:
   - name: 01创建目录
     file:
      path: /server/file/
      state: directory
   - name: 02创建文件
     copy:
      src: /etc/hosts
      dest: /server/file/
##3. 执行剧本,查看结果
ansible-playbook -i hosts 02-playbook.yml

案例02: 分发软件包,安装软件包,启动服务 

- hosts: all
  tasks:
    - name: 01 下载软件包
      get_url:
        url: https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/6.0/rhel/7/x86_64/zabbix-agent2-6.0.7-1.el7.x86_64.rpm
        validate_certs: no
        dest: /tmp/

    - name: 02 安装软件包
      yum:
        name: /tmp/zabbix-agent2-6.0.7-1.el7.x86_64.rpm
        state: present

    - name: 03 配置
      debug:
        msg: "进行配置zabbix-agent"

    - name: 04 开机自启
      systemd:
        name: zabbix-agent2
        enabled: yes
        state: started
##运行剧本
ansible-playbook -i hosts 03-playbook.yml 
##查看结果
ansible all -i hosts -m shell -a 'ps -ef|grep zabbix'

案例03: 部署NFS服务

##nfs服务端:在backup上部署nfs服务,共享/backup-nfs目录,all_squash,匿名用户:nfsnobody 
##nfs客户端:web挂载 /ans-upload目录挂载nfs服务端共享的/backup-nfs(永久挂载)
- hosts: backup
  tasks:
    - name: 01 在backup上部署nfs,rpcbind服务端
      yum:
        name: nfs-utils,rpcbind
        state: present
    - name: 02 修改配置文件 
      lineinfile: 
        path: /etc/exports
        line: "backup-nfs 172.16.1.0/24(rw,all_squash)"
        create: true
    - name: 03 创建共享目录并修改所有者
      file:
        path: backup-nfs
        owner: nfsnobody
        group: nfsnobody
        state: directory
    - name: 04-1 启动服务(注意顺序)
      systemd:
        name: rpcbind
        enabled: yes
        state: started
    - name: 04-02 启动服务
      systemd:
         name: nfs
         enabled: yes
         state: started

- hosts: nfs
  tasks:
    - name: 01 部署nfs-utils
      yum:
        name: nfs-utils
        state: present
    - name: 02 挂载
      mount:
        src: 172.16.1.41:/backup-nfs
        path: /ans-upload
        fstype: nfs
        state: mounted
##运行剧本,查看结果
ansible-playbook -i hosts 05-playbook-yml
##查看
ansible nfs -i hosts -a 'df -h'

 4. Ansible中的变量

1. 变量无处不在,在ans中大部分地方都可以定义变量

2. 比较常用的创建变量的地方:剧本中,类似于命令行 ` `(反引号)的 功能,共用的变量文件.

可以定义变量的地方说明
在剧本文件中定义比较常用. 仅仅限于当前的play使用
register变量(注册变量)

ip=`hostname -I`

实现脚本中反引号的功能,可以获取命令结果

变量文件(根据主机清单分分组进行定义变量)如果多个剧本,使用相同的变量,大型的剧本roles
inventory主机清单中定义变量未来可以用于批量修改主机使用,其他很少用了
facts变量

一般用于获取主机基本信息:ip,主机名,系统 (centos/ubuntu)

如果不需要可以关闭,用于加速剧本的执行

 

 4.1 剧本中使用变量

批量创建/oldboy/xzb/upload/
- hosts: all
  vars:
    dir: /oldboy/xzb996/upload/
  tasks:
    - name: 创建目录
      file:
        path: "{{dir}}"
        state: directory
##运行剧本,查看结果
ansible-playbook -i hosts 05-vars-yml

提示:

1. 使用变量的时候如果变量是某个选项的开头,则变量引用的时候需要加上双引号 

2. 在剧本play中定义变量应用:仅仅在当前play生效,一般用来存放路径,用户名,ip地址,类似于之前使用的脚本,注意引号使用

dir: /oldboy/xzb/upload/
file:
  path: "{{ dir }}"#这种要添加,变量是开头.
file:
  path: /oldboy-new/{{ dir }}  #这种可以不加引号,变量不是开头.

 4.2 共用变量-变量文件

##创建变量文件
dir: /tmp/
file: xzb.txt
user: xzb996
##创建剧本
- hosts: all
  vars_files: ./vars.yml  ##也可以写变量文件的绝对路径
  tasks:
    - name: 变量文件
      file:
        path: "{{dir}}/{{user}}-{{file}}"
        state: touch

##运行剧本,查看结果
ansible-playbook -i hosts 06-vars.yml

4.3 共用变量-根据主机组使用变量 

group_vars/

     lb/vars.yml  #存放lb组的变量

     web/vars.yml #存放web组的变量

     data/vars.yml #存放xxx组的变量

     all/vars.yml  #所有主机共用的变量

未来一般使用all分组即可,把所有变量存放在一起,供剧本使用

##在剧本的统计目录下创建group_vars/all/vars.yml
[root@ansible_xing /server/scripts/playbook]# mkdir -p /group_vars/all/
vim vars.yml
user: www
nfs_dir: /nfs_backup
web_mount_dir: /web_nfs
nfs_server: 172.16.1.41
rsync_pass: 1
##创建剧本
[root@ansible_xing /server/scripts/playbook]# vim 07-group-vars.yml
- hosts: all
  tasks:
   - name: 测试group变量
     debug:
       msg: "变量内容 {{user}} {{rsync_pass}}"

- hosts: backup
  tasks:
   - name: 测试web组是否被识别到
     debug:
        msg: "web组识别的变量内容为{{user}} {{rsync_pass}}"
##运行剧本
ansible-playbook -i hosts 07-group-vars.yml 

4.4 register变量注册变量

1. 本质上就是用来实现脚本中的反引号功能. ip=`hostname -I`

2. 用户通过命令获取的内容都存放到Register变量中

- hosts: all
  tasks:
   - name: get data
     shell: date +%F
     register: result

   - name: print result 变量内容
     debug: 
       msg: "register变量的全部内容是{{result.stdout}}"
##运行脚本查看结果
ansible-playbook -i hosts 08-reg-vars.yml 

 

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

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

相关文章

裸眼3D巨幕视频演示Pr城市广告显示屏样机模板

震撼大气超强视觉冲击力3D城市数字广告牌视频演示pr模板工程文件。 5个城市街景裸眼3D巨幕户外广告显示屏样机模板。每个场景提供2个不同的相机视图。 下载地址:https://prmuban.com/40595.html

移动技术开发:文件的读取

1 实验名称 文件的读写 2 实验目的 掌握Android中读写文件的实现方法。 3 实验源代码 布局文件代码&#xff1a; <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android&quo…

旅游管理智能化:SpringBoot框架的应用

第一章 绪论 1.1 研究现状 时代的发展&#xff0c;我们迎来了数字化信息时代&#xff0c;它正在渐渐的改变着人们的工作、学习以及娱乐方式。计算机网络&#xff0c;Internet扮演着越来越重要的角色&#xff0c;人们已经离不开网络了&#xff0c;大量的图片、文字、视频冲击着我…

MySQL 基础入门教程

参考视频地址&#xff1a;一小时MySQL教程 bilibili SQL 基础 数据库分为关系型数据库和非关系型数据库 常见的关系型数据库&#xff1a; MySQL、PostgreSQL、Oracle、SQL Server等。 非关系型数据库&#xff1a; MongoDB&#xff08;文档型数据库&#xff09;、Redis&am…

1.9 电子商城测试分析

欢迎大家订阅【软件测试】 专栏&#xff0c;开启你的软件测试学习之旅&#xff01; 文章目录 前言1 测试流程2 下单业务测试分析3 单功能测试分析3.1 登录单功能测试分析3.2 购物车单功能测试分析3.3 支付单功能测试分析 4 Web项目非功能测试 前言 电子商城作为一个电子商务平…

Elsevier(爱思唯尔)的Latex模板使用指南以及图、表、文献引用细节

目录 1.模板下载链接 2.模板文件说明与打开方法 2.1.模板文件说明 2.2.模板打开方法 3.模板使用快速入手 3.1.第一部分&#xff1a;导言区 3.1.1.\documentclass 3.1.2.\usepackage 3.1.3.\journal 3.1.4.\captionsetup 3.1.5.\newcommand 3.2.第二部分&#xff1a…

Stable Diffusion绘画 | 人物、场景、3D转手绘线稿

人物线稿 第1步&#xff0c;输入线稿生成必备的提示词&#xff1a; 第2步&#xff0c;开启 ControlNet&#xff0c;加载需要转绘的图片&#xff0c;控制类型选择「SoftEdge」&#xff0c;预处理器选择「softedge_hed」&#xff1a; 第3步&#xff0c;添加一个线稿 LoRA&#x…

search

search problems video link Harvard Machine Learning Frontier 在计算机科学和算法领域&#xff0c;frontier&#xff08;前沿&#xff09;通常指的是在某些搜索或遍历算法中的边界节点集合&#xff0c;这些节点是当前探索到的但还没有被完全处理的节点。前沿的概念常出现在…

WinCC7.5 将归档数据打印到MSFlexGrid控件

第一种方法&#xff1a; WinCC7.5 将归档数据打印到MSHGrid控件 https://blog.csdn.net/weixin_37928884/article/details/134170305 第二种方法&#xff1a; MSFlexGrid控件 查询按钮 Sub OnClick(ByVal Item) …

Airplane.dev 2024年3月关闭之感

airplane 这个云服务产品可能很多人都没有用过。 我们使用的原因是&#xff0c;先前公司非常喜欢使用 airplane 来给运行给已有的产品打运行时补丁。 前公司的策略就是当发现一个问题可能涉及到数据库的不一致性&#xff0c;那么解决方案就是定时运行一套 SQL 来让数据库保持…

MHAD数据集:由京东健康、华中科技大学和浙江大学联合收集,最全面包含多角度、多活动和多生理信号的家庭视频生理学数据集

2024-08-30&#xff0c;由京东健康、华中科技大学和浙江大学联合收集的第一个真实家庭环境中的多模态数据集MHAD&#xff0c;包含不同拍摄角度和各种家庭场景。它包含了迄今为止最全面的生理信号&#xff0c;是计算机视觉、机器学习和生物医学工程等多个学术研究领域的宝贵资源…

计算机毕业设计Tensorflow交通标志识别检测 车流量预测 车速检测 自动驾驶 机器学习 深度学习 人工智能 PyTorch 大数据毕设

《Tensorflow交通标志识别检测》开题报告 一、研究背景及意义 随着智能交通系统和无人驾驶技术的快速发展&#xff0c;交通标志识别系统成为智能驾驶系统的重要组成部分。传统的交通标志识别方法主要依赖于人工检查和识别&#xff0c;存在效率低下、易受主观因素影响等问题。…

js基础速成12-正则表达式

正则表达式 正则表达式&#xff08;Regular Expression&#xff09;或 RegExp 是一种小型编程语言&#xff0c;有助于在数据中查找模式。RegExp 可以用来检查某种模式是否存在于不同的数据类型中。在 JavaScript 中使用 RegExp&#xff0c;可以使用 RegExp 构造函数&#xff0…

髓质脊髓三叉神经核文献阅读笔记

文献阅读 1.RNA-seq 对于大量RNA测序&#xff0c;收集第30天的类器官。使用FastPure细胞/组织总RNA分离试剂盒根据制造商的方案提取总RNA。采用Nanodrop 2000分光光度计测定RNA浓度和纯度。使用Agilent 2100生物分析仪和2100 RNA纳米6000检测试剂盒评估RNA样品的完整性。简单…

自动驾驶系列—从IMU到惯性定位算法:自动驾驶精准定位的幕后科技

&#x1f31f;&#x1f31f; 欢迎来到我的技术小筑&#xff0c;一个专为技术探索者打造的交流空间。在这里&#xff0c;我们不仅分享代码的智慧&#xff0c;还探讨技术的深度与广度。无论您是资深开发者还是技术新手&#xff0c;这里都有一片属于您的天空。让我们在知识的海洋中…

使用Git生成SSH密钥教程(附Git常用命令)

一、为什么使用SSH&#xff1f; 使用 Git 的 SSH&#xff08;安全外壳协议&#xff09;主要有以下几个原因&#xff1a;1. 安全性&#xff1a;SSH 是一种加密的网络协议&#xff0c;用于在网络中安全地运行网络服务。使用 SSH&#xff0c;所有传输的数据都会被加密&#xff0c…

FreeRTOS——系统配置文件FreeRTOSConfig.h详解

FreeRTOSConfig.h配置文件作用&#xff1a;对FreeRTOS进行功能配置和裁剪&#xff0c;以及API函数得使能。 FreeRTOSConfig.h 是一个用户级别的配置文件&#xff0c;不属于内核文件。每个用户可以有不同的FreeRTOSConfig.h&#xff0c;从而实现不同的功能配置。 对于FreeRTOS配…

C++ static静态

个人主页&#xff1a;Jason_from_China-CSDN博客 所属栏目&#xff1a;C系统性学习_Jason_from_China的博客-CSDN博客 所属栏目&#xff1a;C知识点的补充_Jason_from_China的博客-CSDN博客 概念概述 用 static 修饰的成员变量&#xff0c;称之为静态成员变量&#xff0c;静态成…

车辆重识别(2021NIPS无分类器扩散指南)论文阅读2024/10/08

什么叫做有条件和无条件的扩散模型&#xff1f; FID是什么&#xff1f; IS是什么&#xff1f; λ是给出的参数&#xff0c;就像去噪扩散模型中每个时间步的β一样&#xff0c;每一时间步的λ都会给出。对于是否有条件信息c的概率 我的意思是在每一个训练轮次中&#xf…

一个适用于 ASP.NET Core 的轻量级插件框架

前言 今天大姚给大家分享一个适用于 ASP.NET Core 的轻量级插件框架&#xff0c;简单配置&#xff0c;开箱即用&#xff1a;PluginCore。 项目概述 PluginCore 是一个基于 ASP.NET Core 的轻量级插件框架&#xff0c;旨在简化插件的集成与管理。通过最少的配置&#xff0c;开…