salt manage states

salt 配置管理

  1. salt states说明

    1
    2
    States是SaltStack中的配置语言,在日常进行配置管理时需要编写大量的States文件.
    比如:我们需要安装一个包,然后管理一个配置文件,最后保证某个服务正常运行.这里就需要我们编写一些states sls文件(描述状态配置的文件)去描述和实现我们的功能.这里需要说明的是编写的states sls文件都是YAML语法.当然states sls文件也支持使用Python语言来编写.
  2. 查看minion所有states列表

    1
    [root@salt-master ~]# salt 'salt-minion-187' sys.list_state_modules
  3. 查看指定states的所有function

    1
    [root@salt-master ~]# salt 'salt-minion-187' sys.list_state_functions user
  4. 查看指定states用法

    1
    [root@salt-master ~]# salt 'salt-minion-187' sys.state_doc user.present
  5. 了解states

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    1.使用states的流程
    * 编写top.sls文件(非必须)
    * 编写states.sls文件

    top.sls是states系统的入口文件,它在大规模配置管理工作中负责指定哪些设备调用哪些states.sls文件
    如果我们只需简单对某台机器进行配置管理工作,我们可以直接使用state.sls命令指定states.sls文件即可

    2.查看file_roots位置
    [root@salt-master ~]# cat /etc/salt/master
    file_roots:
    base:
    - /mnt/data/salt.repo/salt/base

    3.新建一个one.sls state文件
    [root@salt-master ~]# vim /mnt/data/salt.repo/salt/base/one.sls
    /tmp/foo.conf:
    file.managed:
    - source: salt://foo.conf
    - user: root
    - group: root
    - mode: 644
    - backup: minion
    [root@salt-master ~]# echo "SaltStack Books" |tee /mnt/data/salt.repo/salt/base/foo.conf

    4.对minion进行配置部署
    [root@salt-master ~]# salt 'salt-minion-187' state.sls one
    salt-minion-187:
    ----------
    ID: /tmp/foo.conf
    Function: file.managed
    Result: True
    Comment: File /tmp/foo.conf updated
    Started: 10:33:26.113398
    Duration: 36.989 ms
    Changes:
    ----------
    diff:
    New file
    mode:
    0644

    Summary for salt-minion-187
    ------------
    Succeeded: 1 (changed=1)
    Failed: 0
    ------------
    Total states run: 1
    Total run time: 36.989 ms

    5.在states的工作目录下新建top.sls文件
    [root@salt-master ~]# vim /mnt/data/salt.repo/salt/base/top.sls
    base:
    '*':
    - one

    6.通过top.sls执行
    [root@salt-master ~]# salt 'salt-minion-187' state.apply saltenv=base test=True
    或者:
    [root@salt-master ~]# salt 'salt-minion-187' state.apply saltenv=base
    或者:
    [root@salt-master ~]# salt 'salt-minion-187' state.apply
    salt-minion-187:
    ----------
    ID: /tmp/foo.conf
    Function: file.managed
    Result: True
    Comment: File /tmp/foo.conf is in the correct state
    Started: 10:42:49.669735
    Duration: 33.76 ms
    Changes:

    Summary for salt-minion-187
    ------------
    Succeeded: 1
    Failed: 0
    ------------
    Total states run: 1
    Total run time: 33.760 ms