salt-stack批量管理主机

Salt,一种全新的基础设施管理方式,部署轻松,在几分钟内可运行起来,扩展性好,很容易管理上万台服务器,速度够快,服务器之间秒级通讯。
1, 我公司生产环境已经全部使用ansible了,还有必要安装salt来管理吗?
相信每一个运维童鞋曾经都有过配置防火墙,不小心把自己挡在外面的经历吧?ansible是采用ssh来连接被管理主机的,优点是不需要在被管理端安装任何程序,缺点也显而易见,抛开速度较慢不说,如果ssh端口被挡了,ansible也就没用了.
但是salt是C/S模式的,需要在被控端安装程序来连接主控程序,即使你的被控端ssh服务挂了,或者防火墙规则配置出错,你都可以继续远程该主机来进行更改配置!大大减少了管理云服务器的风险!
2, 安装salt-stack服务端,无需进行配置

-- redhat系列 --
yum install -y epel-release
yum install -y salt-master
-- debian系列 -- 
apt install salt-master
-- 启动salt主控端 --
systemctl start salt-master
systemctl enable salt-master
-- 4505,4506这两个端口是salt主控的监听端口,需要向客户端开放这两个端口 --

3, 安装salt-stack被控端并指定主控端ip

-- redhat系列 --
yum install -y epel-release
yum install -y salt-minion
-- debian系列 --
apt install salt-minion
-- 启动salt被控端 --
systemctl start salt-minion
systemctl enable salt-minion
-- 配置salt被控端,node-name是你的节点名称 --
echo "master: salt-master-ip" > /etc/salt/minion
echo "node-name" > /etc/salt/minion_id
systemctl restart salt-minion

4, salt主控端常用命令

salt-key                    -- 列出所有node节点,包括未接受node --
salt-key -A                 -- 允许所有node节点的控制请求 --
salt-key -a node-name       -- 允许指定node节点的控制请求 --
salt-key -D                 -- 删除所有node节点 --
salt-key -d node-name       -- 删除指定node节点 --
salt '*' test.ping          -- 对所有节点进行ping测试,返回true为控制成功 --
salt '*' cmd.run "lscpu"    -- 对所有节点执行shell命令 --
salt-cp '*' file /tmp/file  -- 将本机的文件file复制到所有被控端/tmp/目录下,文件名为file
salt -N group-name operator -- 指定某个分组,对其进行操作 --

5, salt主控端分组管理

-- 如果你公司有多种业务的话,就可以进行分组管理了 --
配置文件: /etc/salt/master
nodegroups:
  web: '[email protected],web2,web3'
  cdn: '[email protected]*'
  vpn: '[email protected],vpn-hk