天天看点

SaltSack入门(四)Salt常用模块使用

以下用一些实例说明salt一些常用的模块,进一步熟悉salt使用。

模块参考地址:http://docs.saltstack.cn/zh_cn/latest/ref/states/all/index.html

pkg模块:

1、安装一个软件

1

2

3

<code>vim:</code>

<code>  </code><code>pkg.installed:</code>

<code>    </code><code>- name: vim-enhanced</code>

2、安装多个软件

4

5

<code>    </code><code>- names:            </code><code>#多个值时,要修改为复数,names</code>

<code>      </code><code>- vim-enhanced</code>

<code>      </code><code>- lrzsz</code>

service模块:

1、安装apache,并启动

6

7

8

<code>httpd:</code>

<code>    </code><code>- name: httpd</code>

<code>  </code><code>service.running:</code>

<code>    </code><code>- </code><code>enable</code><code>: true</code>

<code>    </code><code>- require:         </code>

<code>    </code><code>#一个声明,用于定义状态之间的依赖,说明httpd如果安装了,才执行service.running模块</code>

<code>      </code><code>- pkg: httpd     </code><code># pkg代表用的什么模块</code>

2、将配置文件分发到apache服务器

<code>file</code><code>.managed:</code>

<code>  </code><code>- name: </code><code>/etc/httpd/conf/httpd</code><code>.conf</code>

<code>  </code><code>- </code><code>source</code><code>: salt:</code><code>//apache/conf/httpd</code><code>.conf</code>

3、如果apache配置文件有变动,就重新加载配置

9

10

11

12

13

14

15

16

<code>  </code><code>file</code><code>.managed:</code>

<code>    </code><code>- name: </code><code>/etc/httpd/conf/httpd</code><code>.conf</code>

<code>    </code><code>- </code><code>source</code><code>: salt:</code><code>//test/httpd</code><code>.conf</code>

<code>    </code><code>- require:</code>

<code>      </code><code>- pkg: httpd</code>

<code>    </code><code>- reload: true</code>

<code>    </code><code>- </code><code>watch</code><code>:             </code>

<code>    </code><code>#监控httpd.confp文件是否发生变化,是就重新加载httpd服务</code>

<code>      </code><code>- </code><code>file</code><code>: </code><code>/etc/httpd/conf/httpd</code><code>.conf</code>

<code>    </code><code>- require: </code>

cmd模块:

1、编译安装nginx

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

<code>nginx_source:</code>

<code>    </code><code>- name: </code><code>/tmp/nginx-1</code><code>.6.2.</code><code>tar</code><code>.gz</code>

<code>    </code><code>- unless: </code><code>test</code> <code>-f </code><code>/tmp/nginx-1</code><code>.6.2.</code><code>tar</code><code>.gz    </code>

<code>    </code><code>#在这里用到了unless,就是做了个判断,判断有没有这个文件,如果没有就执行nginx_source id,否则跳过</code>

<code>    </code><code>- </code><code>source</code><code>: salt:</code><code>//test/nginx-1</code><code>.6.2.</code><code>tar</code><code>.gz</code>

<code>nginx_unzip:</code>

<code>  </code><code>cmd.run:</code>

<code>    </code><code>- cwd: </code><code>/tmp</code>

<code>    </code><code>- names: </code><code>tar</code> <code>zxf nginx-1.6.2.</code><code>tar</code><code>.gz</code>

<code>    </code><code>- unless: </code><code>test</code> <code>-d </code><code>/tmp/nginx-1</code><code>.6.2</code>

<code>      </code><code>- </code><code>file</code><code>: nginx_source</code>

<code>nginx_pkg:</code>

<code>    </code><code>- names:</code>

<code>      </code><code>- gcc</code>

<code>      </code><code>- </code><code>make</code>

<code>      </code><code>- openssl-devel</code>

<code>      </code><code>- pcre-devel</code>

<code>      </code><code>- zlib-devel</code>

<code>nginx_install:</code>

<code>    </code><code>- cwd: </code><code>/tmp/nginx-1</code><code>.6.2</code>

<code>    </code><code>- name: .</code><code>/configure</code> <code>--prefix=</code><code>/usr/local/nginx1</code><code>.6 &amp;&amp; </code><code>make</code> <code>&amp;&amp; </code><code>make</code> <code>install</code> <code>&amp;&amp; </code><code>/usr/local/nginx1</code><code>.6</code><code>/sbin/nginx</code>   

<code>    </code><code>#这一块为什么不用names呢,我也想用,可是他不是按顺序执行的,而是随机执行里面的命令的,容易造成了混乱。</code>

<code>    </code><code>- require:     </code>

<code>    </code><code>#依赖两个id状态,也就是必须有/tmp/nginx-1.6.2这个目录,和安装了gcc、make、pcre等这些依赖包,才执行nginx_install这个id</code>

<code>      </code><code>- cmd: nginx_unzip                </code>

<code>      </code><code>- pkg: nginx_pkg</code>

<code>    </code><code>- unless: </code><code>test</code> <code>-d </code><code>/usr/local/nginx1</code><code>.6</code>

在这里介绍编译安装nginx思路,其中用到了file、cmd.run、pkg模块。

file模块:

1、文件分发

<code>file_cp:</code>

<code>   </code><code>- name: </code><code>/etc/httpd/conf/httpd</code><code>.conf</code>

<code>   </code><code>- </code><code>source</code><code>: salt:</code><code>//test/httpd</code><code>.conf</code>

2、目录分发

<code>tmp_cp:</code>

<code>  </code><code>file</code><code>.recurse:</code>

<code>    </code><code>- name: </code><code>/tmp</code>

<code>    </code><code>- </code><code>source</code><code>: salt:</code><code>//tmp</code>

3、创建目录并赋予权限

<code>/opt/tmp</code><code>:</code>

<code>  </code><code>file</code><code>.directory:</code>

<code>    </code><code>- user: nginx</code>

<code>    </code><code>- group: nginx</code>

<code>    </code><code>- file_mode: 744</code>

<code>    </code><code>- makedirs: true</code>

user模块:

1、创建用户nginx

<code>create_user:</code>

<code>  </code><code>user.present:  </code><code>#用户不存在则创建,否则管理用户属性</code>

<code>    </code><code>- name: nginx</code>

<code>    </code><code>#- uid: 1501</code>

<code>    </code><code>#- gid: 1501</code>

<code>    </code><code>- createhome: false</code>

<code>    </code><code>- shell: </code><code>/sbin/nologin</code>

<code>    </code><code>#- groups:</code>

<code>    </code><code>#  - nginx</code>

2、删除用户nginx

<code>del_user:</code>

<code>  </code><code>user.absent:</code>

<code>    </code><code>- name: abc</code>

group模块:

1、创建组abc

<code>create_group:</code>

<code>  </code><code>group.present:</code>

<code>    </code><code>- addusers:     </code><code>#添加哪些用户到此组</code>

<code>      </code><code>- user1</code>

<code>      </code><code>- user2</code>

<code>    </code><code>#- delusers:     #从此组中删除哪些用户</code>

<code>    </code><code>#  - u1</code>

<code>    </code><code>#  - u2</code>

2、删除组abc

<code>del_group:</code>

<code>  </code><code>group.absent:</code>

cron模块:

1、添加定时任务计划

<code>script_cron:</code>

<code>  </code><code>cron</code><code>.present:</code>

<code>    </code><code>- name: </code><code>/bin/bash</code> <code>/opt/tmp/test</code><code>.sh</code>

<code>    </code><code>- user: root</code>

<code>    </code><code>- minute: 01</code>

<code>    </code><code>- hour: 0</code>

注:minute:分

hour:时

daymonth:日

month:月

dayweek:周

继续阅读