博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
salt demo 环境
阅读量:6697 次
发布时间:2019-06-25

本文共 3738 字,大约阅读时间需要 12 分钟。

demo 环境

安装 virtualBox和vagrant

  1. 安装工具包:virtualBox, vagrant
  2. 下载 https://github.com/UtahDave/salt-vagrant-demo,download zip或者clone项目。
    进入目标文件夹,启动
cd %homepath%\Downloads\salt-vagrant-demo-mastercd ~\Downloads\salt-vagrant-demo-mastervagrant up

vagrant的使用

中止vagrantvagrant haltvagrant destroy  # 关闭vagrant up # 启动

安装SaltStack

  • 可以使用pip,source code,或者bootstrap 脚本来安装
  • salt 也提供了用于创建机器,在共有或者私有云上安装salt的工具。salt在物理上,云和虚拟环境上的使用都是一样的。

如果用的是salt,vagrant,按照上面的操作步骤,就已经安装好了;如果不是上述环境,bootstrap脚本是最简单的安装方式。

接收连接

salt master和salt minion之间的连接使用秘钥。

cd 到 vagrant-demo-master目录下,执行如下命令,进入到salt master

vagrant ssh mastersudo su # 切到root用户#登录之后,可以看到salt minion机器的连接情况salt-key --list-all# 接受一个keysalt-key --accept=
# 接受所有的keysalt-key --accept-all# 发送命令确认salt minion是否在监听命令salt '*' test.ping

执行命令

运行shell命令

salt '*' cmd.run 'ls -l /etc'

命令语法

salt '*' pgk.install cowsay# '*'是target minion, pgk.install 是 module.function ; cowsay是arguments;'*' 将匹配所有的minion机器# 使用目标机器过滤salt '*' sys.docsalt '*' sys.doc pkgsalt '*' sys.doc pkg.installsalt '*' disk.usage  # 查看磁盘使用情况salt '*' network.interfaces  # list network interfaces

Targeting 指定执行命令的salt minion机器

  • 直接指定某个,或某几个minion机器,支持正则
salt -E 'minion[0-9]' test.ping
  • 使用grains系统
salt -G 'os:Ubuntu' test.ping

grains用于收集操作系统数据,如域名,ip, kernal, os 类型,以及其它属性

可以自定义grain,放在salt master的/etc/salt/grains下,或者放在salt minion的配置文件的grains 文件夹下。

grains.ls 用于列出minion上所有的grains机器。

grains的名字都是小写

  • minion list,使用逗号隔开
salt -L 'minion1,minion2' test.pinghttps://docs.saltstack.com/en/getstarted/fundamentals/states.html
  • 以上几种方式结合使用
salt -C 'G@os:Ubuntu and minion* or S@192.168.50.*' test.ping

Create Salt State

  • sate 是可复用的配置模板

    一个任务可能是由多个命令组合成的,这些命令要在不同的salt minion上执行,而对于不同的minon机器而言,每个命令都有细微的差别,错误也不一样。为了解决这样的问题,salt的配置管理提供了可服用的模板,一个模板成为一个state,可以把系统组件或者应用放入一个配置中。

  • state 是用yaml来描述的
    /srv/salt maps 本地目录:salt-vagrant-demo-master/saltstack/salt
    可以使用本地编辑器,然后保存在本地文件系统中,vagrant呈现出来的就是感觉像是在salt master上操作一样
  • 编辑如下文件
install_network_packages:  pkg.installed:    - pkgs:      - rsync      - lftp      - curl
  • 保存至demo-master/saltstack/salt/nettools.sls
  • salt master 上应用这个文件,执行命令
salt 'minion2' state.apply nettools# state.apply 添加于2015.5, 之前的版本调用 state.sls
  • salt minion上发布:
salt minion2 state.sls nettools

发布过之后,在没有更新的情况下再次发布,会提示没有任何更新,保持了幂等性。

更新之后,state会重启服务,copy所有的路径,直接让其他states先使用变量,先运行。

专业术语

  • formula
    salt state 和salt pillar文件的集合,用于配置一个应用或者系统组件。大多数fomulas是由若干个设计多个salt sate 文件的salt state构成
  • state
    可复用的声明,配置系统的某个部分。每个sate的定义都会使用sate 声明
  • sate 声明
    state file的高级部分,列出了构成state的 函数调用和参数。每个声明都用一个唯一ID开头
  • state 函数
    用于调用执行系统配置任务的命令
  • state file
    sls文件,包括一个或多个声明
  • pillar file
    sls文件,用于定义系统中的用户的变量和数据的
  • state 函数

    salt.state.*开头的函数
    https://docs.saltstack.com/en/latest/salt-modindex.html#cap-s salt state函数文件

  • yaml 自己的标记语言

    salt使用yaml描述配置
    使用固定的缩进模式,来呈现数据层级之间的关系。salt要求每层开头有两个空行,不是tab。
    破折号代表list中的一个item
    键值对的表示形式key:value

  • 执行顺序

    命令的执行顺序是从上到下。salt提供了可以设置执行顺序的方法,后面介绍。

Apply and Target State

  • github formulas仓库
  • 批量更新,限制每次更新的salt minon的数量 salt --batch-size 10 '*' state.apply
  • salt state中不包括应该接收配置的salt minion的信息, salt state只定义salt minion如何接收配置。
  • top file,定义在哪儿应用states
  • states和top file一起创建saltstack的核心配置。

关于top file

  • highstate,会引发所有的目标 minion机器下载 /srv/salt/top.sls文件,找到匹配的目录。如果找到了 匹配的,minon会应用目录下列出的所有的state 文件。很多用户会规律地执行highstate,保证系统正常
  • top file 用于在highstate期间,使得salt minion应用多个state文件。minion使用哪个sate file,sate file的路径会在top file中列出来。
  • top file示例:
All:  - vim  - script dir  - Admin asstsWeb servers:  - apache  - python  - djangodb server:  - mysql转换为top.slsbase:  '*'     - vim     - script dir     - Admin assts  '*web*':     - apache     - python     - jango  '*db*':    - mysqlbase:  '*':    - common  'minion1':    - nettools将这个部署salt '*' state.apply#calling state.apply with no arguments starts a highstate.结果就是,minion1上安装ntetools

转载于:https://www.cnblogs.com/fthjane/p/6203112.html

你可能感兴趣的文章
微软老兵 Antoine LeBlond 将正式离职
查看>>
《开源思索集》一Source Code + X
查看>>
《树莓派学习指南(基于Linux)》——1.4 将Raspbian烧录到SD卡
查看>>
《脱颖而出——成功网店经营之道》一2.6 连横:返利模式的应用及分销
查看>>
如约而至 Nexus 6 的 Android 7.1.1 已经上线
查看>>
阿里巴巴Dubbo实现的源码分析
查看>>
《Effective Debugging:软件和系统调试的66个有效方法》一第5条:在能够正常运作的系统与发生故障的系统之间寻找差别...
查看>>
《塑造互联网思维的企业》一一第4章 全球商务向社会化媒体的转变
查看>>
《简明电路分析》——导读
查看>>
[MySQL 5.6优化] --order by limit x,x 优化
查看>>
《Python爬虫开发与项目实战》——第3章 初识网络爬虫 3.1 网络爬虫概述
查看>>
《Adobe InDesign CS6中文版经典教程》—第1课1.5节修改文档的缩放比例
查看>>
《3ds Max疯狂设计学院》——1.6节3ds Max 2016新增的主要功能
查看>>
提升你的开发效率,10 个 NPM 使用技巧
查看>>
《Pro/ENGINEER野火版5.0从入门到精通》——2.5 设置零件单位
查看>>
《游戏视频主播手册》——2.2 哪些人适合做游戏主播
查看>>
《Windows PowerShell实战指南(第2版)》——1.4 搭建自己的实验环境
查看>>
《黑客秘笈——渗透测试实用指南》—第2章2.3节 外部或内部的主动式信息收集...
查看>>
3D打印技术在医疗领域能做些什么?帮助精确完成手术
查看>>
如何在Docker容器中运行GUI程序
查看>>