SaltStack实战之配置管理-YAML编写技巧
SaltStack实战之配置管理-YAML编写技巧
[TOC]
1. 概述和内容
salt包含一个健壮且灵活的配置管理框架,它构建在远程执行核心上。这个框架运行于minion上,它通过特定呈现语言的state文件,即可轻松地同时配置成千上万的主机。
后面配置管理所介绍的内容有:
* file_roots
设置状态文件的位置
env
Base环境
开发、测试、预生产环境、生产环境-
SLS
YAML
Jinja
编写技巧 -
state
模块
file
pkg
service
cmd -
state
关系
require
require_in
watch
watch_in
unless
onlyif -
实践案例
LAMP
LNMP
Zabbix
Haproxy+keepalived -
项目实战
OpenStack自动化部署
2. YAML编写技巧
2.1 缩进
- YAML使用一个固定的缩进风格表示数据层结构关系。salt需要每个缩进级别使用2个空格。
- 不要使用table键。
2.2 冒号
冒号2边表示key和value。
1 2 3 |
my_key: my_value second_key: second_value |
2.3 短横线
想要表示列表项,使用一个短横杠加一个空格。多个项使用同样的缩进级别作为同一列表的一部分。
1 2 3 4 5 |
my_dictionary: - list_value_one - list_value_two - list_value_three |
3. 同步文件实战
下面介绍同步Linux下dns配置文件/etc/resolv.conf
。
vim /etc/salt/master
1 2 3 4 5 6 7 8 9 10 11 12 |
state_top: top.sls file_roots: base: - /srv/salt dev: - /srv/salt/dev test: - /srv/salt/test prod: - /srv/salt/prod |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
[root@salt-master112 salt]# mkdir dev test prod [root@salt-master112 salt]# cat top.sls yaml base: '*': - init.dns [root@salt-master112 salt]# cat init/dns.sls /etc/resolv.conf: file.managed: - source: - salt://init/files/resolv.conf - user: root - group: root - mode: 644 [root@salt-master112 salt]# cat init/files/resolv.conf nameserver 10.1.0.2 nameserver 114.114.114.114 |
执行文件同步
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 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 |
[root@salt-master112 salt]# salt '*' state.highstate node1.test.com: ---------- ID: /etc/resolv.conf Function: file.managed Result: True Comment: File /etc/resolv.conf updated Started: 17:50:20.016276 Duration: 39.221 ms Changes: ---------- diff: --- +++ @@ -1,3 +1,2 @@ -# Generated by NetworkManager nameserver 10.1.0.2 nameserver 114.114.114.114 Summary for node1.test.com ------------ Succeeded: 1 (changed=1) Failed: 0 ------------ Total states run: 1 Total run time: 39.221 ms master.test.com: ---------- ID: /etc/resolv.conf Function: file.managed Result: True Comment: File /etc/resolv.conf updated Started: 01:47:36.747919 Duration: 32.041 ms Changes: ---------- diff: --- +++ @@ -1,3 +1,2 @@ -# Generated by NetworkManager nameserver 10.1.0.2 nameserver 114.114.114.114 Summary for master.test.com ------------ Succeeded: 1 (changed=1) Failed: 0 ------------ Total states run: 1 Total run time: 32.041 ms node2.test.com: ---------- ID: /etc/resolv.conf Function: file.managed Result: True Comment: File /etc/resolv.conf updated Started: 17:50:20.642481 Duration: 58.623 ms Changes: ---------- diff: --- +++ @@ -1,3 +1,2 @@ -# Generated by NetworkManager nameserver 10.1.0.2 nameserver 114.114.114.114 Summary for node2.test.com ------------ Succeeded: 1 (changed=1) Failed: 0 ------------ Total states run: 1 Total run time: 58.623 ms [root@salt-master112 salt]# .test.com: ---------- ID: /etc/resolv.conf Function: file.managed Result: True Comment: File /etc/resolv.conf updated Started: 01:40:04.210096 Duration: 29.966 ms Changes: ---------- diff: --- +++ @@ -1,2 +1,3 @@ # Generated by NetworkManager nameserver 10.1.0.2 +nameserver 114.114.114.114 Summary for master.test.com ------------ Succeeded: 1 (changed=1) Failed: 0 ------------ Total states run: 1 Total run time: 29.966 ms node1.test.com: ---------- ID: /etc/resolv.conf Function: file.managed Result: True Comment: File /etc/resolv.conf updated Started: 17:42:47.647214 Duration: 50.04 ms Changes: ---------- diff: --- +++ @@ -1,2 +1,3 @@ - +# Generated by NetworkManager nameserver 10.1.0.2 +nameserver 114.114.114.114 Summary for node1.test.com ------------ Succeeded: 1 (changed=1) Failed: 0 ------------ Total states run: 1 Total run time: 50.040 ms node2.test.com: ---------- ID: /etc/resolv.conf Function: file.managed Result: True Comment: File /etc/resolv.conf updated Started: 17:42:48.218295 Duration: 70.125 ms Changes: ---------- diff: --- +++ @@ -1,2 +1,3 @@ - +# Generated by NetworkManager nameserver 10.1.0.2 +nameserver 114.114.114.114 Summary for node2.test.com ------------ Succeeded: 1 (changed=1) Failed: 0 ------------ Total states run: 1 Total run time: 70.125 ms |
在minion端查看下/etc/resolv.conf
。
1 2 3 4 5 |
[root@im109 ~]# cat /etc/resolv.conf nameserver 10.1.0.2 nameserver 114.114.114.114 [root@im109 ~]# |
发现文件已更新。
微信扫描下方的二维码阅读本文