saltstack日常使用

1.安装启动配置服务及简单使用
yum install python-jinja2 salt salt-master salt-minion -y
systemctl start salt-master && systemctl start salt-minion && systemctl enable salt-master && systemctl enable salt-minion
或者pip install salt(因为salt是python程序),会打开4505端口用于发送命令与4506端口用来接收结果

cat /etc/hosts
127.0.0.1 master minion-one

vim /etc/salt/minion
master:
- master # master为master的主机名,也可以是ip,可设置多个master
- new-master
id: minion-one # :后面必须要有个空格,一般设置成你的主机名

minion执行:systemctl restart salt-minion
master执行:salt-key -L # 看到minion-one存在于Unaccepted Keys里
salt-key -f minion-one # 查看minion-one密钥更具体的信息
minion执行:salt-call --local key.finger # 查看本地密钥,跟刚才在master查看是一致的
master执行:salt-key -a minion-one # 为minion-one接受密钥
salt-key -L # 看到minion-one存在于Accepted Keys里,表示签发成功了

在minion较多的情况下可以编辑master的/etc/salt/master文件修改#auto_accept: False为auto_accept: True就可以自动签发了

master执行:salt ‘*‘ test.ping
minion-one:
True
这是一条测试主机是否存活的命令,返回为True为存活,False不一定为不存活,如果拥有多个minion则会返回各minion的True(False)

salt ‘minion-one‘ sys.list_functions test # 查看其他内置方法
salt minion-one sys.doc test.sleep # 查看某方法的帮助文档

2.常用操作
salt ‘*‘ cmd.run ‘whoami‘ # 执行某条命令
salt ‘*‘ pkg.install ‘httpd‘ # 安装某个包
salt ‘*‘ pkg.version ‘httpd‘ # 查看包的版本
salt ‘*‘ pkg.remove ‘httpd‘ # 删除某个包
salt ‘*‘ service.status ‘httpd‘ # 查看某服务状态
salt ‘*‘ service.start ‘httpd‘ # 开
salt ‘*‘ service.stop ‘httpd‘ # 关
salt ‘*‘ file.stats /etc/yum.repos.d/base.repo # 查看某文件(目录)状态,返回所有者、组、ctime、atime、权限等
salt ‘*‘ file.chown /etc/yum.repos.d/base.repo apache root # 更改权限等,返回值是None(估计有BUG)
salt ‘*‘ user.add bfmq # 加用户
salt ‘*‘ user.delete bfmq # 删除用户
salt ‘*‘ user.info bfmq # 查看用户信息

3.自定义模块
mkdir -p /srv/salt/_modules/
salt ‘*‘ saltutil.sync_modules # 同步模块

4.state
执行模块是过程式的,而状态模块是描述性的
调用命令时仅仅实质性命令,而使用state模块会先检测当前状态与目标状态,状态不同才会进行操作
sls配置文件使用yaml语言,层级关系用缩进(两个空格来表示)
salt ‘*‘ sys.list_state_modules # 列出所有状态模块
salt ‘*‘ sys.list_state_functions pkg # 列出某状态模块内所有函数

5.常用state
下发文件(文件必须存在!)
/etc/foo.conf: # 目标路径
file.managed:
- source:
- salt://foo.conf # 源路径,默认情况下salt的base目录在/srv/salt/中
- user: foo # 目标所有者
- group: users # 目标所有组
- mode: 644 # 目标权限

创建目录
/srv/stuff/substuf: # 目标路径
file.directory:
- user: root # 目标所有者
- group: root # 目标所有组
- mode: 755 # 目标权限
- makedirs: True # 允许创建目录

创建软连接
/etc/grub.conf: # 目标路径
file.symlink:
- target: /boot/grub/grub.conf # 源路径

下发整个目录
/opt/code/flask: # 目标路径
file.recurse:
- source: salt://code/flask # 目标所有者
- include_empty: True # 包含空目录

安装软件
mypkgs:
pkg.installed:
- pkgs:
- foo
- bar: 1.2.3-4
- baz

安装指定版本
mypkgs:
pkg.installed:
- pkgs:
- foo
- bar: ‘>=1.2.3-4’
- baz

指定源安装
mypkgs:
pkg.installed:
- sources:
- foo: salt://rpms/foo.rpm
- bar: http://some.org/bar.rpm
- baz: ftp://some.rog/baz.rpm
- gux: /var/ftp/pub/gux.rpm

安装最新版本
mypkgs:
pkg.latest:
- pkgs:
- foo
- bar
- baz

启动redis
redis:
service.running:
- enable: True
- reload: True
- watch:
-pkg: redis

自动任务
date > /tmp/crontest:
cron.present:
- user: root
- minute: ‘*/5‘

创建用户
user.present:
- fullname: bfmq
- shell: /bin/bash
- home: /home/bfmq
- uid: 666
- gid: 666
- groups:
- root
- bfmq
- apache

内核参数
vm.swappiness:
sysctl.present:
- value: 20

安装python模块
django:
pip.installed:
- name: django >= 1.6, <= 1.7
-require:
-pkg.python-pip

5.watch和require
require前置
watch变更后执行

6.jinja2
模版语言{{}},{%%}

7.grain
minion上的静态信息,如操作系统、cpu、内存、内核数量,重启后会重新计算生成
salt ‘*‘ grains.ls # 查看grains项
salt ‘*‘ grains.item os # 查看某项的值
salt ‘*‘ grains.items # 查看全部项的值
salt ‘*‘ grains.setval my_grain bar # 设置kv
salt ‘*‘ grains.setval "{‘k1‘:‘v1‘, ‘k2‘:‘v2‘}" # 设置多个kv
salt -E ‘^m‘ grains.setval my_grain ‘[‘1‘,‘2‘,‘3‘]‘ # 设置单k多v
minion的/etc/salt/grains内可查询到刚才设置的值,因此直接在此文件内修改也可以达到添加自定义grain的目的
salt ‘*‘ grains.delval my_grain # 删除grains项,文件内直接删除也是可以的

mkdir -p /srv/salt/_grains
vim /srv/salt/_grains/my_grain_mod.py
salt ‘*‘ saltutil.sync_all # 同步全部
salt ‘*‘ sys.reload_modules # 重载模块
salt ‘*‘ grains.item now

8.pillar
储存在master上,每台minion只可以查询到自己的pillar
mkdir -p /srv/salt/_pillar
vim /srv/salt/_pillar/top.sls # 入口文件
base:
‘minion_one‘:
- minion_one_key

vim /srv/salt/_pillar/minion_one_key.sls # 各minion自己的pillar文件
private_key: minion_one_key

salt ‘*‘ saltutil.refresh_pillar # 刷新pillar数据

9.jinja2+grain+pillar
呵呵

时间: 2024-08-27 18:51:04

saltstack日常使用的相关文章

saltstack学习笔记7-States

States是saltstack中的配置语言,日常进行配置管理时需要编写大量的states文件.比如安装一个包,然后管理一个配置文件,最后保证某个服务正常运行. 编写一些states sls文件(描述状态配置的文件)去描述和实现我们的功能.编写states sls文件都是YAML语法.当然states sls文件也支持使用Python语言,其实编写states sls文件并不难,官方提供大量的示例,我们只需要记住编写格式,然后根据自己的实际需求去编写适合自己业务的states sls文件 查看所

saltstack学习笔记9-JOB

saltstack里面执行任何一个操作都会在master上产生一个jid号,就像上一节存储到redis上的数据显示的一样 ./redis-cli monitor OK 1461054358.412376 [0 127.0.0.1:58564] "SELECT" "0" 1461054358.412717 [0 127.0.0.1:58564] "SET" "minion1:20160419162558137768" "

自动化运维Saltstack系列(四)之States配置管理和jinja模板的使用

States配置管理 States是Saltstack中的配置语言,在日常进行配置管理时需要编写大量的States SLS文件,而编写这些SLS文件的一般步骤也就是我们平时手动配置一台服务器的步骤:首先安装源码包,然后管理一个配置文件,最后再保证这个服务的开机启动及正常运行.其中使用到的states模块功能需要我们一边学习一边实践加强理解. 接下来,我们通过一个简单的例子来理解Saltstack配置管理的基本原理--安装keepalived 1)修改master配置文件的file_roots根目

SaltStack(二) 安装使用

SaltStack 安装 1.安装环境 [[email protected] ~]# uname -a Linux salt-server 2.6.32-642.el6.x86_64 [[email protected]-server ~]# cat /etc/redhat-release CentOS release 6.8 (Final)    2.安装指定epel源 rpm -Uvh http://mirrors.yun-idc.com/epel/6Server/x86_64/epel-r

SaltStack部署及使用实践

川大集团 目录 版本控制信息... 1 目录i 1SaltStack简介... 1 2SaltStack安装... 1 2.1测试环境... 1 2.2安装SaltStack.. 1 2.2.1Salt之Master端安装... 1 2.2.2Salt之Minion端安装... 1 3SaltStack配置... 1 3.1理解YAML.. 1 3.2常用YAML关键字说明... 1 3.2.1unless. 1 3.2.2include. 1 3.2.3require. 1 3.2.4requ

saltstack学习笔记1-安装

应用系统为CentOS6.6,Python2.6 saltstack分为master和minion,master为控制端,minion为被控制端.我对saltstack的架构理解为通过master指令去批量控制minion,降低烦琐的配置与操作,服务器少手动去操作还比较简单,但服务器到达一定数量工作量就无法想象了,saltstack可以很好的帮助我们减轻日常的工作量. master:192.168.80.10 master minion1:192.168.80.20 minion1 minion

SaltStack安装,添加主机,基本命令

为什么选择SaltStack: 可管理主机种类多样化,如Windows,Linux 使用Python开发,对于了解Python用户进行二次开发简单 部署方便(相对于Ansible复杂,但客户端安装部署相对非常简单了) 扩展性强 并处理能力强 强大的模块功能,具有很多已有模块可以处理日常自动化运维与复杂自动化运维 官文文档,以及社区文档丰富 强大的API功能 前言: 自动化运维的前提首先是标准化,如果对服务器部署,系统应用部署,系统管理没有一定的标准来支撑那么不管使用任何的自动化运维工具都是无法实

系统运维日常工作有哪些,应该具备哪些技能

一.日常工作内容: 1.看监控.网站流量,CDN流量,看邮件有没有普通业务监控报警,看邮件中有没其他需要做的工作 2.处理报警,查看报警的原因,和开发一起解决,并且尽量找出避免再次发生的方法,例如添加一些 定时清理脚本 3.处理发布,基本都是自动化,但是总有发布不成功或者需要回滚的时候,这时候就需要手工介入, 找到原因,并跟开发一起讨论最后是否撤销还是重上 4.日常一起能够自动化的工作尽量找到自动化的方法 5.配合开发搭建测试环境,线上环境,上线代码,以及日常开个权限 6.定期机房巡检 7.灾备

Saltstack之Scheduler

一.引言: 在日常的运维工作中经常会遇到需要定时定点启动任务,首先会考虑到crontab,但是通过crontab的话需要每台机器下进行设置,这样统一管理的话比较复杂:通过查百度和google发现saltstack有scheduler的功能. 二.Pillar Scheduler: Salt本身提供多方面的Scheduler的配置,分别有3种配置方式: 1.从Master配置端: 2.Master Pillar端: 3.Minion配置端或者Minion.d下配置文件下配置 在这里介绍的是pill