• saltstack-8 pillar、grains、state综合应用


     1、mastr配置文件配置分组:

    编辑配置文件:/etc/salt/

     配置分组,供后续pillar判断参数使用

    nodegroups:
      web1groups: 'L@db_01'
      web2groups: 'L@db_02'

    2、配置pillar

    /srv/pillar/top.sls

    base:
      web1groups:
        - match: nodegroup
        - web1server
      web2groups:
        - match: nodegroup
        - web2server

    master配置的分组web1groups和web2groups参数,分别对应配置下的文件名(web1server.sls和web2server.sls)

    /srv/pillar/web1server.sls

    nginx:
      root: /wwww

    /srv/pillar/web2server.sls

    nginx:
      root: /data

     3、配置grains的max_open_file

    /srv/salt/_grains/NginxGrins.py

    import os, sys, commands
    
    def NginxGrains():
        re = {}
        max_open_file = 65536
        try:
            getulimit = commands.getstatusoutput('source /etc/profile; ulimit -n')
        except Exception , e:
            pass
        if getulimit[0] == 0:
            max_open_file = getulimit[1]
        
        re['max_open_file'] = max_open_file
        
        return re
    NginxGrains()

    配置过程中,出现问题,可以参考:saltstack-5 grainx组件

    4、state配置

    /srv/salt/top.sls

    base:
      '*':
        - nginx

    /srv/salt/nginx.sls

    nginx:
      pkg:
        - installed
      file.managed:
        - source: salt://nginx//nginx.conf
        - name: /etc/nginx/nginx.conf
        - user: root
        - group: root
        - mode: 644
        - template: jinja
    
      service.running:
    #    - enable: True
        - reload: True
        - watch:
          - file: /etc/nginx/nginx.conf
          - pkg: nginx

     

     5、执行结果:

    db_01:
    ----------
              ID: nginx
        Function: pkg.installed
          Result: True
         Comment: The following packages were installed/updated: nginx
         Started: 21:01:35.392168
        Duration: 78651.537 ms
         Changes:   
                  ----------
                  nginx:
                      ----------
                      new:
                          1.10.3-1.el6
                      old:
                  nginx-all-modules:
                      ----------
                      new:
                          1.10.3-1.el6
                      old:
                  nginx-mod-http-geoip:
                      ----------
                      new:
                          1.10.3-1.el6
                      old:
                  nginx-mod-http-image-filter:
                      ----------
                      new:
                          1.10.3-1.el6
                      old:
                  nginx-mod-http-perl:
                      ----------
                      new:
                          1.10.3-1.el6
                      old:
                  nginx-mod-http-xslt-filter:
                      ----------
                      new:
                          1.10.3-1.el6
                      old:
                  nginx-mod-mail:
                      ----------
                      new:
                          1.10.3-1.el6
                      old:
                  nginx-mod-stream:
                      ----------
                      new:
                          1.10.3-1.el6
                      old:
    ----------
              ID: nginx
        Function: file.managed
            Name: /etc/nginx/nginx.conf
          Result: True
         Comment: File /etc/nginx/nginx.conf updated
         Started: 21:02:54.046159
        Duration: 346.353 ms
         Changes:   
                  ----------
                  diff:
                      ---  
                      +++  
                      @@ -1,14 +1,21 @@
                      +#version 1.1.4
                       # For more information on configuration, see:
                       #   * Official English Documentation: http://nginx.org/en/docs/
                       #   * Official Russian Documentation: http://nginx.org/ru/docs/
                       
                      -user nginx;
                      -worker_processes auto;
                      -error_log /var/log/nginx/error.log;
                      -pid /var/run/nginx.pid;
                      +user              nginx;
                      +worker_processes  1;
                       
                      -# Load dynamic modules. See /usr/share/nginx/README.dynamic.
                      -include /usr/share/nginx/modules/*.conf;
                      +worker_cpu_affinity 1000 0100 0010 0001;
                      +
                      +worker_rlimit_nofile 1024;
                      +
                      +error_log  /var/log/nginx/error.log;
                      +#error_log  /var/log/nginx/error.log  notice;
                      +#error_log  /var/log/nginx/error.log  info;
                      +
                      +pid        /var/run/nginx.pid;
                      +
                       
                       events {
                           worker_connections  1024;
                      @@ -16,23 +23,51 @@
                       
                       
                       http {
                      +    include       /etc/nginx/mime.types;
                      +    default_type  application/octet-stream;
                      +
                           log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                                             '$status $body_bytes_sent "$http_referer" '
                                             '"$http_user_agent" "$http_x_forwarded_for"';
                       
                           access_log  /var/log/nginx/access.log  main;
                       
                      -    sendfile            on;
                      -    tcp_nopush          on;
                      -    tcp_nodelay         on;
                      -    keepalive_timeout   65;
                      -    types_hash_max_size 2048;
                      +    sendfile        on;
                      +    #tcp_nopush     on;
                       
                      -    include             /etc/nginx/mime.types;
                      -    default_type        application/octet-stream;
                      +    #keepalive_timeout  0;
                      +    keepalive_timeout  75;
                       
                      -    # Load modular configuration files from the /etc/nginx/conf.d directory.
                      -    # See http://nginx.org/en/docs/ngx_core_module.html#include
                      -    # for more information.
                      -    include /etc/nginx/conf.d/*.conf;
                      +    #gzip  on;
                      +    
                      +    # Load config files from the /etc/nginx/conf.d directory
                      +    # The default server is in conf.d/default.conf
                      +    #include /etc/nginx/conf.d/*.conf;
                      +    server {
                      +        listen       80 default_server;
                      +        server_name  _;
                      +
                      +        #charset koi8-r;
                      +
                      +        #access_log  logs/host.access.log  main;
                      +
                      +        location / {
                      +            root   /wwww;
                      +            index  index.html index.htm;
                      +        }
                      +
                      +        error_page  404              /404.html;
                      +        location = /404.html {
                      +            root   /usr/share/nginx/html;
                      +        }
                      +
                      +        # redirect server error pages to the static page /50x.html
                      +        #
                      +        error_page   500 502 503 504  /50x.html;
                      +        location = /50x.html {
                      +            root   /usr/share/nginx/html;
                      +        }
                      +
                      +    }
                      +
                       }
    ----------
              ID: nginx
        Function: service.running
          Result: True
         Comment: Started Service nginx
         Started: 21:02:54.395601
        Duration: 202.246 ms
         Changes:   
                  ----------
                  nginx:
                      True
    
    Summary for db_01
    ------------
    Succeeded: 3 (changed=3)
    Failed:    0
    ------------
    Total states run:     3
    Total run time:  79.200 s

    6、配置文件模板

    /srv/salt/nginx/nginx.conf

    配置文件中:

    1、使用{{ grains['num_cpus'] }}获取cpu的数量;

    2、{{ grains['max_open_file'] }}获取最大的打开文件数;

    3、{{ pillar['nginx']['root'] }}获取url路径,pillar又使用分组来判断获取参数;

    #version 1.1.4
    # For more information on configuration, see:
    #   * Official English Documentation: http://nginx.org/en/docs/
    #   * Official Russian Documentation: http://nginx.org/ru/docs/
    
    user              nginx;
    worker_processes  {{ grains['num_cpus'] }};
    {% if grains['num_cpus'] == 2 %}
    worker_cpu_affinity 01 10;
    {% elif grains['num_cpus'] == 4 %}
    worker_cpu_affinity 1000 0100 0010 0001;
    {% elif grains['num_cpus'] >= 8 %}
    worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000;
    {% else %}
    worker_cpu_affinity 1000 0100 0010 0001;
    {% endif %}
    worker_rlimit_nofile {{ grains['max_open_file'] }};
    
    error_log  /var/log/nginx/error.log;
    #error_log  /var/log/nginx/error.log  notice;
    #error_log  /var/log/nginx/error.log  info;
    
    pid        /var/run/nginx.pid;
    
    
    events {
        worker_connections  {{ grains['max_open_file'] }};
    }
    
    
    http {
        include       /etc/nginx/mime.types;
        default_type  application/octet-stream;
    
        log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                          '$status $body_bytes_sent "$http_referer" '
                          '"$http_user_agent" "$http_x_forwarded_for"';
    
        access_log  /var/log/nginx/access.log  main;
    
        sendfile        on;
        #tcp_nopush     on;
    
        #keepalive_timeout  0;
        keepalive_timeout  75;
    
        #gzip  on;
        
        # Load config files from the /etc/nginx/conf.d directory
        # The default server is in conf.d/default.conf
        #include /etc/nginx/conf.d/*.conf;
        server {
            listen       80 default_server;
            server_name  _;
    
            #charset koi8-r;
    
            #access_log  logs/host.access.log  main;
    
            location / {
                root   {{ pillar['nginx']['root'] }};
                index  index.html index.htm;
            }
    
            error_page  404              /404.html;
            location = /404.html {
                root   /usr/share/nginx/html;
            }
    
            # redirect server error pages to the static page /50x.html
            #
            error_page   500 502 503 504  /50x.html;
            location = /50x.html {
                root   /usr/share/nginx/html;
            }
    
        }
    
    }
  • 相关阅读:
    Jmeter聚合报告、
    Jmeter中控件基本概念+工具使用系列(接口自动化、性能测试)
    PhpStorm创建Drupal模块项目开发教程(3)
    PhpStorm创建Drupal模块项目开发教程(2)
    PhpStorm创建Drupal模块项目开发教程
    IntelliJ IDEA 发布13版本——创造java奇迹
    图文解说PhpStorm 7.0版本新增内置工具
    图文解说PhpStorm 7.0版本语法着色
    图文解说PhpStorm 7.0版本支持PHP 5.5
    ReSharper 8.1支持TypeScript语言之代码检查特征
  • 原文地址:https://www.cnblogs.com/zxw-xxcsl/p/11505528.html
Copyright © 2020-2023  润新知