zoukankan      html  css  js  c++  java
  • saltstack

    1.安装

    1.安装epel
    
    2.安装salt
    服务端:yum install salt-master -y
    客户端:yum install salt-minion -y
    
    3.配置
    vim /etc/salt/minion
    ---------------------
    master:salt   //master的主机名,需要在hosts里面写上ip
    id:

    2.master端命令

    salt-key -L                  --列出所有的minion主机(包括已经接受公钥的和未接受的)
    ----------------------------------- Accepted Keys: Denied Keys: Unaccepted Keys: server01.lo server02.lo Rejected Keys:
    salt-key -a server01.lo            --添加新的minion主机公钥,-A是添加所有未添加的主机
    ------------------------------------------- The following keys are going to be accepted: Unaccepted Keys: server01.lo Proceed
    ? [n/Y] y Key for minion server01.lo accepted
    salt '*' test.ping                  --监测所有的minion主机
    -------------------------------------------- server01.lo: True server02.lo: True
    salt-key -d server03.lo            --删除minion主机

    3.minion主机修改主机名:

    修改完主机名之后需要以下操作:
    minion主机主机:
    1.删除/etc/salt目录下minion_id和pki/
    2.重启salt-minion
    master主机:
    1.删除原来的主机名:salt-key -d server03.lo
    2.重新扫描minion主机:salt-key -L  
    3.重新添加minion主机:salt-key -a -y
    4.测试:salt '*' test.ping

    4.master主机迁移:

    1.准备一台新的主机,安装好salt-master
    2.将旧master主机/etc/salt下pki目录scp至新主机/etc/salt下
    3.在旧主机上批量修改minion主机的hosts文件:salt '*' cmd.run "sed -i 's/175/172/' /etc/hosts"
    4.查看minion主机的hosts文件是否修改正确:salt '*' cmd.run 'grep salt /etc/hosts'
    5.重启minion主机的minion服务: salt '*' service.restart salt-minion
    6.启动新master主机的服务:/etc/init.d/salt-master start
    7.在新master主机上测试minion主机:salt '*' test.ping

    5.常用模块:

    cp模块(实现远程文件、目录的复制,以及下载URL文件等操作):
    cp的根目录是:/srv/salt
    salt '*' cp.get_file salt://file1 /tmp/file1        --目标目录也要写上文件名
    salt '*' cp.get_dir salt://dir1 /tmp/            --直接写目录名字,无需加dir1
    salt '*' cp.get_url http://mirrors.aliyun.com/epel/6/x86_64/epel-release-6-8.noarch.rpm /tmp/epel-release-6-8.noarch.rpm  --目标目录也要写上文件名
    cmd模块(实现远程的命令行调用执行):
    salt '*' cmd.run 'netstat -ntlp'
    cron模块(实现被控主机的crontab操作):
    为指定的被控主机、root用户添加crontab信息
    salt '*' cron.set_job root '*/5' '*' '*' '*' '*' 'date >/dev/null 2>&1'
    salt '*' cron.raw_cron root     --查看cron

     删除指定的被控主机、root用户的crontab信息
      salt '*' cron.rm_job root 'date >/dev/null 2>&1'
      salt '*' cron.raw_cron root

    dnsutil模块(实现被控主机通用DNS操作):
    为被控主机添加指定的hosts主机配置项
    salt '*' dnsutil.hosts_append /etc/hosts 192.168.100.110 www.aasd.com
    file模块(被控主机文件常见操作,包括文件读写、权限、查找、校验等):
    salt '*' file.get_sum /etc/resolv.conf md5
    salt '*' file.stats /etc/resolv.conf
    network模块(返回被控主机网络信息):
    salt '*' network.ip_addrs
    salt '*' network.interfaces
    pkg包管理模块(被控主机程序包管理,如yum、apt-get等)
    salt '*' pkg.install nmap
    salt '*' pkg.file_list nmap
    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

     6.主机分组:

    对目标服务器分组有以下七种方式:
    G -- 针对 Grains 做单个匹配,例如:G@os:Ubuntu E -- 针对 minion 针对正则表达式做匹配,例如:E@webd+.(dev|qa|prod).loc P -- 针对 Grains 做正则表达式匹配,例如:P@os:(RedHat|Fedora|CentOS) L -- 针对 minion 做列表匹配,例如:L@minion1.example.com,minion3.domain.com or bl*.domain.com I -- 针对 Pillar 做单个匹配,例如:I@pdata:foobar S -- 针对子网或是 IP 做匹配,例如:S@192.168.1.0/24 or S@192.168.1.100 R -- 针对客户端范围做匹配,例如: R@%foo.bar
    分组测试:
    vim /etc/salt/master
    nodegroups: # group1: 'L@foo.domain.com,bar.domain.com,baz.domain.com and bl*.domain.com' # group2: 'G@os:Debian and foo.domain.com' test1: 'E@server*'
    [root@server05 salt]# salt -N test1 test.ping
    server01.lo:
        True
    server02.lo:
        True
    

    7.文件同步系统

    1.开启文件系统
    vim /etc/salt/master file_roots:
    base: - /srv/salt --此处指定基目录
    [root@server05 salt]# cat top.sls 
    base:
      '*':
        - test1
      'server01.lo':
        - test2
    [root@server05 salt]# cat test1.sls 
    /tmp/test1.sh:
      file.managed:
        - source: salt://test_dir1/test1.sh
        - user: root
        - group: root
        - mode: 600
    [root@server05 salt]# cat test2.sls 
    /tmp/test2.sh:
      file.managed:
        - source: salt://test_dir1/test2.sh
        - user: root
        - group: root
        - mode: 600
    salt '*' state.highstate  --执行所有的配置文件
    salt '*' state.sls test2 --执行某个子配置文件,还可以指定主机,也可以用*表示所有主机

     8.分布式

    思路:minion主机的salt地址指向代理主机,代理主机再指到(syndic_master地址)master,minion主机和master主机的联系要断开

    #syndic_master: masterofmaster
    syndic_master: 192.168.100.175
    
    # This is the 'ret_port' of the MasterOfMaster:
    #syndic_master_port: 4506
    
    # PID file of the syndic daemon:
    #syndic_pidfile: /var/run/salt-syndic.pid
    
    # LOG file of the syndic daemon:
    #syndic_log_file: syndic.log
    syndic_log_file: /var/log/salt/syndic.log

    分布式还有诸多问题,有待研究

      

      

  • 相关阅读:
    SDUT2389Ballot evaluation
    POJ2941 SDUT2371Homogeneous squares
    SDUT1570 C旅行
    应用jQuery实现表格数据的动态添加与统计
    抢火车票利器:分享一个抓取火车票转让信息的小程序
    10款精选的用于构建良好易用性网站的jQuery插件
    数据库拷贝的问题
    sqlserver 2008手工修改表结构,表不能保存的问题与解决方法
    mysql 1067错误的处理
    40个有用的jQuery技术和教程
  • 原文地址:https://www.cnblogs.com/vijayfly/p/5543165.html
Copyright © 2011-2022 走看看