在 Ubuntu x64 中安装和配置 SaltStack 服务器
SaltStack – 是一个基于Python的开源管理软件。这比如puppet和ansible。 Saltstack作为傀儡,需要代理软件。客户端节点命名为 minions。
在SaltStack应用程序中,有主服务器和minions(客户端节点)。
我们有5台服务器如下:
saltmaster.unixmen.com – Ubuntu 14.04 x64 主服务器
node1salt.unixmen.com – Ubuntu 14.04 x64 node1
node2salt.unixmen.com – CentOS6.7 x64 node2
node3salt.unixmen.com – CentOS6.7 x64 node3
node4salt.unixmen.com – FreeBSD 10.1 x64 node4
网络拓扑将如下所示:
SaltMaster服务器的名称为saltmaster.unixmen.com,首先我们将安装并配置该服务器。
更新 saltmaster 服务器中的存储库和包:
root@saltmaster:~# apt-get update
root@saltmaster:~# apt-get dist-upgrade
从 sudo 用户名安装所有软件包::
jamal@saltmaster:~$sudo add-apt-repository ppa:saltstack/salt
索引新包并安装 saltmaster 所需的包(用于主服务器的 salt-master 包、用于资源控制的 salt-ssh 和 salt-cloud 包对于文档,我们将安装 salt-doc 包):
jamal@saltmaster:~$sudo apt-get update
jamal@saltmaster:~$sudo apt-get install salt-master salt-ssh salt-cloud salt-doc
首先我们创建配置控制文件夹结构。默认情况下,所有内容都放置在 /srv 文件夹中。为了开始工作,我们需要 /srv/salt 和 /srv/pillar 文件夹。使用以下命令创建此文件夹:
jamal@saltmaster:~$sudo mkdir -p /srv/{salt,pillar}
配置主文件。我们必须定义 fire_roots 字典。这是设置salt master配置控制指令路径。 base 定义默认环境。为此,我们将使用之前创建的文件夹。我们使用 /srv/salt 文件夹和 /srv/formulas 文件夹中的管理员指令来从外部源下载配置。
jamal@saltmaster:~$sudo nano /etc/salt/master
file_roots:
基础:
– /srv/salt/
– /srv/公式
注意:使用正确的格式编写很重要,因为Salt接受YAML样式的配置。为此,如果行之前不是空格,守护进程将不会启动。
然后我们定义 Salt Pillar 配置的根文件夹。这和之前的配置类似。在 /etc/salt/master 文件中,我们定义以下几行:
jamal@saltmaster:~$sudo vi /etc/salt/master
pillar_roots:
基础:
– /srv/pillar
首先,我们从 saltmaster.unixmen.com 服务器复制公钥。我们在minion配置中需要这个密钥(选定的粗体指纹将在所有minion中使用):
jamal@saltmaster:~$sudo salt-key -F master
[sudo] jamal 的密码:
本地键:
master.pem: 01:f5:a2:55:01:97:36:4e:14:a7:5a:7b:b6:30:10:c1
master.pub: de:a8:00:e1:2b:5a:86:0e:3a:32:3a:b1:74:e1:cb:52
我们完成了 salt master 配置。
启动Salt Minion配置
我们将一步一步地做好一切。这意味着我们将开始从node1salt.unixmen.com到node4salt.unixmen.com服务器安装minions,然后进行配置。
将minion安装到node1salt.unixmen.com服务器(Ubuntu):
jamal@node1salt:~$sudo apt-get update
jamal@node1salt:~$sudo apt-get dist-upgrade
jamal@node1salt:~$sudo add-apt-repository ppa:saltstack/salt
jamal@node1salt:~$sudo apt-get update
jamal@node1salt:~$sudo apt-get install salt-minion -y
jamal@node1salt:~$sudo service salt-minion restart
将minion安装到node2salt.unixmen.com和node3salt.unixmen.com服务器(CentOS):
安装 EPEL 存储库。
[root@node2salt ~]# yum -y install wget
[root@node3salt ~]# yum -y install wget
[root@node2salt ~]# wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
[root@node3salt ~]# wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
[root@node2salt ~]# rpm -ivh epel-release-latest-7.noarch.rpm
[root@node2salt ~]# rpm -ivh epel-release-latest-7.noarch.rpm
为每个节点禁用防火墙和 SeLinux:
[root@node2salt ~]# systemctl 禁用防火墙
[root@node3salt ~]# systemctl 禁用防火墙
更改每个 centos 节点的 /etc/selinux/config 文件中的以下行:
SELINUX=禁用
为每个 centos 节点导入 salt 存储库密钥:
[root@node2salt ~]# rpm –import https://repo.saltstack.com/yum/redhat/7/x86_64/latest/SALTSTACK-GPG-KEY.pub
[root@node3salt ~]# rpm –import https://repo.saltstack.com/yum/redhat/7/x86_64/latest/SALTSTACK-GPG-KEY.pub
创建 /etc/yum.repos.d/saltstack.repo 文件并将以下行添加到每个 centos(node2salt 和 node3salt)节点:
[saltstack-repo] name=RHEL/CentOS 的 SaltStack 存储库 $releasever
baseurl=https://repo.saltstack.com/yum/redhat/$releasever/$basearch/latest
启用=1
gpgcheck=1
gpgkey=https://repo.saltstack.com/yum/redhat/$releasever/$basearch/latest/$releaseverSALTSTACK-GPG-KEY.pub
为每个centos节点安装salt-minion包:
[root@node2salt ~]# yum clean expire-cache
[root@node3salt ~]# yum clean expire-cache
[root@node2salt ~]# yum install salt-minion -y
[root@node3salt ~]# yum install salt-minion -y
将minion守护进程添加到每个centos节点的StartUP:
[root@node2salt ~]# 服务 salt-minion 启动
[root@node2salt ~]# chkconfig salt-minion on
[root@node3salt ~]# 服务 salt-minion 启动
[root@node3salt ~]# chkconfig salt-minion on
将minion安装到node4salt.unixmen.com服务器(FreeBSD):
root@node4salt:~ # portsnap 获取提取更新
root@node4salt:~ # pkg 更新
root@node4salt:~ # pkg 升级
root@node4salt:~ # pkg 安装 py27-salt
如果您在系统存储库中找不到 salt,您可以将以下行添加到 /usr/local/etc/pkg/repos/saltstack.conf 文件并安装 minion:
盐栈:{
网址:“https://repo.saltstack.com/freebsd/$ {ABI}/”,
mirror_type:“http”,
已启用:是
优先级:10
}
安装后,从示例文件中复制 Minion 配置。
root@node4salt:~ # cp /usr/local/etc/salt/minion.sample /usr/local/etc/salt/minion
将minion添加到StartUP并启动:
root@node4salt:~ # sysrc salt_minion_enable=”YES”
salt_minion_enable: -> 是
root@node4salt:~ # 服务 salt_minion 启动
取决于操作系统,对于所有 Linux 和 FreeBSD 服务器,我们在相应的 /etc/salt/minion 和 /usr/local/etc/salt/minion 中定义主服务器路径和指纹强> 文件。
主站:saltmaster.unixmen.com
master_finger: 'de:a8:00:e1:2b:5a:86:0e:3a:32:3a:b1:74:e1:cb:52'
之后我们重新启动所有服务器的 minion 守护进程:
jamal@saltmaster:~$sudo restart salt-master
jamal@node1salt:~$sudo service salt-minion restart
[root@node2salt ~]# 服务 salt-minion 重新启动
[root@node3salt ~]# 服务 salt-minion 重新启动
root@node4salt:~ # 服务 salt_minion 重新启动
我们已经将所有 Minions 的密钥发送到 saltmaster 服务器,但是主服务器不接受此密钥。
我们可以从minion服务器上看到salt minion key,如下所示:
jamal@node1salt:~$sudo salt-call key.finger –local
本地:
a2:32:9d:78:ab:ef:4e:1b:80:31:ae:a0:2b:a0:d5:85
root@node4salt:~ # salt-call key.finger –local
本地:
df:0d:01:7d:73:d1:3d:93:af:80:4b:8d:be:4b:2b:32
注意:如果您想从 saltmaster.unixmen.com 服务器查看批准的密钥,请使用以下命令。
jamal@saltmaster:~$sudo salt-key -f node1salt.unixmen.com
接受的密钥:
node1salt.unixmen.com:a2:32:9d:78:ab:ef:4e:1b:80:31:ae: a0:2b:a0:d5:85
要查看 saltmaster.unixmen.com 服务器中不接受的密钥列表,请使用以下命令(Unaccepted Keys密钥下面的行是minion服务器,我们必须批准该服务器):
jamal@saltmaster:~$sudo salt-key –列出所有
接受的键:
拒绝的密钥:
不接受的键:
node1salt.unixmen.com
node2salt.unixmen.com
node3salt.unixmen.com
node4salt.opensource.az
拒绝的钥匙:
接受 saltmaster.unixmen.com 主服务器中的所有节点:
jamal@saltmaster:~$sudo salt-key -a node1salt.unixmen.com
将接受以下密钥:
不接受的键:
node1salt.unixmen.com
继续? [n/Y] 是
已接受 minion node1salt.unixmen.com 的密钥。
jamal@saltmaster:~$sudo salt-key -a node2salt.unixmen.com
将接受以下密钥:
不接受的键:
node2salt.unixmen.com
继续? [n/Y] 是
已接受 minion node2salt.unixmen.com 的密钥。
jamal@saltmaster:~$sudo salt-key -a node3salt.unixmen.com
将接受以下密钥:
不接受的键:
node3salt.unixmen.com
继续? [n/Y] 是
已接受 minion node3salt.unixmen.com 的密钥。
jamal@saltmaster:~$sudo salt-key -a node4salt.opensource.az
将接受以下密钥:
不接受的键:
node4salt.opensource.az
继续? [n/Y] 是
已接受 minion node4salt.opensource.az 的密钥。
为了测试目的,向所有 minion 节点发送 ping 数据包:
jamal@saltmaster:~$sudo salt ‘*’ test.ping
node1salt.unixmen.com:
正确
node2salt.unixmen.com:
正确
node3salt.unixmen.com:
正确
node4salt.opensource.az:
正确
注意:如果我们想用一个命令接受所有minion,请使用salt-key -A
对于示例,您可以阅读SaltStack示例文章。