demo 环境

安装 virtualBox和vagrant

  1. 安装工具包:virtualBox, vagrant
  2. 下载 https://github.com/UtahDave/salt-vagrant-demo,download zip或者clone项目。

    进入目标文件夹,启动
cd %homepath%\Downloads\salt-vagrant-demo-master
cd ~\Downloads\salt-vagrant-demo-master
vagrant up

vagrant的使用

中止vagrant
vagrant halt
vagrant 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 master

sudo su # 切到root用户

#登录之后,可以看到salt minion机器的连接情况
salt-key --list-all # 接受一个key
salt-key --accept=<key> # 接受所有的key
salt-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.doc
salt '*' sys.doc pkg
salt '*' sys.doc pkg.install
salt '*' 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 assts
Web servers:
- apache
- python
- django
db server:
- mysql 转换为top.sls
base:
'*'
- vim
- script dir
- Admin assts
'*web*':
- apache
- python
- jango
'*db*':
- mysql base:
'*':
- common
'minion1':
- nettools
将这个部署
salt '*' state.apply
#calling state.apply with no arguments starts a highstate.
结果就是,minion1上安装ntetools

salt demo 环境的更多相关文章

  1. Marketing Cloud demo环境和API使用方法说明

    version 1.0 作者:Wang Jerry 更多问题请联系我 demo 系统url:https:/jerry.hybris.com/sap/bc/ui5_ui5/ui2/ushell/shel ...

  2. [整]Android SlidingMenu Demo 环境搭建

    1. 下载ActionBarSherlock https://github.com/JakeWharton/ActionBarSherlock 2. 下载SlidingMenu https://git ...

  3. 第7篇 ORACLE EBS DEMO虚拟机环境的安装

    ERP信息系统的实施不仅要求懂得道理方面的知识,更要侧重于应用实践.为了有一个稳定的测试环境.初学者可以自己搭建一个EBS DEMO环境.本节介绍EBS DEMO环境虚拟机的安装.一. 安装前的准备( ...

  4. 打造高效前端工作环境-tmuxinator

    前言  虽然tmux能让我们方便组织工作环境,但每次重新打开会话时都需要手动重新创建窗口.窗格和执行各种程序,能不能像VS那样以工程为单位保存窗口.窗格和各种所需执行的程序的信息呢?tmuxinato ...

  5. Microsoft Dynamics AX 7 新特性探索 - Demo 部署(Part 1)

    Dynamics AX 7已经发布了一段时间了,我们知道这次微软为我们带来了许多令人激动的新特性.在这个系列里,Reinhard将揭开New Dynamics AX的神秘面纱,和大家一起探索这些新的特 ...

  6. grunt使用小记之uglify:最全的uglify使用DEMO

    grunt-contrib-uglify uglify是一个文件压缩插件,项目地址:https://github.com/gruntjs/grunt-contrib-uglify 本文将以一个DEMO ...

  7. Dll学习二_Dll 窗体中动态创建数据并使用Demo

    沿用上一篇Demo 环境:DelphiXE,XP,SQL2005 贴出改动过的单元代码: dbGrid控件版: unit SubMain_Unit; interface uses Windows, M ...

  8. 在xcode上搭建OpenGL3.x运行环境

    最近开始学习OpenGL,网上的教程太散乱,于是打算照着红宝书<OpenGL编程指南(第七版)>来学习. 于是在Mac上搭建一下Demo环境.比较方便的是,OS X上已经装了OpenGL ...

  9. 安装Rocky版OpenStack 1控制节点+1计算节点环境部署脚本

    在上一篇文章中叙述了具体的安装部署过程,在这里把相应的部署脚本写出来,供大家参考: 一.执行部署的setup.sh脚本: #!/bin/bash ########################### ...

随机推荐

  1. Android setUserVisibleHint-- fragment真正的onResume和onPause方法

    这个情况仅适合与多个fragment之间切换时统计,而非activity和fragment同时交互,因当时项目为首页4个fargment时长统计,因此适合,经下面网友评论指出,特在这里写出此问题,因最 ...

  2. oracle的数值数据类型和兼容细分类型

    Oracle存储数值类型的数据不区分int .double .float 等类型,统一使用number(p,s)来存储. 基本类型为 NUMBER(P,S) P范围1到38 S 范围 -84 到 12 ...

  3. socks v5 协议解析

    socks v5是一种用于代理的协议,就是说client用这种协议与server沟通,让server帮忙代访问remote后再将结果通过此协议返给client,所以一般是涉及到3个端,分别是clien ...

  4. 如何查找BAPI SD_SALESDOCUMENT_CHANGE里的字段对应的数据库存储表

    BAPI函数SD_SALESDOCUMENT_CHANGE可以让我们很方便地通过ABAP代码来修改Sales Order. 其输入参数ORDER_HEADER_IN的类型是BAPISDHD1, 里面包 ...

  5. CRUD全栈式编程概述

    业务场景 CRUD,从数据驱动的角度几乎所有的的业务都是在做这样的事情.  几乎所有的操作都是在做对表的增删改查.  假设我们将数据库数据规个类:  分为基础/配置数据和业务/增长数据,或者说静态数据 ...

  6. c#winform初学习

    不用思维导图了直接拍照笔记吧..参考视频:传智播客.net第十四天,参考图书c#图解教程第四版(人民邮电出版社) 对对象初始化赋值 工具箱中的每一个控件都相当于一个类 在窗体中拖一个控件就相当于new ...

  7. 动态生成的DOM做点击事件无效

    有时候我们的标签都是从后台获取的数据,然后利用JS添加到页面上,当我们写生成的标签的点击事件(click)时没有效果. 例如: <section> 测试动态生成的DOM点击事件 <b ...

  8. react(一):组件的生命周期

    最近兄弟团队让我去帮忙优化两个页面,前端用的react全家桶,后端用的python,上一次写react代码都过去一年了,顺着以前的的学习思路,再捋顺一下react的要点 组件的生命周期就是Reac的工 ...

  9. 【Java】数组知识回顾

    package another; import java.util.Arrays; import java.util.List; /** * 数组知识回顾 * @author ChristineBas ...

  10. java基础1.5版后新特性 自动装箱拆箱 Date SimpleDateFormat Calendar.getInstance()获得一个日历对象 抽象不要生成对象 get set add System.arrayCopy()用于集合等的扩容

    8种基本数据类型的8种包装类 byte Byte short Short int Integer long Long float Float double Double char Character ...