saltstack组件

实验环境

saltstack(master主机): 
192.168.1.103(master.example.com) 
saltstack(minion主机): 
192.168.1.104(minion4.example.com)

注意:

1.两个节点的防火墙都需要关闭或者允许数据包的传入传出 
2.两个节点之间要相互作dns解析(/etc/hosts) 
3.两个节点的selinux关闭


1.管理对象Target

1.首先我们设置master和minion的配置文件内容,对于master,我设置auto_accept为True,即对客户端的连接自动进行签证,这样他们之间的连接就自动进行了加密传输。关于服务端的配置信息如下所示(文件为/etc/salt/master): 
saltstack组件
interface为publish/ret端口的监听地址(服务端地址)。

2.在客户端只需要指定master(服务端)的地址以及客户端的名称即可: 
saltstack组件

*注意: 
saltstack的配置信息都符合一定的格式规范,每一个配置选项后边的内容必须要用空格隔开。如果没有用空格隔开,则会报格式错误。 
saltstack组件
修改完客户端的配置,将master和后边的内容连接在了一起,重新启动客户端的服务/etc/init.d/salt-minion,则会产生报错: 
saltstack组件

3.在master端检测已经签证的minion列表,可以看到minion-192.168.1.104主机已经获得了签证: 
saltstack组件

4.下面我们可以测试minion与master的连通性: 
saltstack组件

上述操作做了一个简单的测试,下面我们介绍以下saltstack的master可能会用到的常见命令和参数,毕竟我们需要管理众多的minion节点:

master命令:

saltstack组件

minion命令: 
saltstack组件


2.管理对象属性

Grains是saltstack组件中非常重要的组件之一,它用来记录minion的系统信息(操作系统、域名、IP 地址、内核信息、操作系统类型、内存信息以及其他更多的系统信息)。

Grain收集的信息是静态的,在minion第一次启动时采集数据(除非下次重起,否则数据不会变化)。

首先我们插好Grains相关命令用法: 
saltstack组件

关于这些命令的具体用法我们可以使用如下命令查看文档: 
saltstack组件

除了上述系统自带的一些Grains方法之外,我们还可以通过以下三种方式来自定义Grains:

(1)通过Minion配置文件定义 
(2)通过Grains相关模块定义 
(3)通过Python脚本定义


(1)通过Minion配置文件定义

关于Grains的配置内容可以出现在多个文件中,他们之间需要排列出相应的优先级,下面我们给出其关系(越向下的优先级越高):

  1. Core grains.
  2. Custom grains in /etc/salt/grains.
  3. Custom grains in /etc/salt/minion.
  4. Custom grain modules in _grains directory, synced to minions.

下面我们给出示例,关于grains的内容编写在/etc/salt/minion: 
[[email protected] ~]# vim /etc/salt/minion 
saltstack组件

我们给出了roles、deployment、cabinet等键值对。这个内容的编写是在客户端进行的,当修改完成后我们重启客户端: 
saltstack组件

然后在服务端可以查看客户端的grains信息,以roles为例: 
saltstack组件


(2)通过Grains相关模块定义 
在上述sys.list_functions模块中我们查询了关于grains的操作,其中的grains.append方法可以创建出新的grains信息: 
saltstack组件

还可以使用grains.setvals同时设置多个grains信息: 
saltstack组件

(3)关于使用python脚本定义grains信息的方法在后续的章节中将会进行介绍。


3.数据管理中心

除了Grains可以采集minion的信息,Pillar也是saltstack组件中的重要部分,它负责数据的管理。Pillar在saltstack的主要作用就是存储和定义配置管理中需要的数据(比如版本号、用户名密码等信息),它的编写格式同样符合YAML(这个我们后续进行介绍)。

Pillar的默认存储路径为/srv/pillar,这个是它的根目录: 
saltstack组件

(1)下面我们以一个简单的示例说明pillar是如何设置信息的,首先需要创建目录/srv/pillar
saltstack组件

(2)然后创建top.sls主配置文件:

[[email protected] pillar]# vim /srv/pillar/top.sls 
saltstack组件

(3)’*’代表所有的minion节点,然后设置test_data的内容: 
[[email protected] pillar]# vim /srv/pillar/test_data.sls 
saltstack组件

我们还可以查看更多关于pillar模块的方法: 
saltstack组件

我们还可以将pillar的数据存储在数据库中,在后续的章节中将会进行介绍。


4.针对管理对象操作

Module是我们使用最多的一个组件,它包括了我们对于对象管理的各种操作,例如我们在一开始测试master与minion连通性的时候使用了Module中的test module以及它所包含的方法ping。

(1)查看指定minion的module列表:

查看minion所支持的module列表可以使用如下方法: 
saltstack组件

(2)查看指定module的所有function: 
saltstack组件

例如测试test.echo: 
saltstack组件


5.状态描述文件

在saltstack中,states是我们主要的配置语言,对于不同的业务需求需要编写大量的states文件,其中使用的语法依然是YAML语法(这个配置方式和xml的作用类似,不过配置方法不同)。

(1)查看所有的states列表: 
saltstack组件

(2)查看指定states的所有function: 
saltstack组件

(3)如何去编写自己的states: 
上述介绍的都是查询系统已有的states,接下来的例子介绍如何编写一个简单的states。

任务:在指定的minion节点上的/tmp目录中创建hello.conf文件。

(1)在/srv/salt/目录中创建hello.sls文件: 
saltstack组件

(2)这里边的salt://hello.conf路径是指/srv/salt/hello.conf文件。即我们要明确salt://其实代表的是/srv/salt目录

(3)给定/srv/salt/hello.conf文件的内容,并且进行同步设置。 
saltstack组件

同步hello.conf到minion-192.168.1.104节点: 
saltstack组件


小结:

上述的示例中我们介绍了salt的多种组件(虽然不是非常全面),并且给出了简单的示例,在后续的章节中我们将会更加深入的配置salt,使其更加的实用。


转载  http://blog.csdn.net/linux_player_c/article/details/50654245