SaltStack应用grains和jinja模板-第四篇
目标需求
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
linux-node2.example.com:
----------
fqdn_ip4:
- 192.168.56.12
修改lamp.sls文件
红色部分为新添加
[root@linux-node1 web]# pwd
/srv/salt/base/web
[root@linux-node1 web]# cat lamp.sls
lamp-install:
pkg.installed:
- pkgs:
- httpd
- php
- php-pdo
- php-mysql apache-config:
file.managed:
- name: /etc/httpd/conf/httpd.conf
- source: salt://web/files/httpd.conf
- user: root
- group: root
- mode:
- template: jinja
- defaults:
PORT: 8080 #变量PORT和模板文件的PORT变量要对应
IPADDR: {{ grains [ 'fqdn_ip4'][0] }} #支持python语法 可以把花括号的内容直接写在模板里面 但是不建议 结构不清晰 #变量很强大 支持cmd.run 返回结果等等
- require:
- pkg: lamp-install php-config:
file.managed:
- name: /etc/php.ini
- source: salt://web/files/php.ini
- user: root
- group: root
- mode: lamp-service:
service.running:
- name: httpd
- enable: True
- reload: True
- watch:
- file: apache-config apache-conf:
file.recurse:
- name: /etc/httpd/conf.d
- source: salt://web/files/apache-conf.d apache-auth:
pkg.installed:
- name: httpd-tools
- require_in:
- cmd: apache-auth #如果没有这个rpm包下面的cmd.run就不运行,解决依赖关系
cmd.run:
- name: htpasswd -bc /etc/httpd/conf/htpasswd_file admin admin
- unless: test -f /etc/httpd/conf/htpasswd_file
执行状态模块
因为在top.sls里面已经编排好了任务可以使用高级方法执行
[root@linux-node1 web]# salt "linux-node2*" grains.item fqdn_ip4
linux-node2.example.com:
----------
fqdn_ip4:
- 192.168.56.12
[root@linux-node1 web]# salt "*" state.highstate
linux-node2.example.com:
----------
ID: lamp-install
Function: pkg.installed
Result: True
Comment: All specified packages are already installed.
Started: ::57.069948
Duration: 702.264 ms
Changes:
----------
ID: apache-config
Function: file.managed
Name: /etc/httpd/conf/httpd.conf
Result: True
Comment: File /etc/httpd/conf/httpd.conf updated
Started: ::57.774499
Duration: 20.62 ms
Changes:
----------
diff:
---
+++
@@ -41,7 +41,7 @@
# prevent Apache from glomming onto all bound IP addresses.
#
#Listen 12.34.56.78:80
-Listen 80
+Listen 192.168.56.12:8080 #
# Dynamic Shared Object (DSO) Support
----------
ID: php-config
Function: file.managed
Name: /etc/php.ini
Result: True
Comment: File /etc/php.ini is in the correct state
Started: ::57.795215
Duration: 5.237 ms
Changes:
----------
ID: lamp-service
Function: service.running
Name: httpd
Result: True
Comment: Service reloaded
Started: ::58.015811
Duration: 232.47 ms
Changes:
----------
httpd:
True
----------
ID: apache-conf
Function: file.recurse
Name: /etc/httpd/conf.d
Result: True
Comment: The directory /etc/httpd/conf.d is in the correct state
Started: ::58.248535
Duration: 36.039 ms
Changes:
----------
ID: apache-auth
Function: pkg.installed
Name: httpd-tools
Result: True
Comment: Package httpd-tools is already installed.
Started: ::58.284678
Duration: 0.477 ms
Changes:
----------
ID: apache-auth
Function: cmd.run
Name: htpasswd -bc /etc/httpd/conf/htpasswd_file admin admin
Result: True
Comment: unless execution succeeded
Started: ::58.286230
Duration: 6.097 ms
Changes: Summary
------------
Succeeded: (changed=)
Failed:
------------
Total states run:
此时在查看node2节点 http监听的ip和端口已改变
[root@linux-node2 ~]# netstat -an |more
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0.0.0.0: 0.0.0.0:* LISTEN
tcp 192.168.56.12: 0.0.0.0:* LISTEN
grains相关操作
[root@linux-node1 web]# salt 'linux-node2*' grains.items
linux-node2.example.com:
----------
SSDs:
biosreleasedate:
//
biosversion:
6.00
cpu_flags:
- fpu
- vme
- de
- pse
- tsc
- msr
- pae
- mce
- cx8
- apic
- sep
- mtrr
- pge
- mca
- cmov
- pat
- pse36
- clflush
- dts
- mmx
- fxsr
- sse
- sse2
- ss
- ht
- syscall
- nx
- pdpe1gb
- rdtscp
- lm
- constant_tsc
- arch_perfmon
- pebs
- bts
- nopl
- xtopology
- tsc_reliable
- nonstop_tsc
- aperfmperf
- eagerfpu
- pni
- pclmulqdq
- ssse3
- fma
- cx16
- pcid
- sse4_1
- sse4_2
- x2apic
- movbe
- popcnt
- tsc_deadline_timer
- aes
- xsave
- avx
- f16c
- rdrand
- hypervisor
- lahf_lm
- abm
- 3dnowprefetch
- ida
- arat
- epb
- pln
- pts
- dtherm
- hwp
- hwp_noitfy
- hwp_act_window
- hwp_epp
- fsgsbase
- tsc_adjust
- bmi1
- avx2
- smep
- bmi2
- invpcid
- rdseed
- adx
- smap
- xsaveopt
- xsavec
- xgetbv1
- xsaves
cpu_model:
Intel(R) Core(TM) i5-6200U CPU @ .30GHz
cpuarch:
x86_64
domain:
example.com
fqdn:
linux-node2.example.com
fqdn_ip4:
- 192.168.56.12
fqdn_ip6:
gpus:
|_
----------
model:
SVGA II Adapter
vendor:
unknown
host:
linux-node2
hwaddr_interfaces:
----------
eth0:
:0c::6d::0c
lo:
:::::
id:
linux-node2.example.com
init:
systemd
ip4_interfaces:
----------
eth0:
- 192.168.56.12
lo:
- 127.0.0.1
ip6_interfaces:
----------
eth0:
- fe80::20c:29ff:fe6d:870c
lo:
- ::
ip_interfaces:
----------
eth0:
- 192.168.56.12
- fe80::20c:29ff:fe6d:870c
lo:
- 127.0.0.1
- ::
ipv4:
- 127.0.0.1
- 192.168.56.12
ipv6:
- ::
- fe80::20c:29ff:fe6d:870c
kernel:
Linux
kernelrelease:
3.10.-327.28..el7.x86_64
locale_info:
----------
defaultencoding:
UTF-
defaultlanguage:
en_US
detectedencoding:
UTF-
localhost:
linux-node2
lsb_distrib_id:
CentOS Linux
machine_id:
14e217a8e7d7475391d62b10129baa2f
manufacturer:
VMware, Inc.
master:
192.168.56.11
mdadm:
mem_total: nodename:
linux-node2
num_cpus: num_gpus: os:
CentOS
os_family:
RedHat
osarch:
x86_64
oscodename:
Core
osfinger:
CentOS Linux-
osfullname:
CentOS Linux
osmajorrelease: osrelease:
7.2.
osrelease_info:
-
-
-
path:
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin
productname:
VMware Virtual Platform
ps:
ps -efH
pythonexecutable:
/usr/bin/python
pythonpath:
- /usr/bin
- /usr/lib64/python27.zip
- /usr/lib64/python2.
- /usr/lib64/python2./plat-linux2
- /usr/lib64/python2./lib-tk
- /usr/lib64/python2./lib-old
- /usr/lib64/python2./lib-dynload
- /usr/lib64/python2./site-packages
- /usr/lib/python2./site-packages
pythonversion:
-
-
-
- final
-
saltpath:
/usr/lib/python2./site-packages/salt
saltversion:
2015.5.
saltversioninfo:
-
-
-
-
selinux:
----------
enabled:
False
enforced:
Disabled
serialnumber:
VMware- 4d b6 6a 0d-ff 3e 6d 0c
server_id: shell:
/bin/sh
systemd:
----------
features:
+PAM +AUDIT +SELINUX +IMA -APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ -LZ4 -SECCOMP +BLKID +ELFUTILS +KMOD +IDN
version: virtual:
VMware
zmqversion:
3.2.
salt 'linux-node2*' grains.items
[root@linux-node1 web]# salt 'linux-node2*' grains.ls
linux-node2.example.com:
- SSDs
- biosreleasedate
- biosversion
- cpu_flags
- cpu_model
- cpuarch
- domain
- fqdn
- fqdn_ip4
- fqdn_ip6
- gpus
- host
- hwaddr_interfaces
- id
- init
- ip4_interfaces
- ip6_interfaces
- ip_interfaces
- ipv4
- ipv6
- kernel
- kernelrelease
- locale_info
- localhost
- lsb_distrib_id
- machine_id
- manufacturer
- master
- mdadm
- mem_total
- nodename
- num_cpus
- num_gpus
- os
- os_family
- osarch
- oscodename
- osfinger
- osfullname
- osmajorrelease
- osrelease
- osrelease_info
- path
- productname
- ps
- pythonexecutable
- pythonpath
- pythonversion
- saltpath
- saltversion
- saltversioninfo
- selinux
- serialnumber
- server_id
- shell
- systemd
- virtual
- zmqversion
salt 'linux-node2*' grains.ls
获取内存
[root@linux-node1 web]# salt 'linux-node2*' grains.item mem_total
linux-node2.example.com:
----------
mem_total:
注意:grains获取的信息是静态的,因为是在minion启动的时候收集上来的,比如热插拔磁盘grains数据默认是不会发生变化
salt使用grains筛选特点的minion执行任务
比如筛选CentOS系统执行uptime命令
[root@linux-node1 web]# salt -G 'os:CentOS' cmd.run "uptime"
linux-node2.example.com:
:: up :, user, load average: 0.00, 0.01, 0.05
grains的使用场景有很多
1.过滤信息用于jinja模板
2.salt筛选指定的minion执行任务
3.可以收集服务器硬件信息然后格式化数据入库,再进行web展示,百度有相关的开源产品(http://echarts.baidu.com/examples.html)
4.做监控数据采集
5.CMDB
....
https://github.com/unixhot/saltbook-code/tree/master
SaltStack应用grains和jinja模板-第四篇的更多相关文章
- saltstack通过jinja模板,grains方式将配置的变量值写入到配置文件中?
需求描述: 在通过saltstack进行jinja模板获取值的时候,可以通过grains的方式,获取一些操作系统相关的信息,比如,OS,ip地址等,在这里演示下,做个记录. 演示: 1.修改sls文件 ...
- SaltStack配置管理-jinja模板
上一篇:SaltStack配置管理-状态间关系 需求:需要apache配置文件里面监听的端口是每个minion本地的地址 saltstack默认的模板是jinjia模板 参考文档:http://doc ...
- saltstack通过jinja模板,将变量值增加到配置文件中?通过引用变量值修改配置文件?
需求描述: 在使用saltstack的时候,有的时候,需要根据不同的变量来增加配置,比如,bind,监听端口,这些都可以通过变量写入,并且在配置的时候引用,下面是一个例子,用来演示,如何使用jinja ...
- 自动化运维工具saltstack04 -- 之jinja模板
jinjia模板 需求:想让saltstack的file模块分发到minion端的配置文件监听minion端的IP和端口,如何用变量实现?看下面!! 1.jinja模板加grains使apache监听 ...
- [salt] jinja模板中变量使用pillar的几种方法
先转载下jinja模板中使用变量的方法,后文主要讲解pillar的变量使用方法 一.jinja模版的使用方法: 1.file状态使用template参数 - template:jinja 2.模版文件 ...
- 5 LAMP配置管理:模块(state、file、pkg、service)、jinja模板、job管理、redis主从
1. 配置管理:state和file https://docs.saltstack.com/en/latest/topics/states/index.html Full list of states ...
- 架构师成长之路5.6-Saltstack配置管理(jinja模板)
点击架构师成长之路 架构师成长之路5.6-Saltstack配置管理(jinja模板) 配置管理工具: Pupper:1. 采用ruby编程语言:2. 安装环境相对较复杂:3.不支持远程执行,需要FU ...
- 2. SaltStack数据系统: Grains、Pillar
1. SaltStack数据系统 Grains (谷物) Pillar (支柱) 2.Grains Grains存放着Salt命令启动时收集的信息,运行时不收集 2.1 信息查询 收集资产 网卡,i ...
- Flask最强攻略 - 跟DragonFire学Flask - 第四篇 Flask 中的模板语言 Jinja2 及 render_template 的深度用法
是时候开始写个前端了,Flask中默认的模板语言是Jinja2 现在我们来一步一步的学习一下 Jinja2 捎带手把 render_template 中留下的疑问解决一下 首先我们要在后端定义几个字符 ...
随机推荐
- Oracle的启动与关闭
启动数据库的前提条件: 环境变量定义好($ORACLE_HOME,$ORACLE_SID,$PATH) 能密码文件认证或OS认证(确保能登入sys) 有正确的参数文件(启动数据库需要查找参数文件,默认 ...
- 移动端click时间、touch事件、tap事件
一.click 和 tap 比较 两者都会在点击时触发,但是在手机WEB端,click会有 200~300 ms,所以请用tap代替click作为点击事件. singleTap和doubleTap 分 ...
- 页面加载异常 清除浏览器静态文件 js css 缓存 js动态加载js css文件,可以配置文件后辍,防止浏览器缓存
js清除浏览器缓存的几种方法 - 兔老霸夏 - 博客园 https://www.cnblogs.com/Mr-Rocker/p/6031096.html js清除浏览器缓存的几种方法 一.CSS和 ...
- XML External Entity attack
解析外部xml给本地带来的安全隐患. https://en.wikipedia.org/wiki/XML_external_entity_attack An XML External Entity ( ...
- datasnap rest Windows客户端编写
首先吐槽一下XE关于datasnap的资料真的是太少了... 服务端用DSHTTPService1控件可以实现http接口方式的调用,返回的都是json格式数据,适用于跨平台解析. 这里着重强调一下d ...
- 【c++】生成浮点随机数
c++11:std::uniform_real_distribution<>直接求(尖括号不填默认生成double) 随机10个在1-2之间的浮点数 #include <random ...
- Divisibility by Eight---cf550C(被8整除 暴力)
题目链接:http://codeforces.com/problemset/problem/550/C 题意是给你一个不操过100位的数,问删除m位之后,问剩下的数不改变顺序能被8整除的数存在不存在: ...
- riemann的安装和使用
Riemann monitors distributed systems. 具体介绍就不多说了,一个分布式的监控系统.可以接收各种event上报,然后通过强大的脚本和插件,展示曲线,柱状,饼图等来对系 ...
- 3.Github介绍
很多人都知道,Linus在1991年创建了开源的Linux.从此,Linux系统不断发展,已经成为最大的服务器系统软件了.Linus虽然创建了Linux,但Linux的壮大是靠全世界热心的志愿者参与的 ...
- (0.2.1)mysql数据库环境-操作系统配置
目录 1.基于Linux平台的Mysql项目场景介绍 2.mysql数据库运行环境准备-最优配置 2.1.如何查看官方文档了解环境要求 2.2.安装虚拟机环境与操作系统 2.3.操作系统最优配置9大步 ...