salt基础

Salt命令由三个主要部分构成:

salt '<target>' <function> [arguments]

模拟执行(Dry run):

salt '*' state.highstate test=True -v

目标匹配有以下几种方法

-E, –pcre 正则匹配

salt -E 'Min*' test.ping

-L, –list 列表匹配

salt -L Minion,Minion1 test.ping

-G, –grain grains匹配

salt -G 'os:MacOS' test.ping

–grain-pcre grains加正则匹配
-N, –nodegroup 组匹配(groups是我们在master配置文件
中定义的组名称。)

salt -N groups test.ping

-R, –range 范围匹配
-C, –compound 综合匹配(指定多个匹配)

salt -C 'G@os:MacOS or L@Minion1'

-I, –pillar pillar值匹配

salt -I 'key:value' test.ping

-S, –ipcidr minions网段地址匹配

salt -S '192.168.1.0/24' test.ping

grains

查看系统grains

salt 'Minion' sys.list_functions grains

通过Minion配置文件定义Grains

SaltStack@Minion: cat /etc/minion.d/grains.conf
grains:
    roles:
        - webserver
        - memcache
    deployment: datacenter4
    cabinet: 13
    cab_u: 14-15

重启后去master上查看

salt 'Minion' grains.item roles

配置管理从这里开始

States是SaltStack中的配置语言,states sls文件使用YAML语法。

语法规则:

  1. 两个空格缩进,不要使用tabs
  2. 想要表示列表项,使用一个短横杠加一个空格
  3. 冒号后面都有一个空格(表示路径的除外)

在srv/salt中编写,位置取决于file_roots配置

基本示例

创建一个目录
create my_new_directory:
 file.directory:
   - name: /opt/my_new_directory
   - user: root
   - group: root
   - mode: 755

执行,.sls不要写,如果在目录下,将目录与文件用’.’隔开,如: 将httpd/apache.sls 写为httpd.apache

[root@slave1] /srv/salt$ salt '*' state.sls directory
初始化

目录结构

[root@slave1] /srv/salt/base$ tree
.
├── init
│   ├── dns.sls
│   ├── env_init.sls
│   ├── files
│   │   └── resolv.conf
│   ├── history.sls
│   └── sysctl.sls
└── top.sls

dns.sls:

[root@slave1] /srv/salt/base/init$ cat  dns.sls 
/etc/resolv.conf:
  file.managed:
    - source: salt://init/files/resolv.conf
    - user: root
    - group: root
    - mode: 644

files/resolv.conf

[root@slave1] /srv/salt/base/init$ cat files/resolv.conf 
# Generated by NetworkManager
search hanli.com
nameserver 119.29.29.29

history.sls

[root@slave1] /srv/salt/base/init$ cat history.sls 
/etc/profile:
  file.append:
    - text:
      - export HISTTIMEFORMAT="%F %T `whoami` "

sysctl.sls

[root@slave1] /srv/salt/base/init$ cat sysctl.sls 
net.ipv4.ip_local_port_range:
  sysctl.present:
    - value: 10000  65000

fs.file-max:
  sysctl.present:
    - value: 2000000

net.ipv4.ip_forward:
  sysctl.present:
    - value: 0

vm.swappiness:
  sysctl.present:
    - value: 0

env_init.sls

[root@slave1] /srv/salt/base/init$ cat env_init.sls 
include:
  - init.dns
  - init.history
  - init.sysctl

top.sls

[root@slave1] /srv/salt/base$ cat top.sls 
base:
  '*':
    - init.env_init

执行

salt '*' state.highstate test=True -v

猜你喜欢

转载自blog.csdn.net/fanren224/article/details/80449271