侧边栏壁纸
博主头像
落叶人生博主等级

走进秋风,寻找秋天的落叶

  • 累计撰写 130562 篇文章
  • 累计创建 28 个标签
  • 累计收到 9 条评论
标签搜索

目 录CONTENT

文章目录

Slatstack 高级技巧(一) 自定义Grains信息获取

2023-10-01 星期日 / 0 评论 / 0 点赞 / 44 阅读 / 2591 字

自定义一个salt.grains 查看/etc/salt/master配置文件 file_roots: #分环境 uat: - /srv/salt/uat/ prod: - /srv/s

自定义一个salt.grains 查看/etc/salt/master配置文件

file_roots:   #分环境
   uat:
     - /srv/salt/uat/
   prod:
     - /srv/salt/prod/

根据配置在/srv/salt/prod 生产环境profile下新建文件夹_grains

由于salt不自带获取disk磁盘大小的grains,我们必须要通过Python脚本自定义,脚本如下:

[root@PyDev _grains]# cat disk.py
import subprocess

def disk():
    child = subprocess.Popen(["lsblk", "-b"], stdout=subprocess.PIPE)
    out = child.stdout.readlines()
    total_disk=0
    for item in out:
        line = item.strip().split()
        if line[5] == 'disk':   #把类型为disk的物理磁盘空间加起来
            k = int(line[3])
            total_disk += k
    total_disk = total_disk / 1024 /1024 /1024
    grains['disk']=total_disk
    return grains   #返回给grains

 

注意千万别写错了,任何对生产的操作都可能会造成非常严重的后果,Devops的开发必须对自己每一行代码负责

 Jul 26 22:18:47 PyDev salt-minion: TypeError: can't serialize <function disk at 0x181f050>

删除 /var/cache/salt/minion/extmods/grains/ 下对应的文件就可以了

以后执行grains之前一定要准备好ssh脚本,任何方案和操作都要有回滚计划

把grains推送prod环境

[root@PyDev bin]# salt '*' saltutil.sync_all  slatenv=prod
PyDev:
    ----------
    beacons:
    engines:
    grains:
        - grains.disk
    log_handlers:
    modules:
    output:
    proxymodules:
    renderers:
    returners:
    sdb:
    states:
    utils:
运用成功,我们来跑一下grains

[root@PyDev _grains]# salt '*' grains.items | more

 cpu_model:
        Intel(R) Core(TM) i7-4790 CPU @ 3.60GHz
    cpuarch:
        x86_64
    disk:
        100

    disks:
已经获取了100G磁盘

广告 广告

评论区