SaltStack 安装配置--管理Windows Station

  1. Salt 安装配置;
    在linux默认情况下,Salt会安装在/etc/salt/目录下,根据配置角色会有/etc/salt/master 或/etc/salt/minion配置目录
    一般会将salt-mast 安装在linux发行版OpenSUSE,Arch,Redhat等,桌面或终端设备系统安装salt-minion;
  2. 在Windows下安装 salt-minion, 安装过程会自动添加$PATH,在CMD或powershell下执行:

    Salt-Minion /S /master=yoursaltmaster /minion-name=yourminionname

    如果没有安装,可以在下载目录直接执行:

    Salt-Minion-2017.7.0-Py2-AMD64-Setup.exe /S /master=yoursaltmaster /minion-name=yourminionname
  3. 配置Master
    默认情况,Salt-master 监听主机所有接口(或IP:0.0.0.0)的4505和4506端口,当然也可以在/etc/salt/master的配置文件中修改#interface 的参数来绑定端口(或指定IP)

    - #interface: 0.0.0.0
    + interface: 10.0.0.1

    详细的Master 配置说明请参照:master configuration reference

  4. 虽然Minion的配置选项很多,但简单那来讲,只要Minion通过DNS ‘salt’能正确解析连接到Master 就可以了;也可以在/etc/salt/master 配置中更改#master 为确定的DNS或HOST IP,示例如下:

    - #master: salt
    + master: 10.0.0.12

    详细的Minion 配置说明请参照:minion configuration reference

  5. Minion 代理设置,在此暂不介绍,感兴趣的可以参照proxy minion configuration reference

  6. 运行Salt

    1. 在终端或shell下打开salt-master(如果需要后台执行或是守护进程,使用 ‘-d’)
      sudo salt-master
    2. 在CMD或powershell下打开salt-minion,一般需要指定连接的master和声明自己的名称之类(如果需要后台执行或是守护进程,使用 ‘-d’)
      salt-minion /S /master=192.168.1.254 /minion-name=sta_01

    3. 开启debug模式,最简单的方式是前台运行minion和master,追加–log-level=debug

      salt-master --log-level=debug
    4. 非root用户执行,需要在master 的配置文件中更改user参数,另外还要确保以下文件的用户归属权限和读写权限。
      • /etc/salt
      • /var/cache/salt
      • /var/log/salt
      • /var/run/salt
  7. 密钥确认
    Salt提供了Command, 在最初的密钥交换时验证Master和Minion的身份。验证密钥标识有助于避免无意中连接到错误的 Salt 主机, 并有助于在建立初始连接时防止潜在的 MiTM 攻击。

    1. Master 密钥,使用如下命令查看master key,将master.pub 密钥复制到Minion配置文件的master_finger

      salt-key -F master
    2. Minion使用以下命令查看Minnion key,和Master下执行salt-key –finger 的minion key 比较是否一致

      salt-call --local key.finger
  8. Key认证管理
    Salt使用AES对Master <–> Minion 之间的所有通信加密,这样可以确保Master 发给Minion的Commands 不被篡改,并且Master与Minion之间的通信是可信的。
    在向Minion 发送配置命令之前,Minion的Key必须被Master接受,在Master执行salt-key 可以列出已知的Minion Key

    [root@master ~]# salt-key -L
    Unaccepted Keys:
    alpha
    bravo
    charlie
    delta
    Accepted Keys:
    

    上述这个示例显示Master 已经监听到4个Minion的key,这4个key尚未被接受,继续使用salt-key coommand接受这4个key,允许对应的Minion 可以被Master管理。

    [root@master ~]# salt-key -A
    [root@master ~]# salt-key -L
    Unaccepted Keys:
    Accepted Keys:
    alpha
    bravo
    charlie
    delta

    简单说明:salt commnd支持单独或批量签名密钥。上面的示例使用’-A’-批量-接受所有挂起的密钥。要单独接受密钥, 请使用相同选项的字母小写形式,如‘-a keyname’。也可以参考:salt-key manpage

  9. 简单示例:

    1. 使用test.ping 命令查看Master 与 Minion 之间的通信是否正常

      [root@master ~]# salt alpha test.ping
      alpha:
      True

      最简单的方式是使用’*’匹配所有Minion,一次性检查在线或通信的状态,
      每一个状态正常的Minion 都会返回’True’

      [root@master ~]# salt '*' test.ping
      alpha:
      True
      bravo:
      True
      charlie:
      True
      delta:
      True
    2. 发送cmd

      sudo salt '*' cmd.run 'netstat'
      [sudo] root 的密码:
      XDevelopmServer.XDEVELOPMENT.local:
      
       Active Connections
      
         Proto  Local Address          Foreign Address        State
         TCP    10.6.161.64:56709      10.6.161.96:4505       ESTABLISHED
         TCP    10.6.161.64:56710      10.6.161.96:4505       ESTABLISHED
         TCP    10.6.161.64:60799      ec2-52-25-255-173:https  ESTABLISHED
         TCP    10.6.161.64:65176      10.6.161.96:4506       TIME_WAIT

后续,linux 发行版可以使用bootstrap-salt.sh开机启动安装,和配置。

  • 配置防火墙
    最简单的方式是直接在Opening the Firewall up for Salt复制配置应用即可即可;
    例如:对于openSUS,启用salt已准备好的配置即可

    SuSEfirewall2 open
    SuSEfirewall2 start

    旧版Opensuse

    SuSEfirewall2 open EXT TCP 4505
    SuSEfirewall2 open EXT TCP 4506

    对于Windows : 在系统–防火墙高级配置中进出站规则允许tcp 4505-4506端口,应用规则到Domain, Private, and Public即可。
    一般不会遇到被防火墙屏蔽的情况。

  • 使用ACCEPT KEY预配置 Minion
    通常等待Minion 启动后再在Master Accept Key 不太方便,希望Minon 上线后自我引导 ,总共4步可以实现。

    1. 在Master 上初始化key,[keyname]一般为Minion ID

      root@saltmaster# salt-key --gen-keys=[key_name]
    2. 将生成的public key 复制到已Accept 的Minion 配置路径下

      root@saltmaster# cp key_name.pub /etc/salt/pki/master/minions/[minion_id]
    3. 分发minion keys
      不存在一种非常完美的安全分发密钥的方法
      对于Amazon EC2,可以参照an AWS best practice is to use IAM Roles to pass credentials

      一定要注意的是:
      由于主密钥已被接受, 因此分发私钥会带来潜在的安全风险。如果恶意方获得对置的Minion密钥的访问权限, 则它将有权访问您的整个状态树和其他敏感数据。

    4. 预置Minon
      在Minion 启动前,将minions keys(minion.pem minion.pub)放在如下目录下:
      注意如果生成的密钥为XDevelopmServer.XDEVELOPMENT.local.pem,XDevelopmServer.XDEVELOPMENT.local.pub需要将名称改为minion.pem和minion.pub,要理解在minion下尽可能是这一对key

      /etc/salt/pki/minion/minion.pem
      /etc/salt/pki/minion/minion.pub
  • 设置salt-minion 目录用户权限

    1. 有需要单独设置salt-minion 用户账户的,需要现在控制面板–用户管理–添加一个标准账户
    2. 添加用户对salt 目录的访问权限

      例如选择c:\salt右键点击属性,选择Securtiy(安全)栏--Advanced高级)--点击Continue--弹出允许用户列表 
    点击左上角蓝色连接:Select a pricipal 添加新建的salt-minion 账户
  • 设置salt-minion service 的用户权限

    1. 在cmd 下打开services.msc ,找到salt-minion ,右键选择属性(propertis)
    2. 选择log on, This account,
    3. 输入salt-minion 用户名,确认密码,最好重新输入一遍,最后确认。
  • 配置slat-minon启动参数

    打开C:\salt\conf\minion配置文件,
    查找到master:配置项,设置为salt-master 的IP或dns
    查找到id: minion id 配置项,设置为salt-minion 主机名称或其他可以区分minion的ID

为确保salt-minon 在windows 重启后能够完成启动或正常启动,请把service Startup type:由Automatic改为Automatic (Delayed Start)

重启slat-minion services

你可能感兴趣的:(编程,开发环境和工具)