• SaltStack使用salt-ssh模式-第十一篇


    salt-ssh介绍

    1.salt-ssh 是 0.17.0 新引入的一个功能,不需要minion对客户端进行管理,也不需要master。

    2.salt-ssh 支持salt大部分的功能:如 grains、modules、state 等

    3.salt-ssh 没有使用ZeroMQ的通信架构,执行是串行模式

    类似 paramiko、pssh、ansible 这类的工具

    Roster使用

    salt-ssh需要一个名单系统来确定哪些执行目标,Salt的0.17.0版本中salt-ssh引入roster系统

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

    配置文件如下
    # target的信息
        host:        # 远端主机的ip地址或者dns域名
        user:        # 登录的用户
        passwd:      # 用户密码,如果不使用此选项,则默认使用秘钥方式
    # 可选的部分
        port:        #ssh端口
        sudo:        #可以通过sudo
        tty:         # 如果设置了sudo,设置这个参数为true
        priv:        # ssh秘钥的文件路径
        timeout:     # 当建立链接时等待响应时间的秒数
        minion_opts: # minion的位置路径
        thin_dir:    # target系统的存储目录,默认是/tmp/salt-<hash>
        cmd_umask:   # 使用salt-call命令的umask值

    安装配置

    一,安装salt-ssh
    [root@linux-node1 ~]# yum install salt-ssh
    二,修改roster文件,配置要管理的机器
    [root@linux-node1 ~]# tail -11  /etc/salt/roster 
    linux-node1.example.com:
      host: 192.168.56.11
      user: root
      passwd: 123456
      port: 22
    
    linux-node2.example.com:
      host: 192.168.56.12
      user: root
      passwd: 123456
      port: 22
    三,进行管理测试
    [root@linux-node1 ~]# salt-ssh '*' test.ping -i
    linux-node1.example.com:
        True
    linux-node2.example.com:
        True
    四,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,下次开始就不使用密码
    五,salt-ssh执行状态模块
    [root@linux-node1 ~]# salt-ssh '*' state.sls web.lamp
    linux-node2.example.com:
    ----------
              ID: lamp-install
        Function: pkg.installed
          Result: True
         Comment: All specified packages are already installed.
         Started: 00:31:01.867400
        Duration: 802.47 ms
         Changes:   
    ----------
              ID: apache-config
        Function: file.managed
            Name: /etc/httpd/conf/httpd.conf
          Result: True
         Comment: File /etc/httpd/conf/httpd.conf is in the correct state
         Started: 00:31:02.694092
        Duration: 52.696 ms
         Changes:   
    ----------
              ID: php-config
        Function: file.managed
            Name: /etc/php.ini
          Result: True
         Comment: File /etc/php.ini is in the correct state
         Started: 00:31:02.746901
        Duration: 1.453 ms
         Changes:   
    ----------
              ID: lamp-service
        Function: service.running
            Name: httpd
          Result: True
         Comment: Service httpd is already enabled, and is in the desired state
         Started: 00:31:02.752421
        Duration: 249.895 ms
         Changes:   
    ----------
              ID: apache-conf
        Function: file.recurse
            Name: /etc/httpd/conf.d
          Result: True
         Comment: The directory /etc/httpd/conf.d is in the correct state
         Started: 00:31:03.002535
        Duration: 7.066 ms
         Changes:   
    ----------
              ID: apache-auth
        Function: pkg.installed
            Name: httpd-tools
          Result: True
         Comment: Package httpd-tools is already installed.
         Started: 00:31:03.009760
        Duration: 0.512 ms
         Changes:   
    ----------
              ID: apache-auth
        Function: cmd.run
            Name: htpasswd -bc /etc/httpd/conf/htpasswd_file admin admin
          Result: True
         Comment: unless execution succeeded
         Started: 00:31:03.016294
        Duration: 7.043 ms
         Changes:   
    
    Summary
    ------------
    Succeeded: 7
    Failed:    0
    ------------
    Total states run:     7
    linux-node1.example.com:
    ----------
              ID: lamp-install
        Function: pkg.installed
          Result: True
         Comment: All specified packages are already installed.
         Started: 00:31:01.479393
        Duration: 1072.439 ms
         Changes:   
    ----------
              ID: apache-config
        Function: file.managed
            Name: /etc/httpd/conf/httpd.conf
          Result: True
         Comment: File /etc/httpd/conf/httpd.conf is in the correct state
         Started: 00:31:02.575303
        Duration: 54.346 ms
         Changes:   
    ----------
              ID: php-config
        Function: file.managed
            Name: /etc/php.ini
          Result: True
         Comment: File /etc/php.ini is in the correct state
         Started: 00:31:02.629757
        Duration: 1.963 ms
         Changes:   
    ----------
              ID: lamp-service
        Function: service.running
            Name: httpd
          Result: True
         Comment: Service httpd is already enabled, and is in the desired state
         Started: 00:31:02.635879
        Duration: 233.048 ms
         Changes:   
    ----------
              ID: apache-conf
        Function: file.recurse
            Name: /etc/httpd/conf.d
          Result: True
         Comment: The directory /etc/httpd/conf.d is in the correct state
         Started: 00:31:02.869236
        Duration: 5.416 ms
         Changes:   
    ----------
              ID: apache-auth
        Function: pkg.installed
            Name: httpd-tools
          Result: True
         Comment: Package httpd-tools is already installed.
         Started: 00:31:02.874737
        Duration: 0.5 ms
         Changes:   
    ----------
              ID: apache-auth
        Function: cmd.run
            Name: htpasswd -bc /etc/httpd/conf/htpasswd_file admin admin
          Result: True
         Comment: unless execution succeeded
         Started: 00:31:02.880676
        Duration: 5.381 ms
         Changes:   
    
    Summary
    ------------
    Succeeded: 7
    Failed:    0
    ------------
    Total states run:     7
    salt-ssh '*' state.sls web.lamp

    总结

    1.salt-ssh 是在salt基础上打了一个python包上传到客户端的默认tmp目录下

        在客户端上面解压并执行返回结果,最后删除tmp上传的临时文件

    2.salt-minion方法是salt-mater先执行语法验证,验证通过后发送到minion

        minion收到Msater的状态文件默认保存在/var/cache/salt/minion

        注意:也有时候salt-master语法验证通过,在minion上可能因为环境问题会执行失败

    3.salt-ssh和salt-minion可以共存,salt-minion不依赖于ssh服务

  • 相关阅读:
    古谚、评论与论断、名篇与名言
    重读《西游记》
    重读《西游记》
    命名之法 —— 时间、季节、地点
    命名之法 —— 时间、季节、地点
    文言的理解 —— 古时的称谓、别称、别名
    文言的理解 —— 古时的称谓、别称、别名
    Oracle GoldenGate for Oracle 11g to PostgreSQL 9.2.4 Configuration
    瀑布 敏捷 文档
    POJ 1325 ZOJ 1364 最小覆盖点集
  • 原文地址:https://www.cnblogs.com/xiewenming/p/7716252.html
Copyright © 2020-2023  润新知