1. 程式人生 > >saltstack安裝+基本命令

saltstack安裝+基本命令

download 查看 pac 部分 接收 ping tab ask rest

環境:

  1. node1:172.16.1.60 OS:centos 7.3 master hostname:centos7u3-1
  2. node2:172.16.1.61 OS:centos 7.3 minion hostname:centos7u3-2

準備工作:

  1. 在/etc/hosts文件中添加(如有DNS服務器,此操作可不用操作)
  2. 172.16.1.60 centos7u3-1
  3. 172.16.1.61 centos7u3-2

master 安裝:

yum install salt-master salt-minion -y

配置:

[[email protected] srv]# egrep -v ‘^#|^$‘ /etc/salt/master

  1. auto_accept: True #打開自動註冊
  2. file_roots:
  3. base:
  4. - /srv/salt/
  5. pillar_roots:
  6. base:
  7. - /srv/pillar

[[email protected] srv]# egrep -v ‘^#|^$‘ /etc/salt/minion master: 172.16.1.60

啟動服務:

systemctl start salt-master salt-minion

minion安裝:

yum install salt-minion -y

[[email protected] ~]# egrep -v ‘^#|^$‘ /etc/salt/minion master: 172.16.1.60

查看當前的salt key信息

salt-key -L

測試被控主機的連通性

salt ‘*‘ test.ping

遠程命令執行測試

salt ‘*‘ cmd.run ‘uptime‘

根據被控主機的grains信息進行匹配過濾

salt -G ‘os:Centos‘ test.ping

顯示被控主機的操作系統類型

salt ‘*‘ grains.item os

遠程代碼執行測試

salt ‘*‘ cmd.exec_code python ‘import sys; print sys.version‘

常用模塊介紹

(1)、cp模塊(實現遠程文件、目錄的復制,以及下載URL文件等操作)

  • 將主服務器file_roots指定位置下的目錄復制到被控主機

salt ‘*‘ cp.get_dir salt://hellotest /data

  • 將主服務器file_roots指定位置下的文件復制到被控主機

salt ‘*‘ cp.get_file salt://hellotest/rocketzhang /root/rocketzhang

  • 下載指定URL內容到被控主機指定位置

salt ‘*‘ cp.get_url http://xxx.xyz.com/download/0/files.tgz /root/files.tgz

(2)、cmd模塊(實現遠程的命令行調用執行)

salt ‘*‘ cmd.run ‘netstat -ntlp‘

(3)、cron模塊(實現被控主機的crontab操作)

為指定的被控主機、root用戶添加crontab信息

salt ‘‘ cron.set_job root ‘/5‘ ‘‘ ‘‘ ‘‘ ‘‘ ‘date >/dev/null 2>&1‘ salt ‘*‘ cron.raw_cron root

刪除指定的被控主機、root用戶的crontab信息

salt ‘‘ cron.rm_job root ‘date >/dev/null 2>&1‘ salt ‘‘ cron.raw_cron root

(4)、dnsutil模塊(實現被控主機通用DNS操作)

  • 為被控主機添加指定的hosts主機配置項

salt ‘*‘ dnsutil.hosts_append /etc/hosts 127.0.0.1 rocketzhang.qq.com

(5)、file模塊(被控主機文件常見操作,包括文件讀寫、權限、查找、校驗等)

salt ‘‘ file.get_sum /etc/resolv.conf md5 salt ‘‘ file.stats /etc/resolv.conf

(6)、network模塊(返回被控主機網絡信息)

salt ‘‘ network.ip_addrs salt ‘‘ network.interfaces

(7)、pkg包管理模塊(被控主機程序包管理,如yum、apt-get等)

salt ‘‘ pkg.install nmap salt ‘‘ pkg.file_list nmap

(8)、service 服務模塊(被控主機程序包服務管理)

salt ‘‘ service.enable crond salt ‘‘ service.disable crond salt ‘‘ service.status crond salt ‘‘ service.stop crond salt ‘‘ service.start crond salt ‘‘ service.restart crond salt ‘*‘ service.reload crond

(9)、更多功能

更多的功能,比如:grains、pillar、states、modules、returner、runners、reactor等,還有如下高級命令的使用,以及模板配置的渲染、擴展模塊的二次開發等,可以自己去深入學習哈。

  1. **salt相關的管理命令:**
  2. salt-run manage.up # 查看存活的minion
  3. salt-run manage.down # 查看死掉的minion
  4. salt-run manage.down removekeys=True # 查看down掉的minion,並將其刪除
  5. salt-run manage.status # 查看minion的相關狀態
  6. salt-run manage.versions # 查看salt的所有master和minion的版本信息
  7. salt-run jobs.active # 查看哪些系統任務還在處理中
  8. salt-run jobs.list_jobs # 顯示所有的已完成或部分完成的任務信息
  9. salt ‘*‘ saltutil.running # 查看運行的jobs ID
  10. salt \* saltutil.kill_job 20151209034239907625 # kill掉進程ID
  11. salt -d # 查看幫助文檔
  12. salt -d|grep service # 查看service相關模塊命令
  13. salt ‘*‘ sys.doc # 查看幫助文檔
  14. salt-key -L # 查詢所有接收到的證書
  15. salt-key -a <證書名> # 接收單個證書
  16. salt-key -A # 接受所有證書
  17. salt-key -d <證書名> # 刪除單個證書
  18. salt-key -D # 刪除所有證書
  19. salt ‘*‘ service.get_all # 獲取主機所有服務
  20. salt ‘*‘ service.reload sshd # 重載sshd服務
  21. salt ‘*‘ pkg.list_pkgs # 顯示軟件包版本列表
  22. salt ‘*‘ pkg.version python # 顯示軟件包版本信息
  23. salt ‘*‘ pkg.install httpd # 安裝軟件包
  24. salt ‘node1.com‘ service.status mysql # 查看mysql服務狀態
  25. salt ‘node1.com‘ service.start mysql # 啟動mysql服務
  26. salt ‘node1.com‘ cmd.run ‘service mysql status‘ # 與上面一樣查看服務
  27. salt ‘*‘ sys.list_modules # 模塊列表
  28. salt-cp ‘*‘ /etc/hosts /etc/hosts # 把master上的hosts文件分發到所有主機
  29. salt ‘*‘ cp.get_file salt://ceshi/b /tmp/test # 把salt-master端相應的文件,分發文件到minion端
  30. salt ‘*‘ cp.get_dir salt://zabbix /tmp # 把salt-master端相應的目錄,分發文件到minion端
  31. salt ‘*‘ file.copy /tmp/zabbix.sls /tmp/sls # 把salt-master端對應文件拷貝到minion端相應目錄下
  32. salt ‘*‘ cmd.run ‘uptime‘ # 遠程命令執行測試
  33. 遠程執行腳本:
  34. ‘cmd.script:‘
  35. salt ‘*‘ cmd.script salt://scripts/runme.sh
  36. salt ‘*‘ cmd.script salt://scripts/runme.sh ‘arg1 arg2 "arg 3"‘
  37. salt ‘*‘ cmd.script salt://scripts/windows_task.ps1 args=‘ -Input c:\tmp\infile.txt‘ shell=‘powershell‘
  38. salt ‘*‘ cmd.script salt://scripts/runme.sh stdin=‘one\ntwo\nthree\nfour\nfive\n‘
  39. ‘cmd.shell:‘
  40. This passes the cmd argument directly to the shell
  41. salt ‘*‘ cmd.shell "ls -l | awk ‘/foo/{print \$2}‘"
  42. salt ‘*‘ cmd.shell template=jinja "ls -l /tmp/{{grains.id}} | awk ‘/foo/{print \$2}‘"
  43. salt ‘*‘ cmd.shell "Get-ChildItem C:\ " shell=‘powershell‘
  44. salt ‘*‘ cmd.shell "grep f" stdin=‘one\ntwo\nthree\nfour\nfive\n‘
  45. salt ‘*‘ cmd.shell cmd=‘sed -e s/=/:/g‘
  46. ‘cmd.shells:‘
  47. salt ‘*‘ cmd.shells
  48. ‘cmd.tty:‘
  49. salt ‘*‘ cmd.tty tty0 ‘This is a test‘
  50. salt ‘*‘ cmd.tty pts3 ‘This is a test‘
  51. ‘cmd.which:‘
  52. salt ‘*‘ cmd.which cat
  53. **grains選項:**
  54. salt ‘*‘ grains.ls # 查看grains分類
  55. salt ‘*‘ grains.items # 查看grains所有信息
  56. salt ‘*‘ grains.item osrelease # 查看grains某個信息

saltstack安裝+基本命令