SaltStack实战之配置管理-YAML编写技巧

简介:

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。

my_key: my_value
   second_key: second_value

2.3 短横线

想要表示列表项,使用一个短横杠加一个空格。多个项使用同样的缩进级别作为同一列表的一部分。

my_dictionary:
 - list_value_one
 - list_value_two
 - list_value_three

3. 同步文件实战

下面介绍同步Linux下dns配置文件/etc/resolv.conf

vim /etc/salt/master

state_top: top.sls

file_roots:
 base:
   - /srv/salt
 dev:
   - /srv/salt/dev
 test:
   - /srv/salt/test
 prod:
   - /srv/salt/prod

[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

执行文件同步

[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

[root@im109 ~]# cat /etc/resolv.conf
nameserver 10.1.0.2
nameserver 114.114.114.114
[root@im109 ~]#

发现文件已更新。



本文转自 ygqygq2 51CTO博客,原文链接:http://blog.51cto.com/ygqygq2/1934755,如需转载请自行联系原作者
相关文章
|
4月前
|
前端开发 应用服务中间件 数据库
Docker-docker-compose学习笔记(yaml,实战)
Docker-docker-compose学习笔记(yaml,实战)
223 0
SpringBoot从0到实战6:配置文件yaml的学习和使用
YAML 是 “YAML Ain’t Markup Language”(YAML 不是一种标记语言)的递归缩写。在开发的这种语言时,YAML 的意思其实是:“Yet Another Markup Language”(仍是一种标记语言)。 非常适合用来做以数据为中心的配置文件
SpringBoot从0到实战6:配置文件yaml的学习和使用
|
存储 JSON Kubernetes
编写 K8S YAML
编写 K8S YAML
462 0
编写 K8S YAML
|
存储 设计模式 运维
如何不编写 YAML 管理 Kubernetes 应用?
Kubernetes 将自身边界内的事物都抽象为资源。其中的主要部分,是以 Deployment、StatefulSet 为代表的 workload 工作负载控制器,其他各类资源都围绕这些主要的资源工作。这些资源合并起来,可以为 IT 技术工作者展现出一个以 workload 为中心的模型。Kubernetes 中所有的资源,都通过声明式配置文件来编辑描述,一条条的 Yaml 字段定义,给了 IT 技术人员最大的自由度的同时,也对技术人员的能力提出了极高的要求。
Yaml配置文件-教学+实战
Yaml配置文件-教学+实战
188 0
|
XML JSON Kubernetes
Kubernetes YAML 编写 讲解
Kubernetes YAML 编写 讲解
173 1
|
XML JSON Kubernetes
在 Node.js 中使用 Yaml 编写API文档
在文章《使用Node.js、MongoDB、Fastify 构建API服务》中介绍使用 Swagger 构建 API 文档,编写文档不是那么的顺手,本文介绍另一种编写 API 文档的方式,即使用 Yaml ,将API文档与其实现完全分开。
304 0
在 Node.js 中使用 Yaml 编写API文档
|
存储 运维 监控
DO447管理清单--编写YAML清单文件
DO447管理清单--编写YAML清单文件
175 0
DO447管理清单--编写YAML清单文件
|
JSON Go API
Go实战--也许最快的Go语言Web框架kataras/iris初识(basic认证、Markdown、YAML、Json)
ris自称是Go语言中所有Web框架最快的,它的特点如下: 1.聚焦高性能 2.健壮的静态路由支持和通配符子域名支持。 3.
2155 0