zoukankan      html  css  js  c++  java
  • 003-SaltStack入门篇之远程执行和配置管理

    复制代码
    第一条命令:
    [root@linux-node1 master]# salt '*' test.ping
    linux-node2.example.com:
        True
    linux-node1.example.com:
        True
    
    说明:
    salt:命令
    *:匹配目标,使用通配符
    test.ping:模块.方法   
    #此处的ping并非ICMP的ping命令,而是master向minion发送了一个包,minion收到了,返回一个True
    
    [root@linux-node1 ~]# salt '*' cmd.run 'uptime'
    linux-node1.example.com:
         11:51:47 up 21 days,  5:57,  2 users,  load average: 0.04, 0.03, 0.05
    linux-node2.example.com:
         11:51:47 up 12 days,  6:26,  2 users,  load average: 0.00, 0.03, 0.05
    [root@linux-node1 ~]# salt '*' cmd.run 'w'
    linux-node1.example.com:
         11:52:11 up 21 days,  5:58,  2 users,  load average: 0.03, 0.02, 0.05
        USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
        root     pts/2    192.168.56.1     06Jan18  6:51   3.27s  3.27s -bash
        root     pts/3    192.168.56.1     06Jan18  3.00s  6:17   0.46s /usr/bin/python /usr/bin/salt * cmd.run w
    linux-node2.example.com:
         11:52:11 up 12 days,  6:26,  2 users,  load average: 0.00, 0.03, 0.05
        USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
        root     pts/1    192.168.56.1     Mon10   21:59m  0.28s  0.28s -bash
        root     pts/3    192.168.56.1     06Jan18  6:59   4.82s  0.02s -bash
    [root@linux-node1 ~]# salt '*' cmd.run 'df -h'
    linux-node2.example.com:
        Filesystem               Size  Used Avail Use% Mounted on
        /dev/mapper/centos-root   18G   17G  1.1G  95% /
        devtmpfs                 905M     0  905M   0% /dev
        tmpfs                    916M   12K  916M   1% /dev/shm
        tmpfs                    916M   41M  876M   5% /run
        tmpfs                    916M     0  916M   0% /sys/fs/cgroup
        /dev/sda1                497M  171M  326M  35% /boot
        tmpfs                    184M     0  184M   0% /run/user/0
        /dev/loop0               4.1G  4.1G     0 100% /mnt
    linux-node1.example.com:
        Filesystem               Size  Used Avail Use% Mounted on
        /dev/mapper/centos-root   18G   11G  7.2G  60% /
        devtmpfs                 905M     0  905M   0% /dev
        tmpfs                    916M   28K  916M   1% /dev/shm
        tmpfs                    916M   57M  860M   7% /run
        tmpfs                    916M     0  916M   0% /sys/fs/cgroup
        /dev/sda1                497M  171M  326M  35% /boot
        tmpfs                    184M     0  184M   0% /run/user/0
    
    [root@linux-node1 ~]# netstat -tulnp|grep minion
    minion不需要监听端口,说明minion需要主动去链接master,master监听端口为4505、4506
    [root@linux-node1 ~]# netstat -tulnp|grep python
    tcp        0      0 0.0.0.0:4505            0.0.0.0:*               LISTEN      37039/python        
    tcp        0      0 0.0.0.0:4506            0.0.0.0:*               LISTEN      37045/python       
    
    #master和minion默认使用一个叫zeroMQ进行并行通信,zeroMQ属于底层(传输层)的消息队列,
    #相当于一个发布与订阅系统,比如你订了一个教室听课,那么所有订了此间课室的人都能听到老师的课程。
    
    [root@linux-node1 ~]# lsof -ni:4505
    COMMAND     PID USER   FD   TYPE  DEVICE SIZE/OFF NODE NAME
    salt-mast 37039 root   16u  IPv4 3394584      0t0  TCP *:4505 (LISTEN)
    salt-mast 37039 root   18u  IPv4 3412804      0t0  TCP 192.168.56.11:4505->192.168.56.12:43126 (ESTABLISHED)
    salt-mast 37039 root   19u  IPv4 3412811      0t0  TCP 192.168.56.11:4505->192.168.56.11:38262 (ESTABLISHED)
    salt-mini 39623 root   27u  IPv4 3412810      0t0  TCP 192.168.56.11:38262->192.168.56.11:4505 (ESTABLISHED)
    复制代码

    查看4505端口,我们可以发现salt-minion使用一个随机端口通过4505端口与salt-master通信,master使用4505端口发送指定到salt-minion上进行执行。而4606端口是用于接收数据的返回,用于zeroMQ的请求与响应的系统。

    可以通过date命令查看salt的并行通信,可以看到是同时返回
    [root@linux-node1 ~]# salt '*' cmd.run 'date'
    linux-node2.example.com:
        Tue Jan 16 12:01:52 CST 2018
    linux-node1.example.com:
        Tue Jan 16 12:01:52 CST 2018

    2.配置管理

    (1)saltstack是使用YAML的格式作为管理文件的格式,下面的YAML的样例:

    复制代码
    YAML样例:
    house:
    family:
    name: Doe
    parents:
      - John
      - Jane
    children:
      - Paul
      - Mark
      - Simone
    address:
    number: 34
    street: Main Street
    city: Nowheretown
    zipcode: 12345
    复制代码

    (2)YAML的规则:

    ①缩进表示层级关系,默认缩进是2个空格、4个空格、6个空格 
    ②冒号后面有个空格,以冒号结尾可以有空格,可以无空格 
    ③短横线代表一个列表,短横线后面有个空格

    (3)定义yaml文件放的位置:salt内置一个fileserver,在master文件配置:file_roots

    复制代码
    [root@linux-node1 ~]# vim /etc/salt/master     #定义yaml文件放的位置,base环境是必备的
    file_roots:
      base:
        - /srv/salt/base
      dev:
        - /srv/salt/dev
      test:
        - /srv/salt/test
      prod:
        - /srv/salt/prod
    [root@linux-node1 ~]# mkdir -p /srv/salt/{base,dev,test,prod}
    [root@linux-node1 ~]# systemctl restart salt-master
    [root@linux-node1 ~]# cd /srv/salt/base/
    [root@linux-node1 base]# mkdir web
    [root@linux-node1 web]# vim apache.sls    #编写安装apache的YAML文件
    apache-install:
      pkg.installed:---------->模块pkg,方法installed,会匹配操作系统进行选择安装的方法
        - name: httpd--------->装的包的名称
    
    apache-service:----------->id要唯一
      service.running:-------->状态模块service,running为模块的方法
        - name: httpd--------->管理服务的名称
        - enable: True-------->设置开机自动启动
    
    [root@linux-node1 ~]# salt 'linux-node2.example.com' state.sls web.apache
    #默认是搜索base目录下 #如果apache.sls的位置是在prod目录下,需要在后面增加saltenv=prod #salt 'linux-node2.example.com' state.sls web.apache saltenv=prod 实现自动化安装,需要写一个top.sls top.sls是state系统的入口文件,它在大规模配置管理工作中负责制定哪些设备调用哪些states.sls文件。top.sls入口文件不是必须的,如果只需要简单地对某台机器进行配置管理工作,我们可以直接使用state.sls命令来指定states.sls文件即可。 [root@linux-node1 base]# pwd /srv/salt/base [root@linux-node1 base]# vim top.sls #必须在base环境下写 base: 'linux-node1.example.com': - web.apache 'linux-node2.example.com': - web.apache **************************** 如果只有一个任务在全部机子上执行,也可以: base: '*' - web.apache **************************** [root@linux-node1 ~]# salt '*' state.highstate #去top.sls读取,*代表通知哪些主机 [root@linux-node1 ~]# salt '*' state.highstate test=True #在不想影响当前主机的运行情况,可以使用test=True 进行预测试
    复制代码
  • 相关阅读:
    IE6 select穿透问题(div 定位无法遮盖select)!
    NYOJ 35 表达式求值
    网络运营商名称显示&SIM名称显示
    Android开发四大组件之Service(具体解释篇)
    RabbitMQ之消息确认机制(事务+Confirm)
    rabbitmq的发布确认和事务
    java finally return
    用 consul + consul-template + registrator + nginx 打造真正可动态扩展的服务架构
    consul vs etcd3
    LinkedIn实时低延迟数据抓取系统Databus开源
  • 原文地址:https://www.cnblogs.com/xuefy/p/11498347.html
Copyright © 2011-2022 走看看