saltstack运行模式:

  local

  master/minion

  salt ssh

saltstack三大功能

  远程执行命令

  配置管理(状态管理)

  云管理

安装:

  master  salt-master

agent    salt-minion

salt-key命令

  accepted keys:  接受的key

denied keys:   拒绝的key

unaccepted keys:  没有接受的key

rejected keys:  拒绝的key

agent的minion_id保存路径:/etc/salt/minion_id

全部接受使用:salt-key -A -y

查看结果:salt-key -L

salt执行单条命令

salt 被执行主机   模块  命令

salt '*' test.ping  对所有主机执行ping命令;

    cmd.run 'hostname' 执行命令

state.highstate  master状态同步

state.highstate test=True  同步之前测试语法

-E  对被执行主机可以用正则;

-L  指定执行列表

    salt -L 'minion1,minion2' com.run 'hostname'

-S  指定子网段

  -S '192.168.1.0/24'

配置管理

1、定义环境

/etc/salt/master

p.p1 { margin: 0; font: 14px Menlo; color: rgba(0, 0, 163, 1) }
p.p2 { margin: 0; font: 14px Menlo; color: rgba(64, 11, 217, 1) }
span.s1 { font-variant-ligatures: no-common-ligatures; color: rgba(64, 11, 217, 1) }
span.s2 { font-variant-ligatures: no-common-ligatures; background-color: rgba(224, 228, 9, 1) }
span.s3 { font-variant-ligatures: no-common-ligatures }

file_roots:

base:  基础环境  2个空格

- /srv/salt/  4个空格

dev:   开发环境

- /srv/salt/dev/services

- /srv/salt/dev/states

prod:  生产环境

- /srv/salt/prod/services

- /srv/salt/prod/states

2、定义入口

所有salt的配置文件都是以sls结尾;

路径:/srv/salt/

vim top.sls

p.p1 { margin: 0; font: 14px Menlo; color: rgba(0, 0, 0, 1) }
span.s1 { font-variant-ligatures: no-common-ligatures }

定义top示例:

base:

'*':

- apache

应用内容示例:

apache-pkg:

pkg.installed:

- names:

- httpd

- mod_ssl

apache-service:

service.running:

- name: httpd

- enable: True

数据系统Grains

  grains里面收集了minion启动时候的所有系统信息,存储在minion端;

salt 'host' grains.ls  所有的grains信息

grains.item os os的值

osrelease  系统版本

示例:

salt -G 'osrelease:7.3.1611' test.ping

自定义Grains

方法

p.p1 { margin: 0; font: 14px Menlo; color: rgba(0, 0, 0, 1) }
span.s1 { font-variant-ligatures: no-common-ligatures }

/etc/salt/minion

p.p1 { margin: 0; font: 14px Menlo; color: rgba(0, 0, 163, 1) }
p.p2 { margin: 0; font: 14px Menlo; color: rgba(64, 11, 217, 1) }
span.s1 { font-variant-ligatures: no-common-ligatures; color: rgba(64, 11, 217, 1) }
span.s2 { font-variant-ligatures: no-common-ligatures; background-color: rgba(224, 228, 9, 1) }
span.s3 { font-variant-ligatures: no-common-ligatures }

#grains:

#  roles:

#    - webserver

#    - memcache

#  deployment: datacenter4

#  cabinet: 13

#  cab_u: 14-15

数据系统Pillar

master端设置,提供给minion端;

pillar在saltstack中主要作用是存储和定义配置管理中需要的一些数据,比如软件版本好,用户名密码信息,它的存储格式跟Grains类似,都是yaml格式;

/etc/salt/master

p.p1 { margin: 0; font: 14px Menlo; color: rgba(64, 11, 217, 1) }
p.p2 { margin: 0; font: 14px Menlo; color: rgba(0, 0, 163, 1) }
span.s1 { font-variant-ligatures: no-common-ligatures }
span.s2 { font-variant-ligatures: no-common-ligatures; color: rgba(0, 0, 163, 1); background-color: rgba(224, 228, 9, 1) }
span.s3 { font-variant-ligatures: no-common-ligatures; color: rgba(64, 11, 217, 1) }
span.s4 { font-variant-ligatures: no-common-ligatures; background-color: rgba(224, 228, 9, 1) }

#pillar_roots:

#  base:

#    - /srv/pillar

#

#ext_pillar:

#  - hiera: /etc/hiera.yaml

#  - cmd_yaml: cat /etc/salt/yaml

定义pillar的入口

vim /srv/pillar/top.sls

p.p1 { margin: 0; font: 14px Menlo; color: rgba(46, 174, 187, 1) }
p.p2 { margin: 0; font: 14px Menlo; color: rgba(180, 36, 25, 1) }
p.p3 { margin: 0; font: 14px Menlo; color: rgba(0, 0, 0, 1) }
span.s1 { font-variant-ligatures: no-common-ligatures }
span.s2 { font-variant-ligatures: no-common-ligatures; color: rgba(200, 20, 201, 1) }
span.s3 { font-variant-ligatures: no-common-ligatures; color: rgba(0, 0, 0, 1) }
span.s4 { font-variant-ligatures: no-common-ligatures; color: rgba(193, 101, 28, 1) }

base:

"*":

- packages

- services

- command

- isp

刷新pillar

salt '*' saltutil.refresh_pillar

master端验证

salt -I 'roles:ftpserver' cmd.run 'uptime'

远程执行Targeting

与minion_id相关

Globbing(通配符)

*  ? []都支持;

Regex(正则)

List(列表)

与Minion_id无关:

Subnet/IP (子网)

Grains

Pillar

Compound matchers(复合匹配)

-C 指定

salt -C 'I@roles:deserver and I@deployment:datacenter4' test.ping

Node Groups(节点组)

-N 指定

当在sls文件中使用正则时:

base:

'slatstack0[^23].test.com':

- match: pcre  #必须引入salt的pcre库;

- apache

当在ssl文件中使用Grains时:

base:

'os:CentOS':

- match: grain #引入grain库

- apache

  

salt  modules

https://docs.saltstack.com/en/latest/

salt '*' sys.list_modules  列出所有模块

salt '*' sys.list_functions grains  列出grains模块的用法

sys.doc grains 查看grains帮助

sys.doc grains.item  查看item帮助

sys.doc pkg

service.available  服务是否可用

.missing  包是否缺失

state.show_top  应用了哪些模块

state.show_highstate 更详细的状态

state.sls httpd  只同步某一个任务

salt 'test04' state.sls apache env=base 将base环境中的apache环境应用给test04主机;

salt远程执行returners

  return组件可以理解为saltstack系统对执行minion返回后的数据存储和返回给其他程序;支持多种存储方式,例如mysql;mongodb;memcache等;通过return可以对saltstack每次的操作进行记录,对以后的日志审计提供数据;

mysql_secure_installation 设置mysql密码;

配置管理states

  states是saltstack系统的配置语言,在日常韵味中需要编写大量的states文件,例如创建用户,安装软件包,管理相应配置文件;则需要编写一些states sls文件,即状态配置文件去描述和实现相应的功能;states sls 主要使用yaml语言;也可以支持使用python语言;

配置管理状态关系

unless  主要用于cmd状态模块,仅当unless选项指向的命令;

返回false时才执行name指向的命令,test -d /usr/local/nginx

require 我依赖某个状态,我依赖谁

  示例:

lamp-pkg-install:

pkg.installed:

- names:

- httpd

- php

-php-mysql

httpd-files:

file.managed:

- name: /etc/httpd/conf/httpd.conf

- source: salt://files/httpd.conf

- require:

- pkg: lamp-pkg-install

httpd-service:

server.running:

- name : httpd

- enable: True

- reload: True  (如果不写则是restart)

- require:

- file: httpd-files

- watch:

- file: httpd-files  只要配置文件发生改变即reload服务

require_in 我被某个状态依赖 谁依赖我

watch   我关注某个状态,当状态发生改变,则restart

watch_in 我被某个状态关注;

配置管理jinja模版

{{ 变量 }}与变量列表defaults必须一一对应;

vim httpd.conf

Listen {{ IP }}:{{ PORT }}

httpd-files:

file.managed:

- name: /etc/httpd/conf/httpd.conf

- source: salt://files/httpd.conf

- template: jinja  #必须要告诉它是jinja模版

- require:

- pkg: lamp-pkg-install

- defaults:

IP: {{ grains['fqdn_ip4'][0] }}

PORT: 7777

salt stack学习笔记的更多相关文章

  1. Docker Stack 学习笔记

    该文为<深入浅出Docker>的学习笔记,感谢查看,如有错误,欢迎指正 一.简介 Docker Stack 是为了解决大规模场景下的多服务部署和管理,提供了期望状态,滚动升级,简单易用,扩 ...

  2. Core Data Stack学习笔记

    Entity Entities 实体->数据表一个实体可以表示一个数据模型 1> 通过图形化界面可以建立一个模型关系图,可以指定一对多,多对一,多对多的数据关系 -在数据库开发中,少用多对 ...

  3. Salt Document学习笔记2

    配置文件需修改的内容及注意点: Edit the master config file: 1. Uncomment and change the user: root value to your ow ...

  4. Salt Document学习笔记1

    原文来自Salt Documentation,作者是 Thomas Hatch),我摘抄部分可能今后会用到或适合入门到精通的一些原文段落,简单翻译后发上来,便于查阅和研究 一.原理方面:The net ...

  5. Flutter学习笔记(23)--多个子元素的布局Widget(Rwo、Column、Stack、IndexedStack、Table、Wrap)

    如需转载,请注明出处:Flutter学习笔记(23)--多个子元素的布局Widget(Rwo.Column.Stack.IndexedStack.Table.Wrap) 上一篇梳理了拥有单个子元素布局 ...

  6. stl源码剖析 详细学习笔记stack queue

    // //  stack.cpp //  笔记 // //  Created by fam on 15/3/15. // // //---------------------------15/03/1 ...

  7. 七天学会 SALT STACK 自动化运维 (1)

    七天学会 SALT STACK 自动化运维 (1) 简单理解 SALTSTACK 安装与配置 基本的使用方法 结束语 引用资源 简单理解 SALT STACK 笔者是初次接触 自动化运维 这一技术领域 ...

  8. 基于.net的分布式系统限流组件 C# DataGridView绑定List对象时,利用BindingList来实现增删查改 .net中ThreadPool与Task的认识总结 C# 排序技术研究与对比 基于.net的通用内存缓存模型组件 Scala学习笔记:重要语法特性

    基于.net的分布式系统限流组件   在互联网应用中,流量洪峰是常有的事情.在应对流量洪峰时,通用的处理模式一般有排队.限流,这样可以非常直接有效的保护系统,防止系统被打爆.另外,通过限流技术手段,可 ...

  9. ucos实时操作系统学习笔记——操作系统在STM32的移植

    使用ucos实时操作系统是在上学的时候,导师科研项目中.那时候就是网上找到操作系统移植教程以及应用教程依葫芦画瓢,功能实现也就罢了,没有很深入的去研究过这个东西.后来工作了,闲来无聊就研究了一下这个只 ...

随机推荐

  1. CRM项目的整理-----第二篇

    1.项目的登录 1.1 app创建二级路由 2.登录页面   http://www.jq22.com/

  2. 印尼医疗龙头企业Halodoc的数据平台转型之数据平台V2.0

    1. 摘要 数据平台已经彻底改变了公司存储.分析和使用数据的方式--但为了更有效地使用它们,它们需要可靠.高性能和透明.数据在制定业务决策和评估产品或 Halodoc 功能的性能方面发挥着重要作用.作 ...

  3. pandas:多层索引

    多层索引是指在行或者列轴上有两个及以上级别的索引,一般表示一个数据的几个分项. 1.创建多层索引 1.1通过分组产生多层索引 1.2由序列创建 1.3由元组创建 1.4可迭代对象的笛卡尔积 1.5将D ...

  4. point pair feature在2D图像匹配中的应用

    point pair feature在2D图像匹配中的应用 point pair feature(ppf) @article{BertramDrost2010ModelGM, title={Model ...

  5. CabloyJS也有工作流引擎了,是你想要的吗?

    前言 众所周知,NodeJS作为后端开发语言和运行环境,样样都好,就差一个NodeJS工作流引擎.CabloyJS 4.0重点开发了NodeJS工作流引擎,并作为内置的基础核心模块,近一步拓展了Nod ...

  6. 2021.02.27【NOIP提高B组】模拟 总结

    T1 欧拉筛质数时若 \(i\) 是质数且没有被用过就顺便用于计算结果,复杂度 \(O(n)\) #include<bits/stdc++.h> using namespace std; ...

  7. 第1章 C++绪论

    写于2022年5月13日: 开通博客用于学习记录分享及交流. C++复习笔记内容参考教材[双语版C++程序设计(第2版)][(爱尔兰)Paul Kelly(P. 凯利),苏小红]. 本书的网站:htt ...

  8. Java JavaMail通过SMPT发送邮件

    概述 本讲讲述如何使用JavaMail工具包,通过SMPT协议,在Java代码中发送邮件. 一.JavaMail简介 JavaMail API提供了一个独立于平台且与协议无关的框架来构建邮件和消息传递 ...

  9. 如何实现Springboot+camunda+mysql的集成

    本文介绍基于mysql数据库,如何实现camunda与springboot的集成,如何实现基于springboot运行camunda开源流程引擎. 一.创建springboot工程 使用IDEA工具, ...

  10. .NET 6.0.6 和 .NET Core 3.1.26、Visual Studio 2022 17.2 和 17.3 Preview 2 和 .NET 7.0 Preview 5 同时发布

    Microsoft 昨天发布了适用于 .NET 6.0.6 和 .NET Core 3.1.26.NuGet.Visual Studio 2019 和 Visual Studio 2022 17.2 ...