zoukankan      html  css  js  c++  java
  • salt-stack部署

    saltstack部署

     

    环境准备

    [root@server elasticsearch]# cat /etc/redhat-release 
    CentOS release 6.6 (Final)
    [root@server elasticsearch]# uname -r
    2.6.32-504.el6.x86_64

    配置表:

     环境配置:

    master:

    [root@master ~]# tail -2 /etc/hosts
    192.168.30.151 master.nulige.com
    192.168.30.152 node0l.nulige.com
    

    node01:

    [root@node01 ~]# tail -2 /etc/hosts
    192.168.30.151 master.nulige.com
    192.168.30.152 node0l.nulige.com
    

    安装软件:

    1、添加repo源

    阿里源:

    	
    wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo
    

    官网源:

    #CentOS6.x
    yum install https://repo.saltstack.com/yum/redhat/salt-repo-latest-1.el6.noarch.rpm
     
    #CentOS7.x
    yum install https://repo.saltstack.com/yum/redhat/salt-repo-latest-1.el7.noarch.rpm
    

    2、安装master

    [root@linux-node1 ~]# yum install salt-master -y<br><br>设置开启自启动
    [root@linux-node1 ~]# chkconfig salt-master on<br>
    启动salt master
    [root@linux-node1 ~]# /etc/init.d/salt-master start
    startStarting salt-master daemon: [ OK ]<br><br>[root@master ~]# vi /etc/salt/master <br>interface: 192.168.14.67
    

    3、安装minion

    [root@linux-node2 ~]# yum install -y salt-minion
    修改配置文件,告诉他master  ip地址
     
    [root@linux-node2 ~]# vim /etc/salt/minion
    master: 192.168.14.67
    配置开机自启动,然后启动minion服务
     
    [root@linux-node2 ~]# chkconfig salt-minion on
    [root@linux-node2 ~]# /etc/init.d/salt-minion start
    至此,服务安装完毕!
    

    高级玩法:

    更改master和node01主机下面的vi /etc/hosts文件,指向master主机的ip地址,其它配置文件都不用修改。就可以直接node01连到master。

    192.168.30.151 salt
    

    a、更改日志级别:

    [root@master salt]# vi /etc/salt/master #log_level: warning
    log_level: debug   #把上面的warning 改成debug ,这样就可以输出更详细日志
    

    更改配置文件,需要重启服务。

    #在master上面重启服务
    /etc/init.d/salt-master restart
    

    b、查看日志

    [root@master salt]# cat /var/log/salt/master
     
    2017-04-14 00:06:03,008 [salt.client      ][ERROR   ][1345] Unable to connect to the salt master publisher at /var/run/salt/master
    2017-04-14 00:33:07,670 [salt.log.setup   ][ERROR   ][2361] An un-handled exception was caught by salt's global exception handler:
    UnicodeDecodeError: 'ascii' codec can't decode byte 0xef in position 163: ordinal not in range(128)
    Traceback (most recent call last):
      File "/usr/bin/salt", line 10, in <module>
        salt_main()
      File "/usr/lib/python2.6/site-packages/salt/scripts.py", line 349, in salt_main
        client.run()
    

    4、在master机器上面操作#接受所有客户端授权[root@master ~]# salt-key -A

    The following keys are going to be accepted:
    Unaccepted Keys:
    node0l.nulige.com
    Proceed? [n/Y] y
    Key for minion node0l.nulige.com accepted.
    <br>#授权某台机授权<br>[root@master salt]# salt-key -A node0l.nulige.com -y<br>
    #查看主机
    [root@master ~]# salt-key -L
    Accepted Keys:
    node0l.nulige.com
    Denied Keys:
    Unaccepted Keys:
    Rejected Keys:
     
    #在master上面执行命令
    [root@master ~]# salt 'node0l.nulige.com' cmd.run 'ifconfig'
    node0l.nulige.com:
        eth0      Link encap:Ethernet  HWaddr 00:0C:29:9C:BC:75 
                  inet addr:192.168.14.66  Bcast:192.168.14.255  Mask:255.255.255.0
                  inet6 addr: fe80::20c:29ff:fe9c:bc75/64 Scope:Link
                  UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
                  RX packets:26978 errors:0 dropped:0 overruns:0 frame:0
                  TX packets:6178 errors:0 dropped:0 overruns:0 carrier:0
                  collisions:0 txqueuelen:1000
                  RX bytes:32649669 (31.1 MiB)  TX bytes:659601 (644.1 KiB)
         
        lo        Link encap:Local Loopback 
                  inet addr:127.0.0.1  Mask:255.0.0.0
                  inet6 addr: ::1/128 Scope:Host
                  UP LOOPBACK RUNNING  MTU:65536  Metric:1
                  RX packets:0 errors:0 dropped:0 overruns:0 frame:0
                  TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
                  collisions:0 txqueuelen:0
                  RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)
    

    常用命令

    #检查端口

    <em id="__mceDel">[root@master ~]# netstat -lnt
    Active Internet connections (only servers)
    Proto Recv-Q Send-Q Local Address               Foreign Address             State     
    tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN     
    tcp        0      0 192.168.30.151:4505         0.0.0.0:*                   LISTEN     
    tcp        0      0 192.168.30.151:4506         0.0.0.0:*                   LISTEN     
    tcp        0      0 :::22 
    </em>
    

    #测试ping

    [root@master ~]# salt '*' test.ping
    node0l.nulige.com:
        True
    

     #salt-key --help

    [root@localhost ~]# salt-key --help
    Usage: salt-key [options]
    
    Salt key 用于管理认证key
    
    Options:
      --version            显示版本号后退出
      --versions-report    显示程序的所有依赖包版本号,并退出
      -h, --help           帮助信息
      -c CONFIG_DIR, --config-dir=CONFIG_DIR
                           指定配置目录,默认 :/etc/salt/
    
      -q, --quiet          安静模式,不输出信息到控制台
      -y, --yes            对所有询问是否继续,回答yes,默认:false
    
      Logging Options:
                       设置loggin选项会覆盖掉配置文件中对日志的配置.
    
        --log-file=LOG_FILE                
                            指定日志文件路径,默认: /var/log/salt/key.
        --log-file-level=LOG_LEVEL_LOGFILE
                            日志文件等级,可设置下面中的一个值 'all', 'garbage',
                            'trace', 'debug', 'info', 'warning', 'error', 'quiet'.
                            默认: 'warning'.
        --key-logfile=KEY_LOGFILE
                            将所有的输出发送到指定的文件,默认: '/var/log/salt/key'
    
      Output Options:
        配置输出格式
    
        --out=OUTPUT, --output=OUTPUT
                            把salt-key命令的输出信息发送给指定的outputer. 
                    可设置为下面参数值 'no_return', 'virt_query'.
                            'grains', 'yaml', 'overstatestage', 'json', 'pprint',
                            'nested', 'raw', 'highstate', 'quiet', 'key', 'txt',
    
        --out-indent=OUTPUT_INDENT, --output-indent=OUTPUT_INDENT
                            设置输出行缩进的空格数. 
                            负数取消输出缩进编排.仅对使用的outputer有效.
        --out-file=OUTPUT_FILE, --output-file=OUTPUT_FILE
                            把显示输出到指定的文件
        --no-color, --no-colour
                            关闭字体颜色
        --force-color, --force-colour
                            强制开启输出颜色渲染
    
      Actions:
        -l ARG, --list=ARG 
                          打印公钥key. 可设置下面三个值
                    "pre", "un", and "unaccepted" 会显示 不许可/未签名 keys. 
                    "acc" or "accepted"会显示 许可/已签名 keys. 
                    "rej" or "rejected"会显示拒绝的 keys.  
                    "all" 会显示所有 keys.
        -L, --list-all      会显示所有公钥,相当月: "--list all"
        -a ACCEPT, --accept=ACCEPT
                            许可指定的公钥(使用--include-all选项
                            可以指定除了挂起的key外的所有reject状态的公钥)
    
        -A, --accept-all    许可所有pending的公钥
        -r REJECT, --reject=REJECT
                            拒绝指定的公钥 (使用--include-all选项
                            可以指定除了挂起的key外的所有accept状态的公钥)
    
        -R, --reject-all    拒接所有pending的公钥
    
        --include-all         配合 accepting/rejecting 选项使用,指定所有非pending状态的公钥
    
        -p PRINT, --print=PRINT
                            打印指定的公钥
        -P, --print-all     Print all public keys
        -d DELETE, --delete=DELETE
                            根据公钥的名称删除公钥
        -D, --delete-all    删除所有 keys
        -f FINGER, --finger=FINGER
                            打印指定key的指纹信息
        -F, --finger-all    打印所有key的指纹信息
    
      Key 常用选项:
        --gen-keys=GEN_KEYS
                            对生成的key配置设置一个salt使用的名称。
        --gen-keys-dir=GEN_KEYS_DIR
                            设置生成key对的放置目录,默认当前目录。default=.
    
    --keysize=KEYSIZE                   
                    为生成key设置位数, 仅跟--gen-keys选项配合时有效,
                    数值大小必须大于2048,否则会被提升至2048位,默认2048
                            default=2048
    

     4、生产业务场景

    一、已经加入master的主机,需要修改node客户端的主机名称,再加入master,就加入不了。

      在node02.nulige.com客户端上面操作:

    1、hostname node02.nulige.com
    
    2、vi /etc/sysconfig/network
    
    HOSTNAME=node02.nulige.com
    
    3、重启服务
    
    [root@node01 ~]# /etc/init.d/salt-minion restart
    
    4、还是加不进去,因为他还有生成了一个缓存文件
    
    [root@node01 ~]# cd /etc/salt/
    [root@node01 salt]# ll
    总用量 40
    -rw-r----- 1 root root 26374 4月 14 00:06 minion
    drwxr-xr-x 2 root root 4096 4月 13 14:03 minion.d
    -rw-r--r-- 1 root root 17 4月 13 13:59 minion_id
    drwxr-xr-x 3 root root 4096 4月 13 13:59 pki
    
    [root@node01 salt]# cat minion_id
    node0l.nulige.com
    
    原因:
    
    这里有两种情况,一种是生成一个缓存文件,别一种是生成了一个pki的key文件
    
    a、清空缓存文件
    
    [root@node01 salt]# >minion_id
    
    b、查看pki文件下面key文件
    
    [root@node01 salt]# tree pki/
    pki/
    └── minion
    ├── minion_master.pub
    ├── minion.pem
    └── minion.pub
    
    1 directory, 3 files
    
    #删除minion_id和pki文件下面的key
    [root@node01 salt]# rm -rf minion_id pki/
    
    c、再重启服务
    
    [root@node01 salt]# /etc/init.d/salt-minion restart
    
    [root@node01 salt]# ps -ef|grep salt
    
    [root@node01 salt]# /etc/init.d/salt-minion start
    

    在master服务端操作:

    #删除之前加入的客户端名称
    [root@master salt]# salt-key -d node0l.nulige.com -y
    

    测试:

    [root@master salt]# salt 'node0l.nulige.com' test.ping   #有时候会出现没有返回结果的情况,因为网络沿时的问题导致的
    node0l.nulige.com:
        True
    

    查看master端key保存目录

    [root@master master]# ll  /etc/salt/pki/master
    总用量 28
    -r-------- 1 root root 1679 4月  13 13:59 master.pem
    -rw-r--r-- 1 root root  451 4月  13 13:59 master.pub
    drwxr-xr-x 2 root root 4096 4月  13 14:03 minions
    drwxr-xr-x 2 root root 4096 4月  13 13:59 minions_autosign
    drwxr-xr-x 2 root root 4096 4月  13 13:59 minions_denied
    drwxr-xr-x 2 root root 4096 4月  13 14:03 minions_pre
    drwxr-xr-x 2 root root 4096 4月  13 13:59 minions_rejected
    
    [root@master ~]# cd /etc/salt/pki/master/minions
    [root@master minions]# ll
    总用量 4
    -rw-r--r-- 1 root root 451 4月 13 13:59 node0l.nulige.com
    [root@master minions]# cat node0l.nulige.com 
    -----BEGIN PUBLIC KEY-----
    MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxcjP/RWw/SDW6JVd2iUC
    oMLfKQNnK0Aw7b8DXN/C80n8cjz+49qFlQfVmnxYCQn5elys26rMPxZ2e0eobo2x
    IOstAOw+XRhCoWesqV1mpZfOGgY0VcrdCAbffb9HM6na+0uHB21NtM1mC69BodMj
    3959I63KltPcgZ2M1WSqJ+4/RscKHTa5DolRySnMlzH6Gr4yrb1RYrK0qTq9qcoC
    6pMYUTh/PPm1aQ66pXSwYYk5FwqFOicvdzesvIGKenKNwtp3bBaVL/iSzhkXCuF4
    iuQ9TtBe3g5HwSbihuuv5CGCAR3kgxiFc2twMKTx3o708wB+11j/Gkn9h/yMguDH
    SQIDAQAB
    -----END PUBLIC KEY-----
    

      

      

      

      

      

      

      

      

      

      

      

      

      

      

      

      

      

      

  • 相关阅读:
    ASP.NET MVC案例——————拦截器
    Windows Azure Virtual Network (10) 使用Azure Access Control List(ACL)设置客户端访问权限
    Windows Azure Storage (20) 使用Azure File实现共享文件夹
    Windows Azure HandBook (5) Azure混合云解决方案
    Windows Azure Service Bus (6) 中继(Relay On) 使用VS2013开发Service Bus Relay On
    Azure PowerShell (9) 使用PowerShell导出订阅下所有的Azure VM的Public IP和Private IP
    Windows Azure Service Bus (5) 主题(Topic) 使用VS2013开发Service Bus Topic
    Azure China (9) 在Azure China配置CDN服务
    Windows Azure Storage (19) 再谈Azure Block Blob和Page Blob
    Windows Azure HandBook (4) 分析Windows Azure如何处理Session
  • 原文地址:https://www.cnblogs.com/chenice/p/6726068.html
Copyright © 2011-2022 走看看