saltstack学习笔记7-States

States是saltstack中的配置语言,日常进行配置管理时需要编写大量的states文件。比如安装一个包,然后管理一个配置文件,最后保证某个服务正常运行。

编写一些states sls文件(描述状态配置的文件)去描述和实现我们的功能。编写states sls文件都是YAML语法。当然states sls文件也支持使用Python语言,其实编写states sls文件并不难,官方提供大量的示例,我们只需要记住编写格式,然后根据自己的实际需求去编写适合自己业务的states sls文件

查看所有states列表

salt ‘minion1‘ sys.list_state_modules

minion1:

- acl

- alias

- alternatives

- apache

- archive

- artifactory

- at

- blockdev

- buildout

- cloud

- cmd

- composer

- cron

- disk

- environ

- event

- file

- gem

- gnomedesktop

- grafana

- grains

- group

- hipchat

- host

- http

- incron

- ini

- iptables

- jboss7

- kmod

- libvirt

- locale

- lvm

- lvs_server

- lvs_service

- lxc

- modjk

- modjk_worker

- module

- mongodb_database

- mount

- network

- openstack_config

- pagerduty

- pip

- pkg

- pkgng

- pkgrepo

- powerpath

- pyenv

- quota

- raid

- rbenv

- redis

- rvm

- salt

- schedule

- serverdensity_device

- service

- slack

- smtp

- ssh_auth

- ssh_known_hosts

- stateconf

- status

- supervisord

- sysctl

- syslog_ng

- test

- timezone

- tls

- tomcat

- user

- vbox_guest

- virtualenv

- webutil

- winrepo

查看指定states的所有function

查看file.states的所有function

salt ‘minion1‘ sys.list_state_functions file

minion1:

- file.absent

- file.accumulated

- file.append

- file.blockreplace

- file.comment

- file.copy

- file.directory

- file.exists

- file.managed

- file.missing

- file.mknod

- file.mod_run_check_cmd

- file.patch

- file.prepend

- file.recurse

- file.rename

- file.replace

- file.serialize

- file.symlink

- file.touch

- file.uncomment

查看指定states指定function用法

要查看file.managed states的详细用法与例子

salt ‘minion1‘ sys.state_doc file.managed

----------------------------------------------------------------------------------

让我们用一个简单的实例去了解states,通过例子可以看到states的一些流程与使用

编写top.sls文件(非必须)

编写states.sls文件

在大规模的配置管理工作中,需要编写大量的states.sls文件。top.sls是states系统的入口文件,它在大规模配置管理工作中负责制定哪些设备调用哪些states.sls文件。

我们维护一套LNMP架构,我们编写了很多states.sls文件,这是需要一键部署整个LNMP环境,这里就需要states.sls的top.sls入口文件去指定web机器和DB机器分别取引用哪些states.sls文件。

我们先在states的工作目录(base环境默认在/srv/salt)下新建一个one.sls states文件

vim /srv/salt/one.sls

/tmp/foo.conf:    #id

file.managed:    #使用file states的managed function

- source: salt://foo.conf    #文件来源(salt://代表states的工作目录)

- user: root    #文件属主

- group: root    #文件属组

- mode: 644    #文件权限

- backup: minion    #备份原文件

这就是一个简单的文件管理states.sls文件,我们可以通过上面介绍的方法查看file.managed更多的参数,这个states.sls文件的功能就是实现对Minion的/tmp/foo.conf文件进行统一管理,下面我们可以在states的工作目录下新建一个foo.conf文件,然后对Minion进行配置部署:

echo "SaltStack Books" > /src/salt/foo.conf

salt ‘*‘ state.sls one

minion1:

----------

ID: /tmp/foo.conf

Function: file.managed

Result: True

Comment: File /tmp/foo.conf is in the correct state

Started: 14:43:01.568340

Duration: 12.401 ms

Changes:

Summary

------------

Succeeded: 1

Failed:    0

------------

Total states run:     1

minion2:

----------

ID: /tmp/foo.conf

Function: file.managed

Result: True

Comment: File /tmp/foo.conf updated

Started: 00:43:33.336318

Duration: 109.696 ms

Changes:

----------

diff:

New file

mode:

0644

Summary

------------

Succeeded: 1 (changed=1)

Failed:    0

------------

Total states run:     1

到这里就完成了对minion机器的简单文件管理。下面我们来介绍使用top.sls入口文件同时对多台机器进行一个简单的配置管理

------------------------------------------------------------------------------------

首先在states的工作目录下新建top.sls文件

vim /srv/salt/top.sls

base:

‘*‘:

- one

‘minion1‘:

- two

‘minion2‘:

- three

然后建立三个states文件one.sls,two.sls,three.sls,最后我们使用state.highstate命令同时同步

salt ‘*‘ state.highstate

时间: 2024-10-18 20:07:49

saltstack学习笔记7-States的相关文章

SaltStack 学习笔记 - 第十二篇: SaltStack Web 界面

SaltStack 有自身的用python开发的web界面halite,好处是基于python,可以跟salt的api无缝配合,确定就比较明显,需要个性化对web界面进行定制的会比较麻烦,如果喜欢体验该界面的可以参考下面的文章  http://rfyiamcool.blog.51cto.com/1030776/1275443/ 我是运用另一个python+php来进行web开发,具体需要的工具有在我的另一篇文章里面介绍过,这里再重新进行整个开发介绍 首先介绍php 跟python通信的工具 pp

Saltstack学习笔记(2)

1.5 Salt  命令介绍(常用的这些一定要多练习) 命令           功能描述 salt           Salt 主命令,比如执行命令模块 satl-cp        复制文件到指定的系统上去 salt-key       和 Minion 之间进行身份验证 salt-master    Master 主守护进程,用于控制 Minion salt-run       前端命令执行 salt-syndic    Salt syndic 守护进程,用于多级 salt-master

Saltstack 学习笔记(一)

Salt简介: Salt(saltstack)是一个基础设施的自动化和配置管理工具,根据官方文档,salt是一个配置管理系统,能够维护远程节点到指定的状态(例如确保指定的包是安装的,并且指定的服务是正在运行的),并且能够分布式的在远程节点上执行命令和查询数据. 安装 本文是ubuntu 15.10作为测试,并且master和minion为同一台机器 sudo apt-get install python-software-properties sudo add-apt-repository pp

saltstack学习笔记2-认证

master和minion通信之前我们需要对每个minion进行认证,认证很简单,上节启动后,通过命令查看下认证列表 master端: salt-key -L    #查看认证列表 这时我们会发现未认证的两个主机,他们就是我们的minion1和2 这时我们可以通过两个命令来添加他们,单个添加和批量添加 salt-key -a 'minion1'    #单个添加 salt-key -A    #批量添加 当然能添加就能删除,删除命令也是两个,单个删除和批量删除 salt-key -d 'mini

saltstack学习笔记11-Renderer

前面提到过使用Python语言编写state.sls文件 在saltstack系统里面支持很多方式去扩展它,renderer就是其中一种 默认saltstack的renderers是YAML+Jinja,可以通过产科master文件得知当前的renderer 目前saltstack支持很多种renderer,因为YAML Jinja Python这三种renderer应用范围比较广 前面我们编写state的时候都是使用YAML Jinja这两种,这节我们开始讲解如何使用Python语言去定义st

saltstack学习笔记10-Event和Reactor系统

Event是saltstack里面的对每个事件的一个记录,它相比job更加底层,event能记录更加详细的saltstack事件,比如minion服务启动后请求master签发证书或者证书校验的过程,都能通过event事件来查看整个过程 event也为扩展saltstack提供了更加友好的接口 官方列出一些event事件,包括认证,minion连接master,key认证,job等 查看event事件 可以通过以下命令查看event事件,然后再打开一个终端执行任务 salt-run state.

saltstack学习笔记一

1,安装saltstack 服务端:salt-master 客户端:salt-minion yum install -y salt-master yum install -y salt-minion 2,开放服务端iptables iptables -A INPUT -m state --state new -m tcp -p tcp --dport 4505 -j ACCEPT iptables -A INPUT -m state --state new -m tcp -p tcp --dpo

saltstack学习笔记8-Return

Return组件可以理解为saltstack系统对执行minion返回后的数据进行存储或者返回给其他程序 它支持多种存储方式,比如mysql.mongoDB.redis.memcached等,通过return我们可以对saltstack的每次操作进行记录,对以后日志审计提供了数据来源. 官方有30种return数据存储与接口,我们可以很方便的配置与使用它.当然也支持自己定义的return. 查看所有return列表 salt 'minion1' sys.list_returners minion

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" "