saltstack

Saltstack概述html

      Salt一種全新的基礎設施管理方式,部署輕鬆,在幾分鐘內可運行起來,擴展性好,很容易管理上萬臺服務器,速度夠快,服務器之間秒級通信。node

       salt底層採用動態的鏈接總線, 使其能夠用於編配, 遠程執行, 配置管理等等.python

參考中文文檔:http://docs.saltstack.cn/zh_CN/latest/topics/tutorials/starting_states.htmlmysql

參考英文文檔:https://docs.saltstack.com/en/latest/linux

Saltstack運行模式:nginx

  • Local
  • Master/Minion
  • Salt SSH

Saltstack三大功能:web

  • 遠程執行(執行遠程命令)
  • 配置管理(狀態管理)
  • 雲管理

Saltstack部署環境準備:正則表達式

一、主機名要固定統一sql

[root@linux-node1 ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
10.0.0.7 linux-node1.example.com linux-node1
10.0.0.8 linux-node2.example.com linux-node2
[root@linux-node1 ~]# cat /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=linux-node1.example.com

並且可以ping通數據庫

要想實現自動化運維,首先要知足PPT原則(流程、人員、工具技術)

Saltstack準備環境

兩臺Centos6.6,10.0.0.7作master,10.0.0.8作minion

一、安裝epel和salt組件

# 安裝epel源
[root@linux-node1 ~]# rpm -ivh http://mirrors.aliyun.com/epel/epel-release-latest-6.noarch.rpm
# 服務端安裝master
[root@linux-node1 ~]# yum -y install salt-master
# 爲了作實驗,在服務端也安裝下客戶端
[root@linux-node1 ~]# yum -y install salt-minion
# 客戶端安裝minion
[root@linux-node2 ~]# yum -y install salt-minion
# 設置開機啓動
[root@linux-node1 ~]# chkconfig salt-master on
[root@linux-node1 ~]# chkconfig salt-minion on

      設置完成後,能夠先講master啓動。而後修改配置文件,須要告訴minion端master是誰。

二、啓動master服務

[root@linux-node1 ~]# /etc/init.d/salt-master start
Starting salt-master daemon:                               [肯定]

三、修改兩臺客戶端的配置文件

[root@linux-node1 ~]# egrep "master: 10.0.0.7|#id" /etc/salt/minion 
master: 10.0.0.7
#id:

master:master的IP地址

id:默認經過python的方法socket.getfqdn()去獲取fqdn名。因此要求設置好主機名並能解析。也可使用IP地址,看業務需求。

四、啓動minion客戶端。

[root@linux-node1 ~]# /etc/init.d/salt-minion start
Starting salt-minion daemon:                               [肯定]
[root@linux-node2 ~]# /etc/init.d/salt-minion start
Starting salt-minion daemon:                               [肯定]

五、minion端的認證

# minion啓動的時候會建立KEY
[root@linux-node1 /]# ll /etc/salt/pki/minion/
總用量 8
-r-------- 1 root root 1679 12月 28 23:04 minion.pem
-rw-r--r-- 1 root root  451 12月 28 23:04 minion.pub
# master啓動的時候會建立KEY
[root@linux-node1 /]# ll /etc/salt/pki/master/
總用量 28
-r-------- 1 root root 1679 12月 28 22:54 master.pem
-rw-r--r-- 1 root root  451 12月 28 22:54 master.pub
# 等待贊成的Key
[root@linux-node1 /]# ll /etc/salt/pki/master/minions_pre/
總用量 8
-rw-r--r-- 1 root root 451 12月 28 23:04 linux-node1.example.com
-rw-r--r-- 1 root root 451 12月 28 23:03 linux-node2.example.com
# 查看須要贊成的Key
[root@linux-node1 /]# salt-key 
Accepted Keys:
Denied Keys:
Unaccepted Keys:
linux-node1.example.com
linux-node2.example.com
Rejected Keys:
# 執行贊成操做 -A 所有贊成
[root@linux-node1 /]# salt-key  -A
The following keys are going to be accepted:
Unaccepted Keys:
linux-node1.example.com
linux-node2.example.com
Proceed? [n/Y] y
Key for minion linux-node1.example.com accepted.
Key for minion linux-node2.example.com accepted.
# -a 匹配的贊成,可使用*通配符
[root@linux-node1 /]# salt-key  -a linux*
# 經過認證的主機位置會發生改變,本來在minion_pre下面

[root@linux-node1 /]# tree /etc/salt/pki/master/
/etc/salt/pki/master/
├── master.pem
├── master.pub
├── minions
│   ├── linux-node1.example.com
│   └── linux-node2.example.com
├── minions_autosign
├── minions_denied
├── minions_pre
└── minions_rejected

   其實上面的master下面的minion中的兩個主機名命名的文件是minion端的公鑰(你要是不信本身打開see),同時在master認證經過的時候,master也偷偷的把他的公鑰放到了minion端一份。用事實說話,在minion端上查看。

[root@linux-node2 ~]# ll /etc/salt/pki/minion/
總用量 12
-rw-r--r-- 1 root root  451 12月 28 23:11 minion_master.pub
-r-------- 1 root root 1675 12月 28 23:03 minion.pem
-rw-r--r-- 1 root root  451 12月 28 23:03 minion.pub

6:salt-key命令

[root@linux-node1 /]# salt-key --help 
  Actions:
    -l ARG, --list=ARG  List the public keys. The args "pre", "un", and
                        "unaccepted" will list unaccepted/unsigned keys. "acc"
                        or "accepted" will list accepted/signed keys. "rej" or
                        "rejected" will list rejected keys. "den" or "denied"
                        will list denied keys. Finally, "all" will list all
                        keys.
    -L, --list-all      List all public keys. (Deprecated: use "--list all")
    -a ACCEPT, --accept=ACCEPT
                        Accept the specified public key (use --include-all to
                        match rejected keys in addition to pending keys).
                        Globs are supported.
    -A, --accept-all    Accept all pending keys
    -r REJECT, --reject=REJECT
                        Reject the specified public key (use --include-all to
                        match accepted keys in addition to pending keys).
                        Globs are supported.
    -R, --reject-all    Reject all pending keys
    --include-all       Include non-pending keys when accepting/rejecting
    -p PRINT, --print=PRINT
                        Print the specified public key
    -P, --print-all     Print all public keys
    -d DELETE, --delete=DELETE
                        Delete the specified key. Globs are supported.
    -D, --delete-all    Delete all keys

Saltstack遠程執行

  salt命令  ‘client’ 模塊.方法   ‘參數’

[root@linux-node1 /]# salt '*' test.ping
linux-node1.example.com:
    True
linux-node2.example.com:
    True
[root@linux-node1 /]# salt '*' cmd.run 'w'
linux-node2.example.com:
     23:32:17 up 51 min,  1 user,  load average: 0.00, 0.00, 0.00
    USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
    root     pts/0    10.0.0.1         22:41    7:39   0.06s  0.06s -bash
linux-node1.example.com:
     23:32:17 up 53 min,  2 users,  load average: 0.00, 0.00, 0.00
    USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
    root     pts/0    10.0.0.1         22:40    0.00s  0.85s  0.67s /usr/bin/python
    root     pts/1    10.0.0.1         22:56   35:04   0.00s  0.00s -bash

Saltstack配置管理

一、修改master的配置文件

# 開啓base環境
[root@linux-node1 /]# vim /etc/salt/master 
416:file_roots:
417:  base:
418:    - /srv/salt
# 建立目錄
[root@linux-node1 /]# mkdir /srv/salt
# 只要改動配置文件就要重啓
[root@linux-node1 /]# /etc/init.d/salt-master restart
Stopping salt-master daemon:                               [肯定]
Starting salt-master daemon:                               [肯定]

2:寫一個apache的安裝sls

[root@linux-node1 salt]# cd /srv/salt/
[root@linux-node1 salt]# cat /srv/salt/apache.sls 
apache-install:
  pkg.installed:
    - names:
      - httpd
      - httpd-devel
apache-service:
  service.running:
    - name: httpd
    - enable: True
    - reload: True
# 在全部minion端,執行state模塊下的sls方法,運行apache這個狀態
[root@linux-node1 salt]# salt '*' state.sls apache
# 檢查是否安裝成功
[root@linux-node1 salt]# lsof -i:80

apache-install:                                   #ID聲明,聲明是幹什麼用的

    pkg.installed:                                 #PKG是一個軟件包狀態模塊,installed是其中的方法

       - names:                                     #代表要裝的包的名字,由於是裝多個包

           - httpd

           - httpd-devel                                                  

[root@linux-node1 master]# salt '*' state.sls apache

#使用salt對全部的機器使用state這個模塊下的sls方法來執行apache這個狀態模塊

#若是使用的分目錄的方式,執行的方法是:salt '*' state.sls init.apache

三、使用高級狀態

     要有一個入口文件默認是top.sls,不建議修改,且必須放在base環境目錄下。

# top文件,入口文件
[root@linux-node1 salt]# cat /srv/salt/top.sls
base:
  '*.example.com':
    - apache
# 使用高級狀態執行
[root@linux-node1 salt]# salt '*' state.highstate

Saltstack數據系統

Grains  and    Pillar

Grains裏面收集了minion啓動時候的全部系統信息,存儲在minion端。靜態數據,只有重啓的時候才從新收集。

在minion設置

應用場景:

一、信息查詢

# 查看grains的key
[root@linux-node1 salt]# salt 'linux-node1*' grains.ls
# 查看grains的全部信息
[root@linux-node1 salt]# salt 'linux-node1*' grains.items
# 查詢某個的信息
[root@linux-node1 salt]# salt 'linux-node1*' grains.get fqdn
linux-node1.example.com:
    linux-node1.example.com
[root@linux-node1 salt]# salt 'linux-node1*' grains.get os
linux-node1.example.com:
    CentOS

二、主機匹配

# 使用granis來匹配主機 -G 參數,
[root@linux-node1 salt]# salt -G os:CentOS cmd.run 'uptime'
linux-node2.example.com:
     00:28:03 up  1:46,  1 user,  load average: 0.00, 0.00, 0.00
linux-node1.example.com:
     00:28:03 up  1:48,  2 users,  load average: 0.00, 0.00, 0.00
# 編輯minion配置文件,自定義設置角色,我添加一個cgt
[root@linux-node1 ~]# vim /etc/salt/minion 
 82 grains:
 83   roles:
 84     - webserver
 85     - memcache
 86     - cgt
# 修改配置文件須要重啓服務 
[root@linux-node1 ~]# /etc/init.d/salt-minion restart
Stopping salt-minion daemon:                               [肯定]
Starting salt-minion daemon:                               [肯定]
# 對角色有cgt的機器進行操做
[root@linux-node1 salt]# salt -G roles:cgt cmd.run 'uptime'
linux-node1.example.com:
     00:32:41 up  1:53,  2 users,  load average: 0.06, 0.02, 0.00

若是你以爲寫在配置文件中不方便,能夠寫在他的一個默認文件中

[root@linux-node1 ~]# vim /etc/salt/grains
web:nginx

三、在top.sls中匹配使用

[root@linux-node1 salt]# cat /srv/salt/top.sls 
base:
  'os:CentOS':
    - match: grain
    - apache
[root@linux-node1 salt]# salt '*' state.highstate

Pillar:給minion指定它想要的數據。

  在master端設置的

一、修改配置文件

# 在服務端開啓pillar
[root@linux-node1 ~]# vim /etc/salt/master
529 pillar_roots:
530   base:
531     - /srv/pillar
552 pillar_opts: False
[root@linux-node1 ~]# mkdir /srv/pillar
[root@linux-node1 ~]# /etc/init.d/salt-master restart
Stopping salt-master daemon:                               [肯定]
Starting salt-master daemon:                               [肯定]

二、編寫pillar中的文件

# 編寫一個apache.sls 這是pillar中的,與前面的salt下的文件沒有任何的關係
[root@linux-node1 ~]# cat  /srv/pillar/apache.sls
{%if grains['os'] == 'CentOS' %}
apache: httpd
{% elif grains['os'] == 'Debian' %}
apache: apache2
{% endif %}
# 告訴pillar下面哪些主機能夠來使用apache.sls文件,這是全部主機*
[root@linux-node1 ~]#  cat /srv/pillar/top.sls
base:
  '*':
    - apache

三、執行pillar

   由於都是centos是系統,因此獲取的都是httpd

[root@linux-node1 ~]# salt '*' pillar.items
linux-node2.example.com:
    ----------
    apache:
        httpd
linux-node1.example.com:
    ----------
    apache:
        httpd

四、用來定位主機

# 對apache:httpd的minion執行命令
[root@linux-node1 ~]# salt -I 'apache:httpd' test.ping
No minions matched the target. No command was sent, no jid was assigned.
ERROR: No return received
# 刷新pillar,grains是須要重啓minion端,pillar是須要刷新
[root@linux-node1 ~]# salt '*' saltutil.refresh_pillar
linux-node2.example.com:
    True
linux-node1.example.com:
    True
[root@linux-node1 ~]# salt -I 'apache:httpd' test.ping
linux-node2.example.com:
    True
linux-node1.example.com:
    True

Grains和Pillar的區別

image

遠程執行

  • 目標(Targeting)
  • 模塊(Module)
  • 返回(Returnners)

Targeting目標

一、Globbing and regex

    匹配minions 經過通配符和正則表達式,與minion ID有關係。

    連接:使用通配符和正則表達式來匹配

二、Grains

   用來匹配minion的grains,是指那些關於minion主機的靜態信息,好比OS,軟件版本,虛擬化,CPU,內存等等。

    連接:使用Grains來匹配

三、Pillar

     經過用戶定義的變量匹配minion主機

     連接:使用Pillar來匹配

四、Subnet/IP Address

      經過子網或IP地址匹配minion主機(當前僅支持IPV4)。

      連接:經過IP/subnet來匹配

五、Compound matching

       把上面的所有匹配器組合爲一個表達式。

       連接:使用組合集合匹配

六、Node groups

       在master配置文件中靜態定義minion組,使用:ref:複合 <targeting-compound> 匹配語法。

       連接:使用節點組匹配

七、Batching execution

      一些命令集在匹配上的minions時只須要執行一次。

       連接:只要執行一次的內容

Modules模塊

     Salt 模塊是遠程執行的基礎。它提供了一系列的功能,好比安裝包,重啓一個服務,運行名稱命令,傳輸文件等等。

     連接:salt中的全部的模塊

用戶權限的限制

# 設置用戶名:larry,和能夠執行的命令
[root@linux-node1 ~]# vim /etc/salt/master 
245 client_acl:
246   larry:
247     - test.ping
248     - network.*
# 更改權限
[root@linux-node1 sudoers.d]# chmod 755 /var/cache/salt /var/cache/salt/master /var/cache/salt/master/jobs /var/run/salt /var/run/salt/master
# 重啓服務
[root@linux-node1 sudoers.d]# /etc/init.d/salt-master restart
# 切換到larry用戶執行
[larry@linux-node1 ~]$ salt '*' test.ping
linux-node2.example.com:
    True
linux-node1.example.com:
    True
[larry@linux-node1 ~]$ salt '*' cmd.run 'uptime'
Failed to authenticate!

   連接:用戶權限的配置

Returners

   Salt返回接收器(returner)容許把minion的響應保存在各類數據存儲或不一樣的位置,甚至把響應內容顯示在命令行。Returner能夠用來擴展Salt,和新的、定製的接口和支持新的數據庫進行通訊。

   連接:全部的Rerurners的模塊

以mysql的返回爲例

# 安裝數據庫
[root@linux-node1 ~]# yum -y install mysql-server
# 安裝依賴包
[root@linux-node1 ~]# yum -y install python-mysqldb
# 啓動數據庫
[root@linux-node1 ~]# /etc/init.d/mysqld start
# 客戶端安裝MySQL-python
[root@linux-node1 ~]# yum -y install MySQL-python

建立相應的表

CREATE DATABASE  `salt`
  DEFAULT CHARACTER SET utf8
  DEFAULT COLLATE utf8_general_ci;

USE `salt`;

DROP TABLE IF EXISTS `jids`;

CREATE TABLE `jids` (
  `jid` varchar(255) NOT NULL,
  `load` mediumtext NOT NULL,
  UNIQUE KEY `jid` (`jid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

DROP TABLE IF EXISTS `salt_returns`;

CREATE TABLE `salt_returns` (
  `fun` varchar(50) NOT NULL,
  `jid` varchar(255) NOT NULL,
  `return` mediumtext NOT NULL,
  `id` varchar(255) NOT NULL,
  `success` varchar(10) NOT NULL,
  `full_ret` mediumtext NOT NULL,
  `alter_time` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  KEY `id` (`id`),
  KEY `jid` (`jid`),
  KEY `fun` (`fun`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

DROP TABLE IF EXISTS `salt_events`;
CREATE TABLE `salt_events` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`tag` varchar(255) NOT NULL,
`data` varchar(1024) NOT NULL,
`alter_time` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
KEY `tag` (`tag`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
 
grant all on salt.* to salt@'10.0.0.0/255.255.255.0' identified by 'salt';

修改配置文件

此種方式是主動去Minion端獲取,推薦使用。

若是不加job_cache,開啓上面的return,就是被動接收。須要客戶端也要修改配置文件,添加一樣的內容。

   連接:job_manage的介紹

[root@linux-node1 ~]# vim /etc/salt/master 
#return: mysql
master_job_cache: mysql
mysql.host: '10.0.0.7'
mysql.user: 'salt'
mysql.pass: 'salt'
mysql.db: 'salt'
mysql.port: 3306

檢查是否生效

[root@linux-node1 ~]# /etc/init.d/salt-master restart
[root@linux-node1 ~]# salt '*' saltutil.refresh_pillar
linux-node1.example.com:
    True
linux-node2.example.com:
    True
[root@linux-node1 ~]# salt '*' test.ping
linux-node2.example.com:
    True
linux-node1.example.com:
    True

# 數據庫中檢查有麼有獲取到數據(主動去minion端獲取)
mysql> use salt;
mysql> select * from salt_returns;

配置管理

    配置管理是經過遠程管理來實現的。

環境配置

# 開啓分別的file_roots
[root@linux-node1 ~]# vim /etc/salt/master 
file_roots:
  base:
    - /srv/salt/base
  test:
    - /srv/salt/test
  prod:
    - /srv/salt/prod
# 從新啓動master
[root@linux-node1 ~]# /etc/init.d/salt-master restart
Stopping salt-master daemon:                               [肯定]
Starting salt-master daemon:                               [肯定]
# 建立路徑
[root@linux-node1 ~]# mkdir /srv/salt/base
[root@linux-node1 ~]# mkdir /srv/salt/test
[root@linux-node1 ~]# mkdir /srv/salt/prod
[root@linux-node1 salt]# ll /srv/salt/base/
總用量 8
-rw-r--r-- 1 root root 171 12月 28 23:56 apache.sls
-rw-r--r-- 1 root root  53 12月 29 00:49 top.sls
[root@linux-node1 salt]# tree
.
├── base
│   ├── apache.sls
│   └── top.sls
├── prod
└── test
[root@linux-node1 ~]# mkdir /srv/salt/base/files

編寫配置文件

[root@linux-node1 base]# vim dns.sls
/etc/resolv.conf:
  file.managed:
    - source: salt://files/resolv.conf
    - user: root
    - group: root
    - mode: 644

[root@linux-node1 base]# cp /etc/resolv.conf  /srv/salt/base/files/
[root@linux-node1 base]# cd /srv/salt/base/files/
# 作點修改,最下面加點#
[root@linux-node1 files]# vim resolv.conf 
# Generated by NetworkManager
nameserver 10.0.0.2
#########

執行狀態

# 執行方式一
# 執行狀態(單獨執行某個狀態)
[root@linux-node1 files]# salt '*' state.sls dns
# 到minion端查看
[root@linux-node2 ~]# cat /etc/resolv.conf 
# Generated by NetworkManager
nameserver 10.0.0.2
#########

# 執行方式二
# 若是想使用高級狀態執行,須要在top.sls中寫明
[root@linux-node1 files]# vim /srv/salt/base/top.sls 
base:
  '*':
    - dns
# 執行高級狀態,從top.sls中讀取,在執行
[root@linux-node1 files]# salt '*' state.highstate

salt語法:YAML
規則一:縮進
        兩個空格組成
        不要使用tab鍵
規則二:冒號
        他的結果是以字典的方式
        以冒號結尾和路徑不須要加冒號
        以冒號結尾
規則三:短橫線線
        表示是一種列表關係(字典中的列表)     
        短橫線後加空格
 

jinja模版

jinja模版的建立

# jinja模版
# 有- template: 就表明這個文件就是一個模版文件
# - defaults:  是變量列表
[root@linux-node1 base]# vim dns.sls 
/etc/resolv.conf:
  file.managed:
    - source: salt://files/resolv.conf
    - user: root
    - group: root
    - mode: 644
    - template: jinja
    - defaults:
      DNS_SERVER: 10.0.0.2

jinja模版的使用

# 模板文件裏面變量使用方式{{ DNS_SERVER }}
[root@linux-node1 base]# vim /srv/salt/base/files/resolv.conf 
# Generated by NetworkManager
# nameserver 10.0.0.2
nameserver {{ DNS_SERVER }}
# 執行高級狀態
[root@linux-node1 base]# salt '*' state.highstate
# minion端查看,nameserver 自動將變量代換
[root@linux-node2 ~]# cat /etc/resolv.conf 
# Generated by NetworkManager
# nameserver 10.0.0.2
nameserver 10.0.0.2

jinja模版中使用Grains

# 使用grains
[root@linux-node1 base]# cat /srv/salt/base/files/resolv.conf 
# Generated by NetworkManager
nameserver 10.0.0.2
# {{ grains['fqdn_ip4'] }}
# minion端查看
[root@linux-node2 ~]# cat /etc/resolv.conf 
# Generated by NetworkManager
nameserver 10.0.0.2
# ['10.0.0.8']

還能夠在jinja模版中使用執行模塊和Pillar

案例

設置DNS執行文件

[root@linux-node1 base]# cd  /srv/salt/base/
[root@linux-node1 base]# mkdir -pv init/files
# dns設置
[root@linux-node1 base]# cat /srv/salt/base/init/dns.sls 
/etc/resolv.conf:
  file.managed:
    - source: salt://init/files/resolv.conf
    - user: root
    - group: root
    - mode: 644

[root@linux-node1 base]# cp /etc/resolv.conf  /srv/salt/base/init/files/

記錄歷史命令

格式:時間 用戶 命令

[root@linux-node1 base]# cat /srv/salt/base/init/history.sls 
/etc/profile:
  file.append:
    - text:
      - export HISTTIMEFORMAT="%F %T `whoami`"
[root@linux-node1 base]# tree /srv/salt/base/
/srv/salt/base/
├── init
│   ├── dns.sls
│   ├── files
│   │   └── resolv.conf
│   └── history.sls
└── top.sls

記錄操做日誌

寫到/var/log/message

[root@linux-node1 init]# cat audit.sls 
/etc/bashrc:
  file.append:
    - text:
      - export PROMPT_COMMAND='{ msg=$(history 1 | { read x y; echo $y; });logger "[euid=$(whoami)]":$(who am i):[`pwd`]"$msg";}'

內核調優

使用salt自帶的模塊sysctl

[root@linux-node1 init]# cat sysctl.sls 
vm.swappiness:
  sysctl.present:
    - value: 0

net.ipv4.ip_local_port_range:
  sysctl.present:
    - value: 10000 65000

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

#如何找呢?從/proc/sys/裏面,而後後面的/用.來代替。

將初始化的sls放在一塊兒

[root@linux-node1 init]# cat env_init.sls 
include:
  - init.dns
  - init.history
  - init.audit
  - init.sysctl

修改top.sls文件

base環境下init目錄下的env_init.sls

[root@linux-node1 init]# cat /srv/salt/base/top.sls 
base:
  '*':
    - init.env_init

最終呈現結果

[root@linux-node1 base]# tree
.
├── init
│   ├── audit.sls
│   ├── dns.sls
│   ├── env_init.sls
│   ├── files
│   │   └── resolv.conf
│   ├── history.sls
│   └── sysctl.sls
└── top.sls

結果檢查

從新打開minion的tty窗口,分別執行history和去message下面查看,檢測

 

 

 

狀態模塊:狀態間關係

功能:條件判斷,主要用於cmd狀態模塊

經常使用方法:

   onlyif:檢查的命令,近當onlyif選項指向的命令返回true時才執行

   name定義的命令

   unless:用於檢查的命令,僅當unless選項指向的命令返回false時才執行name指向的命令

功能名稱:requisites

功能:處理狀態間關係

經常使用方法:

   require                     #我依賴某個狀態

   require_in                 #我被某個狀態依賴

   watch                        #我關注某個狀態

   watch_in                    #我被某個狀態關注

相關文章
相關標籤/搜索