搜索
您的当前位置:首页正文

一、SaltStack安装与基础配置

来源:二三娱乐
  • salt服务端叫master,客户端叫minion
  • 实验环境均在centos

一、saltstack master的安装及其配置

1. 配置yum源

使用yum之前要自己配置yum源,按照用官方的yum配置文件配置源时网络有问题,因此自己安装epel源:

#cd /usr/local/src/
#wget 
#rpm -ivh epel-release-6-8.noarch.rpm

2.安装

#yum install salt-master -y

3.配置

saltstack的配置文件默认在/etc/salt下。配置文件文件命名分别使用各自的组件名称,如master的配置文件名为master

3.1 配置master环境

  • 修改master配置文件:/etc/salt/master
interface: 0.0.0.0
publish_port: 4505
worker_threads: 5
ret_port: 4506
  • 开放防火墙
iptables -I INPUT -p tcp --dport 4505 -j ACCEPT 
iptables -I INPUT -p tcp --dport 4506 -j ACCEPT 
iptables-save > /etc/sysconfig/iptables
  • 开机自启动与启动服务
chkconfig salt-master on
service salt-master start
  • master安装脚本
#!/bin/bash

cd /usr/local/src/
wget 
rpm -ivh epel-release-6-8.noarch.rpm

yum install python-devel
yum install salt-master -y

sed -i -r 's/^#interface: 0.0.0.0/interface: 0.0.0.0/' master
sed -i -r 's/^#publish_port: 4505/publish_port: 4505/' master
sed -i -r 's/^#worker_threads: 5/worker_threads: 5/' master
sed -i -r 's/^#ret_port: 4506/ret_port: 4506/' master


iptables -I INPUT -p tcp --dport 4505 -j ACCEPT 
iptables -I INPUT -p tcp --dport 4506 -j ACCEPT 
iptables-save > /etc/sysconfig/iptables

chkconfig salt-master on
service salt-master start

二、saltstack minion的安装及其配置

1. 配置yum源

#cd /usr/local/src/
#wget 
#rpm -ivh epel-release-6-8.noarch.rpm

2. 安装

#yum install salt-minion
#chkconfig salt-minion on
#service salt-minion start

3. minion配置

  • 修改minon配置文件:/etc/salt/minion
master: 192.168.1.106                    # master IP
id:  192.168.1.100              #覆盖默认的id;每个minion的id都是唯一的。minion启动后会用id值去master进行验证
  • 启动minion
chkconfig salt-minion on
service salt-minion start
  • minion安装脚本
#!/bin/bash

master="10.10.88.20"
id=$(ip a | grep 'eth' | grep 'inet' | awk '{print $2}' | cut -d '/' -f 1)

cd /usr/local/src/
wget 
rpm -ivh epel-release-6-8.noarch.rpm

yum install python-devel -y
yum install salt-minion -y
cd /etc/salt
sed -i -r "s/^#master: salt/master: ${master}/" minion
sed -i -r "s/^#id:/id: ${id}/" minion

chkconfig salt-minion on
service salt-minion start

三、使用salt-key管理master上的密钥

master和minion安装配置完成后,如果master要管理minion,就要接收minion的key。任意minion的在master没有接受前,minion的公钥存放在/etc/salt/pki/master/minions_pre目录下,公钥文件以id命名。

1. 查看minion列表

# salt-key -L           
Accepted Keys:                  
Denied Keys:
Unaccepted Keys:                
192.168.1.100           
Rejected Keys:
  • Accepted Key 表示 已经接受的key,用minion id表示.
  • Unaccepted Keys 表示 待接收的key

查看minion列表的过程中有一个问题,就是查询不到任何minion,检查配置文件没有报错。然后进入 minion debug,执行如下命令:

salt-minion -l debug 

运行后发现一个报错:

[ERROR ] The Salt Master has cached the public key for this node, this salt minion will wait for 10 seconds before attempting to re-authenticate

也就是说master其实已经接收到了minion的公钥。然后我在master端:

/etc/salt/pki/master/minions_pre

发现了一个minion文件(其实这个是minion的id,因为我的主机名就是minion,minion id默认以主机名命名的),查看内容,实际上就是minion的公钥,因此删除这个文件,重启master和minion

rm -rf minion

2. 接收minion

  • 接收所有的minion
salt-key -A 
  • 接收单个minion
>salt-key -a <keyname>  

3. 接收前后的salt-key的变化

#salt-key -L
Accepted Keys:                  
192.168.1.100
Denied Keys:
Unaccepted Keys:
Rejected Keys:
  • 打印master key fingerprint
salt-key -F master

如果某个minion的id值改变后,我们再重新接收新id后,如果对所有minion执行命令,会包括之前的就minion id,这种情况我们可以将之前的minion id删除,/etc/salt/pki/master/minions 存放了所有的id。如下:192.168.159.136和minion实际上指向同一台主机,192.168.159.136是新的id

[root@master minions]# ls
192.168.159.136  minion
[root@master minions]# rm -rf minion
[root@master minions]# pwd
/etc/salt/pki/master/minions

四、开始使用salt

1.测试

[root@master ~]# salt '*' test.ping             # *表示指向所有的minions目标
192.168.1.100:
    True

[root@master ~]# salt 192.168.1.100 test.ping           #表示指定特定的minions目标
192.168.1.100:
    True

test.ping只是一个函数。salt 命令包含命令选项,目标说明,要执行的函数,和函数的参数:salt [option] target function [para]

2. salt 函数:

  • 查看所有的模块、函数以及相关用法

salt '*' sys.doc

  • 查看特定模块的doc

salt '' sys.doc <module_name>
如: salt '
' sys.doc state

  • 为所有的模块列出function

salt '*' sys.list_functions

  • 为特定的模块列出function

salt '' sys.list_functions <modules>
如: salt '
' sys.list_functions service

  • 显示当前所有可用的minions

salt '*' test.ping

  • 运行任意的shell命令

salt '*' cmd.run 'command'

  • salt远程安装任意工具
      pkg module会自动将本地系统包管理器映射到相同的salt函数。这意味着 pkg.install 在基于Red Hat系统上将使用 yum 而在Debian系统上则使用 apt 来安装包,等等。

salt '*' pkg.install vim

  • 列出minion上的所有网络接口的详细详细(IP,GW等)

salt '*' network.interfaces

Top