salt:
pkg.latest:
- name: salt
service.running:
- names:
- salt-master
- salt-minion
- require:
- pkg: salt
- watch:
- file: /etc/salt/minion
/etc/salt/minion:
file.managed:
- source: salt:
- user: root
- group: root
- mode: 644
- require:
- pkg: salt
/dbdata:
file.directory:
要改成:
/dbdata:
file:
- directory
cmd模块:
复制代码
1 name:要执行的命令,记住该命令将会在salt-minion的路径和权限下执行
2 onlyif:用于检查的命令,仅当``onlyif``选项指向的命令返回true时才执行name定义的命令
3 unless:用于检查的命令,仅当``unless``选项指向的命令返回false时才执行name指向的命令
4 cwd:执行命令时的当前工作目录,默认是/root
5 user:以指定用户身份运行命令
6 group:以指定用户组身份运行命令
7 shell:用于执行命令的shell,默认shell grain
8 run:运行name后的命令
9 [root@test81 ~]
10 nginx_source:
11 file.managed:
12 - name: /tmp/nginx-1.4.5.tar.gz
13 - unless: test -f /tmp/nginx-1.4.5.tar.gz
14 - source: salt:
15
16 tar_nginx:
17 cmd.run:
18 - cwd: /usr/local/src
19 - name: tar zxvf nginx-1.4.5.tar.gz
20 - unless: test -d /usr/local/src/nginx-1.4.5
21 - require:
22 - file: nginx_source
23
24
1 ntpdate_cron:
2 cron:
3 - present
4 - name: /usr/sbin/ntpdate pool.ntp.org
5 - minute: '*/30'
6 - require:
7 - cmd: isntp
8
9 isntp:
10 cmd:
11 - run
12 - name: yum -y install ntp
13 - unless: test ! -z `rpm -qa ntp`
cron模块:
复制代码
1 minute:分
2 hour:时
3 daymonth:日
4 month:月
5 dayweek:周
6 user:用户名
7 present:创建计划任务
8 name:计划任务内容
9 [root@scj cron]
10 mysql_cron:
11 cron:
12 - present
13 - name: cd /tmp/scripts;./mysql_backup.sh
14 - user: root
15 - minute: 0
16 - hour: 1
17
18
19
20
复制代码
复制代码
1
2
3 mysql_cron:
4 cron:
5 - present
6 - name: cd /tmp/scripts;./mysql_backup.sh
7 - user: root
8 - minute: 0
9 - hour: 2
10
11
12
13
14 注意:以name后面的命令为主
15 可以理解为name后面的命令是唯一键
16 若把name后面的命令改了,则是重新创建了一个计划任务
17
18
19
20 mysql_cron:
21 cron:
22 - absent
23 - name: cd /tmp/scripts;./mysql_backup.sh
24 - user: root
25 - minute: 0
26 - hour: 2
27
28
29
30
file模块:
注意:只有file模块里才可以使用template函数
复制代码
1 .sls文件1:
2 /tmp/salt/:
3 file:
4 - directory
5 - name: /tmp/salt/
6 - user: nobody
7 - group: nobody
8 - file_mode: 644
9 - dir_mode: 755
10 - makedirs: True
11 - recurse:
12 - user
13 - group
14 - mode
15
16
17
18 /tmp/salt/file:
19 file:
20 - managed
21 - name: /tmp/salt/file
22 - source: salt:
23 - user: nobody
24 - group: nobody
25 - mode: 644
26
27
28 - require:
29 - file: /tmp/salt/
30
31
32 .sls文件2:
33 {% set site_user = 'testuser' %}
34 {% set site_name = 'test_site' %}
35 {% set project_name = 'test_proj' %}
36 {% set sites_dir = 'test_dir' %}
37 django-project:
38 file.recurse:
39 - name: {{ sites_dir }}/{{ site_name }}/{{ project_name }}
40 - user: {{ site_user }}
41 - dir_mode: 2775
42 - file_mode: '0644'
43 - template: jinja
44 - source: salt:
45 - include_empty: True
46
47
48
49 .sls文件3:
50 /etc/http/conf/http.conf:
51 file.managed:
52 - source: salt:
53 - user: root
54 - group: root
55 - mode: 644
56 - template: jinja
57 - defaults:
58 custom_var: "default value"
59 other_var: 123
60 {% if grains['os'] == 'Ubuntu' %}
61 - context:
62 custom_var: "override"
63 {% endif %}
64
65 .sls文件4:
66 /tmp/dir1/file1:
67 file:
68 - managed
69 - makedirs: True
70
group模块:
复制代码
1 absent:删除用户组
2 name:与absent一起用,则是删除的用户组名
3 present:管理用户组,不存在则创建;存在则管理其属性
4 name:与present一起用,则是被管理的用户组名
5
6 gid:组ID分配给命名组;如果留空,那么下一个可用的组ID将被分配
7 system:命名组是否是一个系统组,这本质上是groupadd“-r”选项
8 addusers:添加更多的用户列表作为组成员
9 delusers:确保这些用户从组成员中删除
10 members:用新成员的名单替换现有组成员。
11
12 cheese:
13 group.present:
14 - gid: 7648
15 - system: True
16 - addusers:
17 - user1
18 - users2
19 - delusers:
20 - foo
21
22
23 cheese:
24 group.present:
25 - gid: 7648
26 - system: True
27 - members:
28 - foo
29 - bar
30 - user1
31 - user2
pkg模块:
复制代码
1 mypkgs:
2 pkg.installed:
3 - pkgs:
4 - gcc
5 - cmake
6 - make
7
8
9
10
11
12
13
service模块:
复制代码
1 httpd:
2 service:
3 - running
4 - enable: True
5 - reload: True
6 - watch:
7 - file: /etc/httpd/conf/httpd.conf
8 - require:
9 - pkg: httpd
10
11
12
13
14 ID: httpd
15 Function: service.running
16 Result: True
17 Comment: Service reloaded
18 Started: 14:56:31.920445
19 Duration: 1702.923 ms
20 Changes:
21 ----------
22 httpd:
23 True
24
25
26 ID: httpd
27 Function: service.running
28 Result: True
29 Comment: Service restarted
30 Started: 14:58:05.723261
31 Duration: 1193.026 ms
32 Changes:
33 ----------
34 httpd:
35 True
user模块:
复制代码
user1:
user:
- present
- uid: 600
- gid: 600
- system: True
- groups:
- nobody
公司来新的员工,需要在所有的服务器上添加一个普通账号:
1
2 [root@dbm133 ~]
3 Password:
4 $1$shencj$i3JtzHYM7hFcNP63VLK..1
1
2 [root@dbm133 ~]
3 username: shencj
4 password: '$1$shencj$i3JtzHYM7hFcNP63VLK..1'
复制代码
1
2 [root@dbm133 ~]
3 {{ pillar['username'] }}:
4 user:
5 - present
6
7
8 - password: {{ pillar['password'] }}
9 - groups:
10 - nobody
11
12 /home/{{ pillar['username'] }}/.ssh:
13 file:
14 - directory
15 - require:
16 - user: {{ pillar['username'] }}
17
18 /home/{{ pillar['username'] }}/.ssh/authorized_keys:
19 file:
20 - managed
21 - source: salt:
22 - mode: 400
23 - user: {{ pillar['username'] }}
24 - group: {{ pillar['username'] }}
25 - require:
26 - file: /home/{{ pillar['username'] }}/.ssh
复制代码
1
2 [root@dbm133 ~]