首页 > 其他 > 详细

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

时间:2019-09-11 17:57:02      阅读:106      评论:0      收藏:0      [点我收藏+]

 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;
        }

    }

}

 

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

原文:https://www.cnblogs.com/zxw-xxcsl/p/11505528.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!