SaltStack初探---学习重点在:salt-api、salt-sls、salt-run、pillar--2017年4月21日和24日

官网文档链接:https://docs.saltstack.com


远程执行:在远程系统上执行命令是Salt的核心功能,Salt可以在秒级内在成千上万个系统上执行命令。

事件驱动架构:可以在架构中的系统中驱动响应式配置和管理

配置管理:Salt有一套健壮且灵活的配置管理框架,该框架使得同时配置成千上万套系统毫不费力


Salt的基本组件和概念

Grains

grains interface获取底层系统信息的接口。Grains收集操作系统,域名,IP,内核,OS类型,内存和其他系统属性

grains interface使得Salt的模块和组件可用,因此正确的salt minion命令可以自动化的在正确的系统上执行

Grain数据是相对静态的,即使操作系统信息改变,grain data可以自动更新

Pillar

Pillar是Salt的接口,Pillar是Salt用来分发全局变量到所有minions的一个接口

Pillar data处理方式类似Salt State Tree

Pillar data在主上编译,只有在pillar配置中指定的minion才可以获取pillar data,这使它为特定的minion存储敏感数据非常有用.

 

Targeting

Targeting minions是定义哪个minion应该执行命令,或者通过匹配主机名、系统信息、或者自定义组、甚至组合,来执行状态。

Runners

Salt Runners类似于Salt execution modules,但是他们是在master(不是在远端minions)上执行

YAML

SLS文件是YAML renderer渲染器的默认渲染器,YAML是一种标记语言,有许多强大的功能。Salt使用YAML的一个小子集包含常用的数据结构,例如list和dictionaries。YAML renderer的工作是将YAML 数据结构编译成python数据结构,让Salt使用。


salt-api:用于远程连接salt master的接口

--version 打印正在运行Salt的版本

--versions-report 输出程序依赖者和版本号,然后退出

-h, --help

-c CONFIG_DIR, --config-dir=CONFIG_dir    Salt配置目录的位置,这个目录包含Salt manager和minions的配置文件,默认位置是/etc/salt

-d, --daemon   后台运行salt-api

--pid-file=PIDFILE   指定pidfile的位置,默认位置/var/run/salt-api.pid

-l LOG_LEVEL, --log-level=LOG_LEVEL   控制台日志的日志级别:all, garbage, trace, debug, info, warning, error, quiet. 默认: warning.

--log-file=LOG_FILE   日志文件的位置,默认/var/log/salt/api

--log-file-level=LOG_LEVEL_LOGFILE   日志文件的日志级别,默认warning


salt sls

规则一: 缩进

Salt需要每个缩进级别由两个空格组成

规则二: 冒号

字典的keys在YAML中的表现形式是一个以冒号结尾的字符串。Values的表现形式冒号下面的每一行,用一个空格隔开

my_key: my_value

规则三: 短横杠

想要表示列表项,使用一个短横杠加一个空格。多个项使用同样的缩进级别作为同一列表的一部分。

my_dictionary:

- list_value_one

- list_value_two

- list_value_three


salt cmd.run:执行一个salt run

--version

--versions-report

-h, --help

-c CONFIG_DIR, --config-dir=CONFIG_dir

-t TIMEOUT, --timeout=TIMEOUT    等待从Minion返回的超时时间,以秒为单位。超时时间说明了命令行客户端查询minion,然后检查运行任务会等待多长时间。默认 1

--hard-crash 抛出原始异常,默认False

-d, --doc, --documentation   显示runners的文档,仅查看特定模块或者runner的文档


pillar

声明master pillar

Salt master server包含pillar_roots设置,pillar_roots选项从环境映射到目录,pillar data基于top.sls文件中的匹配器映射到minions。

pillar_roots:

base:

- /srv/pillar

基础环境在/srv/pillar目录下

/srv/pillar/top.sls

base:

‘*‘:

- packages

‘web*‘:

- vim

/srv/pillar/packages.sls匹配所有minion

以web开头的minion匹配/srv/pillar/packages.sls file 和 /srv/pillar/vim.sls

dev:

‘os:Debian‘:

- match: grain

- servers

传递特殊配置到指定minion

pillar的namespace

 

pillar的字典合并

 

包含其他Pillars

include:

- users:

defaults:

sudo: [‘bob‘, ‘paul‘]

key: users

In-Memory Pillar Data vs. On-Demand Pillar Data

主从上的pillar data会同步,in-memory pillar data 是由 pillar.item, pillar.get, and pillar.raw 方法返回的

saltutil.refresh_pillar.刷新方式

Pillar环境如何处理

pillarenv使minion只考虑从单一环境中获取配置文件

查看pillar data

pillar.item :在in-memory pillar data中检索

pillar.items:编译一个新的pillar字典并返回,和in-memory pillar data无关

pillar.raw:返回in-memory pillar data中整个pillar字典

pillar.get 方法

在命令行设置Pillar Data

salt ‘*‘ state.apply pillar=‘{"cheese": "spam"}‘

Pillar 中Master配置

pillar_opts: True master的配置在所有minion中都可用

时间: 2024-11-05 20:48:13

SaltStack初探---学习重点在:salt-api、salt-sls、salt-run、pillar--2017年4月21日和24日的相关文章

salt api调用iptables模块

iptables模块基本函数方法:salt.modules.iptables.append(table=u'filter', chain=None, rule=None, family=u'ipv4')salt.modules.iptables.insert(table=u'filter', chain=None, position=None, rule=None, family=u'ipv4')salt.modules.iptables.delete(table, chain=None, po

Salt API

使用Salt-API可以更加方便的对salt进行管理.配置salt-api主要有这样几个步骤: 1.证书 2.配置文件 3.验证.使用PAM验证 4.启动salt-api 验证配置 添加用户: # useradd  -M -s /sbin/nologin  saltapi 设置密码: # passwd saltapi 设置密钥: [[email protected] /etc/pki/tls/certs]# make testcert 在另一个目录中设置不需要密码验证的key: [[email 

saltstack/salt的state.sls的使用

SLS(代表SaLt State文件)是Salt State系统的核心.SLS描述了系统的目标状态,由格式简单的数据构成.这经常被称作配置管理 首先,在master上面定义salt的主目录,默认是在/srv/salt/下面,vim /etc/salt/master: file_roots: base: - /srv/salt dev: - /srv/salt-dev 然后,在/srv/salt下面创建top.sls文件(如果有的话,就不用创建了,直接编辑好了) vim top.sls base:

saltstack/salt的state.sls和pillar定义以及使用

SLS(代表SaLt State文件)是Salt State系统的核心.SLS描述了系统的目标状态,由格式简单的数据构成.这经常被称作配置管理 首先,在master上面定义salt的主目录,默认是在/srv/salt/下面,vim /etc/salt/master: file_roots:    base:      - /srv/salt    dev:     - /srv/salt-dev 然后,在/srv/salt下面创建top.sls文件(如果有的话,就不用创建了,直接编辑好了) vi

Python 应用领域及学习重点

笔者认为不管学习什么编程语言,首先要知道:学完之后在未来能做些什么? 本文将浅谈 Python 的应用领域及其在对应领域的学习重点.也仅是介绍了 Python 应用领域的"冰山一角",有兴趣的读者可以再自行搜索资料进行了解. Python 的应用领域是极其广泛的,几乎所有大中型互联网企业都在使用 Python 完成各种各样的任务.想详细了解,请参见下文,如有不妥之处,敬请留言指正,笔者必会虚心采纳. 一 Python 在世界上的知名应用 以下内容,将列举出 Python 在大家所熟知的

Linux程序设计学习笔记----网络通信编程API及其示例应用

转载请注明出处, http://blog.csdn.net/suool/article/details/38702855. BSD Socket 网络通信编程 BSD TCP 通信编程流程 图为面向连接的Socket通信的双方执行函数流程.使用TCP协议的通信双方实现数据通信的基本流程如下 建立连接的步骤 1.首先服务器端需要以下工作: (1)调用socket()函数,建立Socket对象,指定通信协议. (2)调用bind()函数,将创建的Socket对象与当前主机的某一个IP地址和TCP端口

salt jinja模板中变量使用pillar的几种方法

先转载下jinja模板中使用变量的方法,后文主要讲解pillar的变量使用方法 一.jinja模版的使用方法: 1.file状态使用template参数 - template:jinja 2.模版文件里面变量使用{{名称}},例如{{PORT}} 变量使用Grains:{{ grains['fqdn_ip4'] }} 变量使用执行模块:{{ salt['network.hw_addr']('eth0') }} 变量使用Pillar:{{ pillar['apache']['PORT'] }} 3

salt进程查看插件&salt批量创建用户

接受key 剔除主机 ? 启动 salt-minion-d ? ? 软件包的安装 ? salt '*' state.sls init.env-init test=true ? salt批量创建用户: http://www.saltstack.cn/kb/managing-user-with-salt/#managing-user-with-salt ? 显示salt进程: http://pengyao.org/howto-display-salt-process-name.html salt进程

pyqt QTableWidget例子学习(重点)

# -*- coding: utf-8 -*- # python:2.x __author__ = 'Administrator' from PyQt4.QtGui import * from PyQt4.Qt import * from PyQt4.QtCore import * lista = ['aa', 'ab', 'ac'] listb = ['ba', 'bb', 'bc'] listc = ['ca', 'cb', 'cc'] mystruct = {'A':lista, 'B':