简介:SaltStack 是一个服务器基础架构集中化管理平台,具备配置管理、远程执行、监控等功能,一般可以理解为简化版的puppet和加强版的func。SaltStack 基于Python语言实现,结合轻量级消息队列(ZeroMQ)与Python第三方模块(Pyzmq、PyCrypto、Pyjinjia2、 python-msgpack和PyYAML等)构建。
通过部署SaltStack环境,我们可以在成千上万台服务器上做到批量执行命令,根据不同业务特性进行配置集中化管理、分发文件、采集服务器数据、操作系统基础及软件包管理等,SaltStack是运维人员提高工作效率、规范业务配置与操作的利器。
模块:Saltstack强大之处就是拥有众多模块,这些模块极大提高了我们的工作效率,而且还不断开发新的模块,这里就先列举一些常用模块的基本的应用,更多的模块和使用方法请参考官网:https://docs.saltstack.com/en/latest/ref/modules/all/
实验环境:(为了节省篇幅,只对minion端slave这台机器进行操作)
Master:10.0.4.52 CentOS release 6.5 (Final) Slave:10.0.4.53 CentOS release 6.5 (Final)
模块一:cmd模块(实现远程的命令行调用执行)
# salt 'slave' cmd.run 'uptime' #可以远程调用Linux命令 slave: 11:47:36 up 14 days, 3:26, 0 users, load average: 0.00, 0.00, 0.00 # salt 'slave' cmd.run 'df -h' slave: Filesystem Size Used Avail Use% Mounted on /dev/mapper/vg_localhost-lv_root 18G 3.0G 14G 19% / tmpfs 940M 84K 940M 1% /dev/shm /dev/sda1 485M 39M 421M 9% /boot
模块二:cron模块(实现被控主机的crontab操作)
# salt 'slave' cron.set_job root '*' '*/2' '*' '*' '*' 'ntpdate time.nist.gov >/dev/null 2>&1'#添加计划任务 slave: new # salt 'slave' cron.raw_cron root #查看minion端root的计划任务。 slave: # Lines below here are managed by Salt, do not edit * */2 * * * ntpdate time.nist.gov >/dev/null 2>&1 # salt 'slave' cron.rm_job root 'ntpdate time.nist.gov >/dev/null 2>&1' #删除root的计划任务 slave: removed
模块三:file模块(被控主机文件常见操作,包括文件读写、权限、查找、校验等)
# salt 'slave' file.get_sum /etc/resolv.conf md5 #查看md5 slave: 025b620e25bbef5b53099ae9cdbb9d16 # salt 'slave' file.stats /etc/resolv.conf #查看文件属性。 slave: ---------- atime: 1463387846.48 ctime: 1462759047.49 gid: 0 group: root inode: 135225 mode: 0644 mtime: 1462759047.49 size: 83 ............................ # salt 'slave' file.append /etc/motd \ #给某个文件添加添加内容。 > "With all thine offerings thou shalt offer salt." \ > "Salt is what makes things taste bad when it isn't in them." slave: Wrote 2 lines to "/etc/motd" # salt 'slave' file.chown /data/1.txt root root #修改文件用户和所属组 slave: None # salt 'slave' file.copy /data/1.txt /tmp/1.txt #将data目录下的1.txt文件复制到/tmp目录下 slave: True # salt 'slave' file.find / type=f name=\*.bak size=+10m #找出大于10M并且以.bak结尾的文件。 slave: - /data/1.bak - /data/2.bak # salt 'slave' file.find / type=f name=\*.bak size=+10m delete #删除以.bak结尾而且大于10M的文件。 # salt 'slave' file.mkdir /tmp/test #在/tmp目录下创建test文件夹
模块四:network模块(返回被控主机网络信息)
# salt '*' network.ip_addrs #查看IP地址 slave: - 10.0.4.53 master: - 10.0.4.52 # salt 'slave' network.get_hostname #取主机名 slave: slave # salt 'slave' network.hw_addr eth0 #取MAC地址 slave: 00:0c:29:a3:cd:93 # salt 'slave' network.interface eth0 #查看网卡的IP相关信息 slave: |_ ---------- address: 10.0.4.53 broadcast: 10.0.4.255 label: eth0 netmask: 255.255.255.0 # salt 'slave' network.ping blog.51cto.com #ping域名 slave: PING sq.dns.51cto.com (120.55.239.108) 56(84) bytes of data. 64 bytes from 120.55.239.108: icmp_seq=1 ttl=40 time=32.8 ms 64 bytes from 120.55.239.108: icmp_seq=2 ttl=40 time=32.7 ms 64 bytes from 120.55.239.108: icmp_seq=3 ttl=40 time=32.8 ms 64 bytes from 120.55.239.108: icmp_seq=4 ttl=40 time=32.6 ms --- sq.dns.51cto.com ping statistics --- 4 packets transmitted, 4 received, 0% packet loss, time 3036ms rtt min/avg/max/mdev = 32.652/32.795/32.871/0.155 ms # salt 'slave' network.connect www.51cto.com 80 #测试连接到主机特定的端口上。 slave: ---------- comment: Successfully connected to www.51cto.com (120.55.239.108) on tcp port 80 result: True # salt 'slave' network.dig www.51cto.com #查询域名DNS包括NS记录,A记录,MX记录等相关信息. slave: ................................ ;www.51cto.com. IN A ;; ANSWER SECTION: www.51cto.com. 600 IN CNAME web.dns.51cto.com. web.dns.51cto.com. 600 IN A 120.55.239.108 ................................
模块五:pkg包管理模块(被控主机程序包管理)
# salt '*' pkg.install nmap #安装nmap工具,pkg.install后面加你想要安装的软件名。 # salt '*' pkg.file_list nmap #查看nmap的文件列表
模块六:service 服务模块(被控主机程序包服务管理)
# salt 'slave' service.enable nfs #开启某个服务(nfs)。 slave: True # salt 'slave' service.disable nfs #关闭某个服务(nfs)。 slave: True # salt 'slave' service.start nfs #启动服务 slave: True # salt 'slave' service.stop nfs #关闭服务 slave: True # salt 'slave' service.status nfs #查看服务状态 slave: True
模块七:grain模块(grains数据控制)
# salt 'slave' grains.item os #查看OS slave: ---------- os: CentOS # salt 'slave' grains.item os osrelease oscodename #查看系统版本 slave: ---------- os: CentOS oscodename: Final osrelease: 6.5
模块八:state模块(管理minion state)
# salt ‘slave‘ state.highstate #对minion执行top.sls,这条命令比较重要。
模块九:status模块(返回minion端的各种状态数据)
# salt 'slave' status.cpuinfo #查看CPU信息。 slave: ---------- address sizes: 40 bits physical, 48 bits virtual bogomips: 3989.99 cache size: 18432 KB cache_alignment: 64 ..................................... # salt 'slave' status.cpustats #查看CPU使用情况。 slave: ---------- btime: 1462234850 cpu: ---------- idle: 121186157 iowait: 9437 irq: 43 nice: 954 softirq: 175 steal: ................................... # salt 'slave' status.diskusage #返回磁盘使用情况。 # salt 'slave' status.diskusage / /tmp #返回根分区和/tmp分区的使用情况。 slave: ---------- /: ---------- available: 14365966336 total: 18503614464 /tmp: ---------- available: 14365966336 total: 18503614464 # salt 'slave' status.meminfo #返回内存信息。 slave: ---------- Active: ---------- unit: kB value: 507084 Active(anon): ---------- unit: kB value: 88684 Active(file): ---------- unit: kB value: 418400 ............................... # salt 'slave' status.loadavg #返回平均负载值。 slave: ---------- 1-min: 0.0 15-min: 0.0 5-min: 0.0
好了,先写到这里,后期再继续更新更多的模块的基本使用的方法。