• Saltstack_实战指南02_各主机Pillar信息指定


    1. 实战项目GitHub地址

    该项目已经放在了GitHub上,地址如下:

    https://github.com/zhanglianghhh/salt-example-lnmp

    2. 主机规划

    3. pillar的整体目录结构

     1 [root@salt150-master pillar]# pwd
     2 /srv/pillar
     3 [root@salt150-master pillar]# ll
     4 total 4
     5 drwxr-xr-x 2 root root  62 Mar 10 17:27 base
     6 drwxr-xr-x 2 root root  83 Mar 10 17:39 prod
     7 -rw-r--r-- 1 root root 183 Mar 10 17:42 top.sls
     8 [root@salt150-master pillar]# tree 
     9 .
    10 ├── base
    11 │   ├── database.sls
    12 │   ├── monitor.sls
    13 │   └── nosql.sls
    14 ├── prod
    15 │   ├── high_available.sls
    16 │   ├── program.sls
    17 │   ├── proxy.sls
    18 │   └── web.sls
    19 └── top.sls
    20 
    21 2 directories, 8 files

    4. Pillar的top.sls 文件信息

     1 [root@salt150-master pillar]# cat top.sls 
     2 base:
     3   '*':
     4     # base 目录
     5     - base.database
     6     - base.nosql
     7     - base.monitor
     8     # prod 目录
     9     - prod.web
    10     - prod.program
    11     - prod.proxy
    12     - prod.high_available

    5. base基础信息

     1 [root@salt150-master base]# pwd
     2 /srv/pillar/base
     3 [root@salt150-master base]# ll
     4 total 12
     5 -rw-r--r-- 1 root root 258 Mar 10 17:27 database.sls
     6 -rw-r--r-- 1 root root 272 Mar 10 17:20 monitor.sls
     7 -rw-r--r-- 1 root root  99 Mar 10 17:25 nosql.sls
     8 [root@salt150-master base]# cat database.sls 
     9 # 数据库信息
    10 # 包含配置文件信息
    11 # 注意和 zabbix pillar 不同 的写法
    12 {% if grains['host'] == 'salt03-web' %}
    13 database_info:
    14   database: mysql
    15   role: master
    16   server-id: 1
    17   read_only: "OFF"
    18 {% elif grains['host'] == 'salt04-web' %}
    19 database_info:
    20   database: mysql
    21   role: slave
    22   server-id: 2
    23   read_only: "ON"
    24 {% elif grains['host'] == 'salt05-web' %}
    25 database_info:
    26   database: mysql
    27   role: slave
    28   server-id: 3
    29   read_only: "ON"
    30 {% elif grains['host'] == 'salt150-master' %}
    31 database_info:
    32   database: mariadb
    33   read_only: "OFF"
    34 {% endif %}
    35 
    36 [root@salt150-master base]# cat nosql.sls 
    37 # nosql 信息
    38 {% if grains['host'] == 'salt05-web' %}
    39 nosql_info:
    40   nosql: memcached
    41 {% endif %}
    42 
    43 [root@salt150-master base]# cat monitor.sls 
    44 # 其中 salt150-maste 172.16.1.150 机器,不仅是 zabbix 客户端,还是服务端
    45 # 只包含 zabbix 的属性 【服务端 客户端】
    46 monitor_info:
    47   monitor:
    48     {% if grains['host'] == 'salt150-master' %}
    49     zabbix_server: True
    50     {% endif %}
    51     zabbix_agent: True
    52     zabbix_server_hostname: 'salt150-master'

    6. prod业务组件信息

     1 [root@salt150-master prod]# pwd
     2 /srv/pillar/prod
     3 [root@salt150-master prod]# ll
     4 total 16
     5 -rw-r--r-- 1 root root 326 Mar 10 17:39 high_available.sls
     6 -rw-r--r-- 1 root root 174 Mar 10 17:34 program.sls
     7 -rw-r--r-- 1 root root 148 Mar 10 17:38 proxy.sls
     8 -rw-r--r-- 1 root root 160 Mar 10 17:33 web.sls
     9 [root@salt150-master prod]# cat web.sls 
    10 # web 服务器
    11 {% if grains['host'] == 'salt03-web' or grains['host'] == 'salt04-web' or grains['host'] == 'salt05-web' %}
    12 web_info:
    13   web: nginx
    14 {% endif %}
    15 
    16 [root@salt150-master prod]# cat program.sls 
    17 # 使用的编程语言
    18 {% if grains['host'] == 'salt03-web' or grains['host'] == 'salt04-web' or grains['host'] == 'salt05-web' %}
    19 program_info:
    20   program: php
    21 {% endif %}
    22 
    23 [root@salt150-master prod]# cat proxy.sls 
    24 # 负载均衡服务器
    25 {% if grains['host'] == 'salt01-haproxy' or grains['host'] == 'salt02-haproxy' %}
    26 proxy_info:
    27   proxy: haproxy
    28 {% endif %}
    29 
    30 [root@salt150-master prod]# cat high_available.sls 
    31 # 高可用keepalived 的 pillar 信息
    32 {% if grains['host'] == 'salt01-haproxy' %}
    33 high_available_info:
    34   high_available: keepalived
    35   high_state: MASTER
    36   high_priority: 100
    37 {% elif grains['host'] == 'salt02-haproxy' %}
    38 high_available_info:
    39   high_available: keepalived
    40   high_state: BACKUP
    41   high_priority: 50
    42 {% endif %}

    7. pillar信息生效

     1 [root@salt150-master pillar]# salt '*' saltutil.refresh_pillar
     2 salt02-haproxy:
     3     True
     4 salt01-haproxy:
     5     True
     6 salt05-web:
     7     True
     8 salt03-web:
     9     True
    10 salt150-master:
    11     True
    12 salt04-web:
    13     True

    8. pillar信息查看

      1 [root@salt150-master pillar]# salt '*' pillar.items  
      2 salt05-web:
      3     ----------
      4     database_info:
      5         ----------
      6         database:
      7             mysql
      8         read_only:
      9             ON
     10         role:
     11             slave
     12         server-id:
     13             3
     14     monitor_info:
     15         ----------
     16         monitor:
     17             ----------
     18             zabbix_agent:
     19                 True
     20             zabbix_server_hostname:
     21                 salt150-master
     22     nosql_info:
     23         ----------
     24         nosql:
     25             memcached
     26     program_info:
     27         ----------
     28         program:
     29             php
     30     web_info:
     31         ----------
     32         web:
     33             nginx
     34 salt02-haproxy:
     35     ----------
     36     high_available_info:
     37         ----------
     38         high_available:
     39             keepalived
     40         high_priority:
     41             50
     42         high_state:
     43             BACKUP
     44     monitor_info:
     45         ----------
     46         monitor:
     47             ----------
     48             zabbix_agent:
     49                 True
     50             zabbix_server_hostname:
     51                 salt150-master
     52     proxy_info:
     53         ----------
     54         proxy:
     55             haproxy
     56 salt03-web:
     57     ----------
     58     database_info:
     59         ----------
     60         database:
     61             mysql
     62         read_only:
     63             OFF
     64         role:
     65             master
     66         server-id:
     67             1
     68     monitor_info:
     69         ----------
     70         monitor:
     71             ----------
     72             zabbix_agent:
     73                 True
     74             zabbix_server_hostname:
     75                 salt150-master
     76     program_info:
     77         ----------
     78         program:
     79             php
     80     web_info:
     81         ----------
     82         web:
     83             nginx
     84 salt04-web:
     85     ----------
     86     database_info:
     87         ----------
     88         database:
     89             mysql
     90         read_only:
     91             ON
     92         role:
     93             slave
     94         server-id:
     95             2
     96     monitor_info:
     97         ----------
     98         monitor:
     99             ----------
    100             zabbix_agent:
    101                 True
    102             zabbix_server_hostname:
    103                 salt150-master
    104     program_info:
    105         ----------
    106         program:
    107             php
    108     web_info:
    109         ----------
    110         web:
    111             nginx
    112 salt01-haproxy:
    113     ----------
    114     high_available_info:
    115         ----------
    116         high_available:
    117             keepalived
    118         high_priority:
    119             100
    120         high_state:
    121             MASTER
    122     monitor_info:
    123         ----------
    124         monitor:
    125             ----------
    126             zabbix_agent:
    127                 True
    128             zabbix_server_hostname:
    129                 salt150-master
    130     proxy_info:
    131         ----------
    132         proxy:
    133             haproxy
    134 salt150-master:
    135     ----------
    136     database_info:
    137         ----------
    138         database:
    139             mariadb
    140         read_only:
    141             OFF
    142     monitor_info:
    143         ----------
    144         monitor:
    145             ----------
    146             zabbix_agent:
    147                 True
    148             zabbix_server:
    149                 True
    150             zabbix_server_hostname:
    151                 salt150-master

    9. 说明

    1 其他的就不单独写文章了,都是之前讲解过的。
    2 该实战项目中有些细节补充,结合之前所学,即可达到整体实战目的。项目实战代码请参见开头的GitHub地址。
    3 如果阅读后有些地方不清楚,可以结合之前的《Saltstack_使用指南_系列》进行参考。

  • 相关阅读:
    BFS模版程序
    7.3 GROUP BY的“新”功能
    《ASP.NET》数据绑定—DropDownList、ListBox
    GPS NEMA 0183协议
    使用Microsoft.Office.Interop.Excel时,64位问题
    HDU 1848(sg博弈) Fibonacci again and again
    Codeforces 559A Gerald's Hexagon 数三角形
    移动mm 话费支付接入过程(ane)
    Android怎样实现毛玻璃效果之Android高级模糊技术
    ECLIPSE android 布局页面文件出错故障排除Exception raised during rendering: java.lang.System.arraycopy([CI[CII)V
  • 原文地址:https://www.cnblogs.com/zhanglianghhh/p/10952198.html
Copyright © 2020-2023  润新知