1. 说明 下文的案例是根据上一篇文章进行的修改.因此请优先读取上一章博文内容<Saltstack_使用指南11_配置管理-状态之间依赖关系> 2. 主机规划 salt 版本 [root@salt100 ~]# salt --version salt (Oxygen) [root@salt100 ~]# salt-minion --version salt-minion (Oxygen) salt jinja 文档 https://docs.saltstack.com/en/latest/to…
上一篇:SaltStack配置管理-状态间关系 需求:需要apache配置文件里面监听的端口是每个minion本地的地址 saltstack默认的模板是jinjia模板 参考文档:http://docs.jinkan.org/docs/jinja2/ 两种分隔符: {% ... %} 和 {{ ... }} .前者用于执行诸如 for 循环 或赋值的语句,后者把表达式的结果打印到模板上. 如何知道salt配置文件是一个模板 需要在sls配置文件里面定义 apache.init.sls 修改配置h…
1. 主机规划 注意事项 修改了master或者minion的配置文件,那么必须重启对应的服务. 2. 了解YAML 具体地址 https://docs.saltstack.com/en/latest/topics/yaml/index.html YAML:三板斧 .缩进: 2个空格,不能使用Tab .冒号: key: value 注意有空格 .短横线: - list1 注意有空格 - list2 3. 配置管理路径指定 3.1. master指定配置管理基本路径 [root@salt100 s…
1. 说明 下文的案例是根据上一篇文章进行的修改.因此请优先读取上一篇文章内容<Saltstack_10_配置管理-状态模块> 并且目录进行了变化,从 /srv/salt/lamp 变为了 /srv/salt/lamp2 . 另外:下文没有根据模块编写,而是根据服务进行编写的.其中数据库也是单独部署的. 2. 主机规划 salt 版本 [root@salt100 ~]# salt --version salt (Oxygen) [root@salt100 ~]# salt-minion --v…
1. 主机规划 salt 版本 [root@salt100 ~]# salt --version salt (Oxygen) [root@salt100 ~]# salt-minion --version salt-minion (Oxygen) 状态模块文档 https://docs.saltstack.com/en/latest/ref/states/all/index.html 注意事项 修改了master或者minion的配置文件,那么必须重启对应的服务. 1.1. 特别注意 # 状态一…
1. 配置管理:state和file https://docs.saltstack.com/en/latest/topics/states/index.html Full list of states 1.state状态模块 希望主机,apache ,启动状态,关闭状态, 写法1 [root@linux-node1 web]# pwd /srv/salt/base/web [root@linux-node1 web]# vim apache.sls apache: pkg.installed:…
1. 主机规划 salt 版本 [root@salt100 ~]# salt --version salt (Oxygen) [root@salt100 ~]# salt-minion --version salt-minion (Oxygen) salt ssh文档 https://docs.saltstack.com/en/latest/topics/ssh/index.html 2. salt-ssh实现步骤 2.1. 部署salt-ssh 在salt100上部署salt-ssh yum…
点击架构师成长之路 架构师成长之路5.6-Saltstack配置管理(jinja模板) 配置管理工具: Pupper:1. 采用ruby编程语言:2. 安装环境相对较复杂:3.不支持远程执行,需要FUNC工具配置才可以 Ansible:1.采用python编程语言:2.被红帽收购:3.轻量级:4.基于模块工作的,本身没有批量部署的能力,真正批量部署的是ansible所运行的模块. Saltstack:采用python编程语言,同时提供Rest API方便二次开发以及和其它平台进行集成(目前企业使…
SaltStack的配置管理--jinja 需求场景:使用jinja模板,让各节点的httpd都监听在本机的ip [root@7mini-node1 apache]# vim files/httpd.conf 配置文件修改监听的ip地址和端口以变量的形式 Listen {{ IPADDR }}:{{ PORT }} 修改apache的sls的文件 [root@7mini-node1 apache]# vim init.sls apache-install: pkg.installed: - na…
需求描述: 在通过saltstack进行jinja模板获取值的时候,可以通过grains的方式,获取一些操作系统相关的信息,比如,OS,ip地址等,在这里演示下,做个记录. 演示: 1.修改sls文件,增加jinja模板,选项 [root@testvm01 lamp]# cat lamp.sls lamp-pkgs: pkg.installed: - pkgs: - httpd - php - mysql - mysql-server - php-mysql - php-cli - php-mb…
需求描述: 在使用saltstack的时候,有的时候,需要根据不同的变量来增加配置,比如,bind,监听端口,这些都可以通过变量写入,并且在配置的时候引用,下面是一个例子,用来演示,如何使用jinja模板,在state模块中使用. 演示: 1.编写sls及saltstack的状态文件 lamp-pkgs:  pkg.installed:    - pkgs:      - httpd      - php      - mysql      - mysql-server      - php-m…
jinjia模板 需求:想让saltstack的file模块分发到minion端的配置文件监听minion端的IP和端口,如何用变量实现?看下面!! 1.jinja模板加grains使apache监听本地端口 # cat lamp.sls lamp-install: pkg.installed: - pkgs: - httpd - php - php-pdo - php-mysql apache-config: file.managed: - name: /etc/httpd/conf/http…
先转载下jinja模板中使用变量的方法,后文主要讲解pillar的变量使用方法 一.jinja模版的使用方法: 1.file状态使用template参数 - template:jinja 2.模版文件里面变量使用{{名称}},例如{{PORT}} 变量使用Grains:{{ grains['fqdn_ip4'] }} 变量使用执行模块:{{ salt['network.hw_addr']('eth0') }} 变量使用Pillar:{{ pillar['apache']['PORT'] }} 3…
目标需求 1.使用jinja模板让apache配置监听本地ip地址 2.了解grains的基本使用方法 说明:实验环境是在前面的第二篇和第三篇基础上完成 实现步骤 使用grains获取ip地址信息 使用fqdn_ip4获取,获取下来是一个列表元素,在jinja模板里面使用IPADDR: {{ grains [ 'fqdn_ip4'][0] }}表示 [root@linux-node1 web]# salt "linux-node2*" grains.item fqdn_ip4 linu…
1. 实战项目GitHub地址 该项目已经放在了GitHub上,地址如下: https://github.com/zhanglianghhh/salt-example-lnmp 2. 主机规划 3. pillar的整体目录结构 [root@salt150-master pillar]# pwd /srv/pillar [root@salt150-master pillar]# ll total drwxr-xr-x root root Mar : base drwxr-xr-x root roo…
1. 实战项目GitHub地址 之前<Saltstack_使用指南>详细讲解了saltstack的使用.那么从这节开始实战讲解,当然不会再像之前那样详细说明了.只是讲一些系统规划之类的信息. 具体的项目代码请参见GitHub. 该项目已经放在了GitHub上,地址如下: https://github.com/zhanglianghhh/salt-example-lnmp 2. 主机规划 说明: 上述的salt03-web.salt04-web.salt05-web.salt150-master…
1. 主机规划 salt 版本 [root@salt100 ~]# salt --version salt (Oxygen) [root@salt100 ~]# salt-minion --version salt-minion (Oxygen) salt syndic文档 https://docs.saltstack.com/en/latest/topics/topology/syndic.html salt-syndic文档 https://docs.saltstack.com/en/lat…
Blog 项目源码:https://github.com/JmilkFan/JmilkFan-s-Blog 目录 目录 前文列表 扩展阅读 使用 Bootstrap 编写 Jinja 模板文件 继承一个模板 前文列表 用 Flask 来写个轻博客 (1) - 创建项目 用 Flask 来写个轻博客 (2) - Hello World! 用 Flask 来写个轻博客 (3) - (M)VC_连接 MySQL 和 SQLAlchemy 用 Flask 来写个轻博客 (4) - (M)VC_创建数据模…
Flask 和 Django 附带了强大的 Jinja 模板语言. 对于之前没有接触过模板语言的人来说,这类语言基本上就是包含一些变量,当准备渲染呈现 HTML 时,它们会被实际的值替换. 这些变量放在标记或分隔符之前.例如:Jinja 模板使用 {% ... %} 表示循环,{{ ... }} 表…
模板 要了解jinja2,那么需要先理解模板的概念.模板在Python的web开发中广泛使用,它能够有效的将业务逻辑和页面逻辑分开,使代码可读性增强.并且更加容易理解和维护. 模板简单来说就是一个其中包涵占位变量表示动态的部分的文件,模板文件在经过动态赋值后,返回给用户.  --> 可以理解为渲染 python中自带一个简单的模板,就是string提供的. 1 2 3 4 5 6 7 >>>  import  string >>> a  =  string.Tem…
模板 要了解jinja2,那么需要先理解模板的概念.模板在Python的web开发中广泛使用,它能够有效的将业务逻辑和页面逻辑分开,使代码可读性增强.并且更加容易理解和维护. 模板简单来说就是一个其中包涵占位变量表示动态的部分的文件,模板文件在经过动态赋值后,返回给用户. --> 可以理解为渲染 python中自带一个简单的模板,就是string提供的. >>> import string >>> a = string.Template( '$who is $ro…
1. 主机规划 Pillar文档 https://docs.saltstack.com/en/latest/topics/pillar/index.html 注意事项 修改了master或者minion的配置文件,那么必须重启对应的服务. 2. Grains VS Pillar 3. Pillar基本信息 Pillar Pillar数据是动态的 给特定的minion指定特定的数据. 只有指定的minion自己能够看到自己的数据 [所以必须要有top.sls] 因此可以用于敏感数据 Pillar刷…
1. 主机规划 Grains文档 https://docs.saltstack.com/en/latest/topics/grains/index.html 注意事项 修改了master或者minion的配置文件,那么必须重启对应的服务. 2. Grains基本信息 Saltstack 数据系统 Grains (谷粒) Pillar (柱子) Grains:静态数据 当Minion启动的时候收集的Minion本地的相关信息 如:操作系统版本,内核版本,CPU,内存,硬盘,设备型号,序列号 .信息…
1. 主机规划 服务器名称 操作系统版本 内网IP 外网IP(模拟) Hostname 部署模块 salt100 CentOS7.5 172.16.1.100 10.0.0.100 salt100 salt-master.salt-minion salt01 CentOS7.5 172.16.1.11 10.0.0.11 salt01 salt-minion salt02 CentOS7.5 172.16.1.12 10.0.0.12 salt02 salt-minion salt03 Cent…
1. 主机规划 远程执行教程文档 https://docs.saltstack.com/en/latest/topics/tutorials/modules.html 所有模块文档 https://docs.saltstack.com/en/latest/ref/modules/all/index.html#all-salt-modules 模块在机器上存在的位置 [root@salt100 modules]# pwd /usr/lib/python2./site-packages/salt/m…
1. 主机规划 Targeting Minions文档 https://docs.saltstack.com/en/latest/contents.html 另请参见:自动化运维神器之saltstack (三)节点组及复合匹配器 注意事项 修改了master或者minion的配置文件,那么必须重启对应的服务. 2. 目标指定方式 Letter Match Type Example Alt Delimiter? G Grains glob G@os:Ubuntu Yes E PCRE Minion…
1. 主机规划 2. Master与哪些minion通信 2.1. Master与哪些minion正常通信 [root@salt100 ~]# salt '*' test.ping salt100: True salt01: True salt02: True salt03: True 2.2. 查看master与指定minion通信是否正常 比如指定salt01 [root@salt100 ~]# salt 'salt01' test.ping salt01: True 3. 远程执行 示例1…
YAML陷阱 YAML语法要求如果值以{{ foo }}开头的话我们需要将整行用双引号包起来.这是为了确认你不是想声明一个YAML字典.该知识点在 YAML 语法 页面有所讲述. 这样是不行的: - hosts: app_servers vars: app_path: {{ base_path }}/22 你应该这么做: - hosts: app_servers vars: app_path: "{{ base_path }}/22"…
1. 主机规划 salt 版本 [root@salt100 ~]# salt --version salt (Oxygen) [root@salt100 ~]# salt-minion --version salt-minion (Oxygen) 编写执行模块文档 https://docs.saltstack.com/en/latest/ref/modules/index.html # 文档上的稍有些复杂 注意事项 修改了master或者minion的配置文件,那么必须重启对应的服务. 2. 自…
1. 主机规划 salt 版本 [root@salt100 ~]# salt --version salt (Oxygen) [root@salt100 ~]# salt-minion --version salt-minion (Oxygen) netapi modules https://docs.saltstack.com/en/latest/ref/netapi/all/index.html rest_cherrypy https://docs.saltstack.com/en/late…