使用salt-ssh安装salt-minion

一、引入Saltstack

请移步自动化工具之saltstack

二、salt-ssh和master-minion

  salt-ssh 是 0.17.0 新出现的一个功能,它是依赖 ssh 来进行远程命令执行的工具,好处就是不需要在客户端安装 minion,也不需要安装 master(直接安装 salt-ssh 这个包即可),有些时候你还真的需要 salt-ssh(例如:条件不允许安装 minion、不用长期管理某台 minion) 最重要的是 salt-ssh 并不只是单纯的 ssh 工具,它支持 salt 大部分的功能,如 grains、modules、state 等,需要注意的是,salt-ssh 并没有继承原来的通讯架构 (ZeroMQ),也就是说它的执行是串行模式,速度比传统的master-minion要慢

三、Roster系统

3.1引入roster

 Salt的0.17.0版本中salt-ssh加入了roster系统,roster系统被创建因为salt-ssh需要一个名单系统来确定哪些执行目标。
Roster系统不再需要和使用标准的salt,因为这里不存在salt-mater和salt-minion这种架构关系和通讯方式。
自从roster系统被移植进来,他就是很容易被附加到任何存在的系统去收集当前哪些可用的而且可以被添加到salt-ssh使用的server信息,默认的roster文件是/etc/salt/roster

3.2 roster是如何工作的

  roster系统编译成了一个数据结构,包含了targets,这些targets是一个目标系统主机列表和或如连接到这些targets。

3.3 学习roster系统

如下是salt的配置文件

  1. # target的信息
  2. host: # 远端主机的ip地址或者dns域名
  3. user: # 登录的用户
  4. passwd: # 用户密码,如果不使用此选项,则默认使用秘钥方式
  5. # 可选的部分
  6. port: #ssh端口
  7. sudo: #可以通过sudo
  8. tty: # 如果设置了sudo,设置这个参数为true
  9. priv: # ssh秘钥的文件路径
  10. timeout: # 当建立链接时等待响应时间的秒数
  11. minion_opts: # minion的位置路径
  12. thin_dir: # target系统的存储目录,默认是/tmp/salt-<hash>
  13. cmd_umask: # 使用salt-call命令的umask值
  14. ```
  15. #四、使用秘钥方式配置salt-ssh
  16. ##4.1 配置系统基础环境
  17. 系统环境:两台aws虚拟机
  18. * 第一台:作为管理机
  19. **Private DNS **:ip-172-31-40-152.eu-west-1.compute.internal **Pvivate IP** :172.31.40.152
  20. ```bash
  21. [root@ip-172-31-40-152 minions]# uname -a
  22. Linux ip-172-31-40-152.eu-west-1.compute.internal 2.6.32-573.8.1.el6.x86_64 #1 SMP Tue Nov 10 18:01:38 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
  • 第二台:作为待管理机
    Private DNS :ip-172-31-40-151.eu-west-1.compute.internal
    Pvivate IP :172.31.40.151
  1. [root@ip-172-31-40-151 minions]# uname -a
  2. Linux ip-172-31-40-151.eu-west-1.compute.internal 2.6.32-573.8.1.el6.x86_64 #1 SMP Tue Nov 10 18:01:38 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux

4.2 配置salt-ssh

安装salt-ssh

  1. [root@ip-172-31-40-152 minions]#rpm -ivh
  2. https://repo.saltstack.com/yum/amazon/salt-amzn-repo-2015.8-1.ami.noarch.rpm
  3. [root@ip-172-31-40-152 minions]#yum install -y salt-minion salt-ssh

修改roster文件,配置一台待管理的机器

  1. [root@ip-172-31-40-152 minions]# cat /etc/salt/roster
  2. linux-node2:
  3. host: 172.31.40.151
  4. user: root

4.2 学习salt-ssh命令用法

  • -r, –raw, –raw-shell # 直接使用shell命令
  • –priv #指定SSH私有密钥文件
  • –roster #定义使用哪个roster系统,如果定义了一个后端数据库,扫描方式,或者用户自定义的的roster系统,默认的就是/etc/salt/roster文件
  • –roster-file #指定roster文件
  • –refresh, –refresh-cache #刷新cache,如果target的grains改变会自动刷新
  • –max-procs #指定进程数,默认为25
  • -i, –ignore-host-keys #当ssh连接时,忽略keys
  • –passwd #指定默认密码
  • –key-deploy #配置keys 设置这个参数对于所有minions用来部署ssh-key认证,这个参和–passwd结合起来使用会使初始化部署很快很方便。当调用master模块时,并加上参数 –key-deploy 即可在minions生成keys,下次开始就不使用密码

4.3 分发管理主机的公钥到待管理主机

将秘钥放到指定目录

  1. [root@ip-172-31-40-152 .ssh]# pwd
  2. /root/.ssh
  3. [root@ip-172-31-40-152 .ssh]#mkdir /srv/salt/minions -p
  4. [root@ip-172-31-40-152 .ssh]#cp id_rsa /etc/salt/pki/master/ssh/salt-ssh.rsa

使用OpenSSH的key管理工具部署key到server上

  1. [root@ip-172-31-40-152 ssh]# ssh-copy-id -i /etc/salt/pki/master/ssh/salt-ssh.rsa root@ip-172-31-40-151.eu-west-1.compute.internal
  2. root@ip-172-31-40-151.eu-west-1.compute.internal's password:
  3. Now try logging into the machine, with "ssh 'root@ip-172-31-40-151.eu-west-1.compute.internal'", and check in:
  4. .ssh/authorized_keys
  5. to make sure we haven't added extra keys that you weren't expecting.

可以使用个简单的脚本来进行秘钥分发

  1. [root@ip-172-31-40-152 srcipt]# cat /srcipt/salt-ssh-copy-id.sh
  2. #!/bin/bash
  3. if [ -z $1 ]; then
  4. echo $0 user@host.com
  5. exit 0
  6. fi
  7. ssh-copy-id -i /etc/salt/pki/master/ssh/salt-ssh.rsa.pub $1
  8. [root@ip-172-31-40-152 srcipt]#chmod +x /srcipt/salt-ssh-copy-id.sh
  9. [root@ip-172-31-40-152 srcipt]#./salt-ssh-copy-id.sh user@server1.host.com
  10. [root@ip-172-31-40-152 srcipt]#./salt-ssh-copy-id.sh user@server2.host.com

4.4测试salt-ssh连接成功

  1. [root@ip-172-31-40-152 ssh]# salt-ssh '*' test.ping
  2. linux-node2:
  3. True

五、使用salt-ssh安装salt-minion

查看需要写的状态文件情况

  1. [root@ip-172-31-40-152 salt]# pwd
  2. /srv/salt
  3. [root@ip-172-31-40-152 salt]# cp /etc/salt/minion minions/files/
  4. [root@ip-172-31-40-152 salt]# tree
  5. .
  6. ├── minions
  7. ├── files
  8. └── minion
  9. └── install.sls
  10. ├── pkg
  11. └── epel.sls
  12. └── top.sls
  13. 3 directories, 4 files

查看安装aws源的状态文件

  1. [root@ip-172-31-40-152 salt]# cat pkg/aws.sls
  2. yum_aws_release:
  3. pkg.installed:
  4. - sources:
  5. - aws-release: https://repo.saltstack.com/yum/amazon/salt-amzn-repo-2015.8-1.ami.noarch.rpm
  6. - unless: rpm -qa|grep salt-amzn

查看安装salt-ssh的状态文件

  1. [root@ip-172-31-40-152 salt]# cat minions/install.sls
  2. include:
  3. - pkg.epel
  4. #salt_install
  5. salt_pkg:
  6. pkg.installed:
  7. - name: salt-minion
  8. - skip_verify: True
  9. - skip_suggestions: True
  10. salt_conf:
  11. file.managed:
  12. - name: /etc/salt/minion
  13. - source: salt://minions/files/minion
  14. - template: jinja
  15. - defaults:
  16. minion_id: {{grains['fqdn_ip4'][0]}}
  17. - require:
  18. - pkg: salt_pkg
  19. salt_service:
  20. service.running:
  21. - name: salt-minion
  22. - enable: True
  23. - require:
  24. - file: salt_conf

查看topfile

  1. [root@ip-172-31-40-152 salt]# cat top.sls
  2. base:
  3. '*':
  4. - pkg.epel
  5. - minions.install

执行高级状态

  1. [root@ip-172-31-40-152 salt]# salt-ssh '*' state.highstate
  2. linux-node2:
  3. ----------
  4. ID: yum_repo_release
  5. Function: pkg.installed
  6. Result: True
  7. Comment: unless execution succeeded
  8. Started: 09:26:18.176820
  9. Duration: 719.982 ms
  10. Changes:
  11. ----------
  12. ID: salt_pkg
  13. Function: pkg.installed
  14. Name: salt-minion
  15. Result: True
  16. Comment: Package salt-minion is already installed
  17. Started: 09:26:18.897477
  18. Duration: 761.656 ms
  19. Changes:
  20. ----------
  21. ID: salt_conf
  22. Function: file.managed
  23. Name: /etc/salt/minion
  24. Result: True
  25. Comment: File /etc/salt/minion is in the correct state
  26. Started: 09:26:19.659954
  27. Duration: 39.861 ms
  28. Changes:
  29. ----------
  30. ID: salt_service
  31. Function: service.running
  32. Name: salt-minion
  33. Result: True
  34. Comment: The service salt-minion is already running
  35. Started: 09:26:19.700335
  36. Duration: 122.108 ms
  37. Changes:
  38. Summary for linux-node2
  39. ------------
  40. Succeeded: 4
  41. Failed: 0
  42. ------------
  43. Total states run: 4

在第二台aws虚拟机上查看salt-minion运行情况

  1. [root@ip-172-31-40-151 ~]# /etc/init.d/salt-minion status
  2. salt-minion (pid 8808) is running...

至此salt-minion安装成功

3
未经许可,不得转载,否则将受到作者追究,博主联系方式见首页右上角

该文章由 发布

这货来去如风,什么鬼都没留下!!!
发表我的评论
取消评论
代码 贴图 加粗 链接 删除线 签到

(1)条精彩评论:
  1. 匿名
    Wonderful, wonderful, wonderful, wonderful. I co&2und#8l17;t be happier. They can both go away. May they both be out of the playoffs this year. Let them spend their time making more commercials. I’ll take Brady anytime over either one of the mannings.
    匿名2016-07-04 14:48 回复