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

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 

4.5 facts变量

1. 运行剧本的时候ans会收集每个主机的基本信息,这些信息形成的变量叫做facts变量.

2. facts变量setup模块获取,可以通过ansible -i hosts nfs  -m setup查看.

##常用fact变量
ansible_hostname               #主机名 
ansible_memtotal_mb            #内存大小(总计) 单位mb 
ansible_processor_vcpus        #cpu数量 
ansible_default_ipv4.address   #默认的网卡ip eth0
ansible_distribution           #系统发行版本名字
- hosts: all
  tasks:
    - name: 显示系统信息
      debug:
        msg: |
           你的系统是:{{ansible_hostname}}
           内存大小:{{ansible_memtotal_mb}}
           cpu数量:{{ansible_processor_vcpus }}
           默认网卡ip:{{ansible_default_ipv4.address}}
           系统发行版本:{{ansible_distribution}}
##运行脚本,查看结果
ansible-playbook -i hosts  09-facts.yml

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

网关在不同行业自动化生产线的应用

网关在不同行业自动化生产线的应用,展示了其作为信息与物理世界交汇点的广泛影响力,尤其在推动行业智能化、自动化方面发挥了不可估量的作用。以下是网关技术在污水处理、智慧农业、智慧工厂、电力改造及自动化控制等领域的深入应用剖析。 1. 污水处理 …

java方法对象案例

完成电影信息展示功能;根据电影id查询该电影的详细 主方法: package Y; import java.util.Scanner; public class 模仿电影系统main { //目标:完成电影信息展示功能;根据电影id查询该电影的详细 //电影数据// 1,"水门桥&q…

超级智能“试衣镜”!GarDiff:高保真保持目标人物特征和服装细节,虚拟试穿技术新SOTA!

今天给大家介绍一个最新的虚拟试穿技术GarDiff,它可以分析你想穿的衣服和你的照片并提取出衣服的颜色、纹理和形状等细节。然后通过一个特殊的“对比器”来确保衣服与您的身体形状完美契合。这个对比器会使用两种不同的“眼睛”:一种是可以看到整体外观的…

PhotoMaker部署文档

一、介绍 PhotoMaker:一种高效的、个性化的文本转图像生成方法,能通过堆叠 ID 嵌入自定义逼真的人类照片。相当于把一张人的照片特征提取出来,然后可以生成你想要的不同风格照片,如写真等等。 主要特点: 在几秒钟内…

【华为HCIP实战课程七】OSPF邻居关系排错MTU问题,网络工程师

一、MTU MUT默认1500,最大传输单元,一致性检测 [R3-GigabitEthernet0/0/1]mtu 1503//更改R3的MTU为1503 查看R3和SW1之间的OSPF邻居关系正常: 默认华为设备没有开启MTU一致性检测! [R3-GigabitEthernet0/0/1]ospf mtu-enable //手动开启MTU检测 [SW1-Vlanif30]ospf mtu…

centos7 yum仓库无法使用的问题

1、问题 如下 2、按照csdn等网页说的做了没有用!CentOS-yum源不可用报错:Could not retrieve mirrorlist 问题解决_yum could not retrieve mirrorlist-CSDN博客 3、使用b站博主的方法解决! LinuxMirrors: GNU/Linux 一键更换系统软件源脚本…

Ambari搭建Hadoop集群 — — 问题总结

Ambari搭建Hadoop集群 — — 问题总结 一、部署教程: 参考链接:基于Ambari搭建大数据分析平台-CSDN博客 二、问题总结: 1. VMwear Workstation 查看网关 2. 资源分配 参考: 硬盘:master(29 GB&#xff…

基于组合模型的公交交通客流预测研究

摘 要 本研究致力于解决公交客流预测问题,旨在通过融合多种机器学习模型的强大能力,提升预测准确性,为城市公交系统的优化运营和交通管理提供科学依据。研究首先回顾了公交客流预测领域的相关文献,分析了传统统计方法在处理大规…

去噪扩散概率模型(Denoising Diffusion Probabilistic Models, DDPM)-Python案例

1、去噪概率模型(Denoising Probabilistic Models) 去噪概率模型(Denoising Probabilistic Models)是一类通过学习数据的潜在分布来去除噪声的生成模型。其核心思想是,在有噪声的数据中,模型通过条件概率学…

pytest框架之fixture测试夹具详解

前言 大家下午好呀,今天呢来和大家唠唠pytest中的fixtures夹具的详解,废话就不多说了咱们直接进入主题哈。 一、fixture的优势 ​ pytest框架的fixture测试夹具就相当于unittest框架的setup、teardown,但相对之下它的功能更加强大和灵活。 …

基于SSM医疗信息管理系统(源码+定制+参考)

博主介绍: ✌我是阿龙,一名专注于Java技术领域的程序员,全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师,我在计算机毕业设计开发方面积累了丰富的经验。同时,我也是掘金、华为云、阿里云、InfoQ等平台…

Python数字图像处理实战——基于OpenCV实现多种滤波器(附完整代码和结果图)

Python数字图像处理实战——基于OpenCV实现多种滤波器(附完整代码和结果图) 关于作者 作者:小白熊 作者简介:精通python、matlab、c#语言,擅长机器学习,深度学习,机器视觉,目标检测…

分辨率提高4到8倍!AI高清修复工具-upscayl使用方法!

你还在为手中的模糊照片苦恼吗? 是不是想把老照片或低分辨率的图片用于大尺寸印刷,却因为画质糟糕而无从下手? 现在你不再需要高深的Photoshop技能,也不用花费巨资找人修图。借助AI高清修复工具Upscayl,只需几秒钟&am…

Python、R语言Lasso、Ridge岭回归、XGBoost分析Airbnb房屋数据:旅游市场差异、价格预测

全文链接:https://tecdat.cn/?p37839 原文出处:拓端数据部落公众号 分析师: Kefan Yu 在大众旅游蓬勃发展的背景下,乡村旅游已成为推动乡村经济、社会和文化发展的关键力量。当前,乡村旅游接待设施主要以招待所、…

基于Python的抑郁症患者看护系统

作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏:…

如何实现Vue2项目升级Vue3?

Vue3正式版已经发布有两年多了,如今它也已成为Vue的默认开发版本,如果你想要对之前Vue2项目进行升级重构,可以从以下几个维度入手: ① 构建工具 ② 入口文件 ③ 插件 ④ 指令 ⑤ 路由 ⑥ 状态管理 ⑦ 其他 一、构建工具 Vue3推荐使…

HTB:Base[WriteUP]

目录 连接至HTB服务器并启动靶机 1.Which two TCP ports are open on the remote host? 2.What is the relative path on the webserver for the login page? 3.How many files are present in the /login directory? 4.What is the file extension of a swap file? …

springboot如何集成mybatis?

背景:以前一直是直接cv一个项目中现成的xml文件,然后再去自己配置mapper等数据。自己准备做一个单独的例子试一下。 步骤1:在pom.xml文件中插入mybatis-generator插件,这里选的版本是1.3.2,然后指定的generator文件是在…

IDM6.42下载器!下载速度就像坐上了火箭,嗖嗖的快到飞起!

亲爱的朋友们,今天我要给大家安利一款下载神器——Internet Download Manager 6.42(简称IDM)!这款软件简直就是下载界的“速度与激情”,用了它之后,你会发现下载速度就像坐上了火箭,嗖嗖的快到飞…

Python 如何使用 SQLAlchemy 进行复杂查询

Python 如何使用 SQLAlchemy 进行复杂查询 一、引言 SQLAlchemy 是 Python 生态系统中非常流行的数据库处理库,它提供了一种高效、简洁的方式与数据库进行交互。SQLAlchemy 是一个功能强大的数据库工具,支持结构化查询语言(SQL)…