salt教程
2016/03/10 00:01 于 系统 0
介绍
这个教程是我中秋休息的时候所做,为大家学习了解saltstack。
SaltStack名字是由它的故乡美国盐城。
SaltStack是为我们批量管理千万台机器的基础工具,拓展起来也十分方便。SaltStack可以进行动态的编辑,配置管理,远程执行命令等等。
Saltstack包括master和minion,master是控制端,minion是被管理节点。
这里先不废话,简单介绍安装(下面说到的salt就是咱们所说的SaltStack).
这里有两个节点
salt-master:10.0.0.11
salt-minion:10.0.0.21
这里先给两个节点安装个epel源,方便salt网络安装。
[root@salt-master ~] rpm -ivh http://mirrors.ustc.edu.cn/centos/6/extras/x86_64/Packages/epel-release-6-8.noarch.rpm
10.0.0.11(master)节点操作
安装salt-master,暂时不需要配置。
[root@salt-master ~]# hostname
salt-master
[root@salt-master ~]# yum -y install salt salt-master salt-minion
安装配置salt-minion
[root@salt-master ~]# egrep -v '^#|^$' /etc/salt/minion
master: 10.0.0.11
[root@salt-master ~]# /etc/init.d/salt-minion start
Starting salt-minion daemon: [确定]
10.0.0.21节点操作
安装配置salt-minion
[root@salt-minion1 ~]# hostname
salt-minion1
[root@salt-master ~]# yum -y install salt salt-minion
[root@salt-master ~]# egrep -v '^#|^$' /etc/salt/minion
master: 10.0.0.11
[root@salt-minion1 ~]# /etc/init.d/salt-minion start
Starting salt-minion daemon: [确定]
10.0.0.11(master)节点操作
查看salt-master接收到的密钥,分别是“10.0.0.11”和“10.0.021”,master通过这些密钥
salt-key -L 查看当前密钥
-A 接受所有来自客户端密钥
--accept=example.com 接受指定的密钥
[root@salt-master ~]# salt-key -L
Accepted Keys:
Denied Keys:
Unaccepted Keys:
salt-master
salt-minion1
Rejected Keys:
[root@salt-master ~]# salt-key -A
The following keys are going to be accepted:
Unaccepted Keys:
salt-master
salt-minion1
Proceed? [n/Y] y
Key for minion salt-master accepted.
Key for minion salt-minion1 accepted.
验证salt-master是否可以控制各个minion节点(查看本机的IP)
[root@salt-master ~]# salt '*' network.ip_addrs
salt-master:
- 10.0.0.11
- 172.17.42.1
salt-minion1: - 10.0.0.21
添加salt-master配置
刚刚只是把salt-minion加入到了salt-master管理,就像老板招聘了一群员工现在老板可以向员工发号命令了,如果老板有一部分多步骤且重复的指令,老板一般就会用到邮件和文档来让员工操作了,
salt-master是通过写sls配置管理minion上重复指令的,服务状态等等。这里需要先配置一下:
创建配置文件目录
[root@salt-master srv]# mkdir -p /srv/salt/base
在master配置里面指定配置文件目录
[root@salt-master ~]# vim /etc/salt/master
file_roots:
base:
- /srv/salt/base
[root@salt-master ~]# /etc/init.d/salt-master restart
Stopping salt-master daemon: [确定]
Starting salt-master daemon: [确定]
salt-master默认会读取上面指定配置目录下的top.sls。(这个是在master配置文件下的state_top: top.sls决定的)
现在写一个
[root@salt-master base]# tree
.
├── system
│ ├── files
│ │ └── hosts
│ └── hosts.sls
└── top.sls
2 directories, 3 files
[root@salt-master base]# cat top.sls
base: #这里指定的环境是base,所以这个top.sls在/srv/salt/base目录下
"": # “”是所有主机的意思,指定单个主机直接写“salt-minion1”
- system.hosts # 这里指调用了那些sls配置文件,“点”在这里是目录分级
也就是system没有可以下的hosts.sls配置文件
[root@salt-master base]# cat system/hosts.sls
/etc/hosts: #这个是配置ID和文件存放位置,是不可重复的
file.managed: #这里调用了“file.managed”salt的文件管理模块
- source: salt://system/files/hosts #source是指定文件源,“salt://”是指salt项目下文件
- mode: 644 #文件权限644
- user: root #文件用户属主
- group: root #文件的用户组
下面执行一下上面的配置文件状态
[root@salt-master system]# salt 'salt-minion1' state.highstate #salt “执行节点” 执行模块
下面是执行结果
salt-minion1: #执行节点
ID: /etc/hosts #配置ID
Function: file.managed #模块
Result: True #执行结果True为成功
Comment: File /etc/hosts updated #文件执行操作【更新】
Started: 14:15:55.120499 #执行命令开始时间
Duration: 24.284 ms #执行的时长
Changes: #是否产生更改
----------
diff:
---
<a name="more"></a>
@@ -1,2 +1,4 @@
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain
+salt-master 10.0.0.11 #在这个带有“+”号的行是增加的,"-"号为减少行
+salt-minion1 10.0.0.21
Summary
Succeeded: 1 (changed=1) #执行成功1个,有一个文件状态发生更改
Failed: 0 #执行失败0个
Total states run: 1 #执行状态个数