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

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

学习 SaltStack

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
[[email protected] salt]# mkdir dev test prod[[email protected] salt]# cat top.sls yamlbase:  ‘*‘:    - init.dns[[email protected] salt]# cat init/dns.sls /etc/resolv.conf:  file.managed:    - source:      - salt://init/files/resolv.conf      - user: root      - group: root      - mode: 644[[email protected] salt]# cat init/files/resolv.conf nameserver 10.1.0.2nameserver 114.114.114.114

执行文件同步

[[email protected] salt]# salt ‘*‘ state.highstatenode1.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:     1Total run time:  39.221 msmaster.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:     1Total run time:  32.041 msnode2.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:     1Total run time:  58.623 ms[[email protected] 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:     1Total run time:  29.966 msnode1.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:     1Total run time:  50.040 msnode2.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:     1Total run time:  70.125 ms

在minion端查看下/etc/resolv.conf

[[email protected] ~]# cat /etc/resolv.confnameserver 10.1.0.2nameserver 114.114.114.114[[email protected] ~]# 

发现文件已更新。

时间: 2024-08-24 09:31:22

SaltStack实战之配置管理-YAML编写技巧的相关文章

SaltStack实战之配置管理-LAMP自动化部署

SaltStack实战之配置管理-LAMP自动化部署 学习 SaltStack SaltStack实战之配置管理-LAMP自动化部署 1. 部署思路 2. 编写lamp.sls 1. 部署思路 将lamp分成3部分:软件包.配置文件.服务: 确认安装的软件包名.配置文件路径.服务名等: 按以上信息编写yaml文件: 2. 编写lamp.sls [[email protected] salt]# pwd/srv/salt[[email protected] salt]# lsdev  init  

SaltStack实战之配置管理-Jinja2模板

SaltStack实战之配置管理-Jinja2模板 学习 SaltStack SaltStack实战之配置管理-Jinja2模板 1. Salt yaml配置文件使用Jinja2模板介绍 1.1 File状态使用template参数 1.2 模板文件里面变量使用{{ 名称 }} 1.3 变量列表 2. 实战应用 1. Salt yaml配置文件使用Jinja2模板介绍 jinja2官方网站: http://jinja.pocoo.org/ 1.1 File状态使用template参数 - tem

SaltStack实战之配置管理-状态间关系

SaltStack实战之配置管理-状态间关系 学习 SaltStack SaltStack实战之配置管理-状态间关系 1. 状态相关模块 1.1 pkg 1.2 file 1.3 service 1.4 requisites 2. 实际应用 1. 状态相关模块 1.1 pkg 状态模块:pkg 功能:管理软件包状态 常用方法: pkg.installed # 确保软件包已安装,如果没有安装则安装 pkg.latest # 确保软件包是最新版本,如果不是,则进行升级 pkg.remove # 确保

SaltStack实战之SaltStack快速入门

SaltStack实战之SaltStack快速入门 1. SaltStack介绍 1.1 SaltStack常用网址 1.2 SaltStack运行方式 1.3 SaltStack三大功能 2. SaltStack部署 2.1 SaltStack master配置 2.2 SaltStack minion配置 2.3 SaltStack认证 2.4 saltsatck远程执行 2.5 saltsatck配置管理 1. SaltStack介绍 Salt,一种全新的基础设施管理方式,部署轻松,在几分

saltstack之(六)配置管理state

配置管理是saltstack工具最重要的模块之一,也是学习saltstack之后使用最多的一个功能.可以轻松实现上百台上千台甚至上万台服务器的管理工作. 1.使用state模块进行配置管理,编写sls文件,sls文件使用的是yaml语法格式. yaml文件的语法格式: structure通过空格来展示. sequence里的项用"-"来表示. map里的键值对用":"来表示. 2.常用的state模块及方法:file: file.managed --文件管理(重点)

  Saltstack实战

一:saltstack简介 部署的工作,不能只用手来做了,我们需要用工具来完成,工具化和标准化是相辅相成的,工具化让线上运行的东西更标准 Saltstack是比较新的自动化工具,是python开发的,也提供了api,saltstack有三大功能,远程执行,配置管理和云管理,配置管理也可以叫做状态管理,运维三板斧,监控,执行,配置 Saltstack对不,Puppet是ruby写的不支持远程执行  ansible 也是python写的.Saltstack的官方网站就是saltstack.com 运

SaltStack实战之数据系统-Grains

SaltStack实战之数据系统-Grains 学习 SaltStack SaltStack实战之数据系统-Grains 1. Grains应用场景 2. Grains应用示例 1. Grains应用场景 Grains可以在state系统中使用,用于配置管理模块. Grains可以在target中使用,用来匹配minion,比如匹配操作系统,使用-G选项. Grains可以用于信息查询,Grains保存着收集到的客户端的详细信息. 2. Grains应用示例 minion配置grains: 方法

如何能提高CSS编写技巧 提高Web前端开发效率

如何能提高CSS编写技巧?怎么学好Web前端开发?很多人在学习Web前端时,刚开始都会学习HTML和CSS,HTML用于文本内容,CSS用于样式设计,掌握这两部分知识就可以进行简单的页面制作.不过如果耗时过长作品一般未免有些得不偿失,因此你需要掌握一些技巧,以提高CSS编写效率. 1.使用flex进行布局 flex弹性布局的出现是有原因的.浮动和inline-block虽然也能实现很多的布局效果,但它们本质上是文本和块元素布局的工具,而不是面向整个网页的.flex可以很容易的按照我们预期的方式创

Grunt配置文件编写技巧及示范

受益于grunt这么久,继续分享关于grunt的一些技巧.grunt确实是前端项目中不可或缺的提升效率的工具.第一次接触grunt是在去年7月份,开始有接触LESS.Coffee Script的等需要编译的模板才能使用的,所以grunt就有了很大的用处.当然除了编译,还有一部分的工作就是压缩,grunt常用的任务就是压缩JS.CSS,检查语法错误,同时也可以保证质量压缩图片(删除图片多余信息). 使用起来也很简单,基于node,所以我们就可以通过js来控制这些文件.唯一需要做的是编写配置文件,做