这是我的目标文件:
Sonatype Nexus
# ==============
# This is the most basic configuration of Nexus.
# Jetty section
application-port=8081
application-host=0.0.0.0
nexus-webapp=${bundleBasedir}/nexus
nexus-webapp-context-path=/nexus
# Nexus section
nexus-work=/opt/nexuswork
runtime=${bundleBasedir}/nexus/WEB-INF
我知道使用regex或简单的sed脚本可以轻松实现此目的:
sed -i 's/${bundleBasedir}\/..\/my\/second\/path\/002\/\/nexus/\/myfirstdir001\/g'
但是,理想情况下,我更喜欢盐栈方式。
我希望它看起来像这样:
Sonatype Nexus
# ==============
# This is the most basic configuration of Nexus.
# Jetty section
application-port=8081
application-host=0.0.0.0
nexus-webapp=/my/second/path/002/nexus # changed
nexus-webapp-context-path=/nexus
# Nexus section
nexus-work=/opt/nexuswork
runtime=/myfirstdir001/nexus/WEB-INF # changed
我还没有理解这方面的saltstack文档。
Saltstack的salt.states.file.replace文档似乎相当简单:
http://docs.saltstack.com/en/latest/ref/states/all/salt.states.file.html#salt.states.file.replace
这是我试过的:
/opt/nexus-2.8.0/conf/nexus.properties
file: # state
- replace
- pattern: '\$\{bundleBasedir\}' # without escapes: '${bundleBasedir}/nexus'
- repl: '/my/second/path/002/nexus'
# - name: /opt/nexus-2.8.0/conf/nexus.properties
# - count=0
# - append_if_not_found=False
# - prepend_if_not_found=False
# - not_found_content=None
# - backup='.bak'
# - show_changes=True
- pattern: '\$\{bundleBasedir\}\/WEB-INF' # without escapes: ${bundleBasedir}/WEB-INF
- repl: '/myfirstdir001/'
我可能会尝试多个状态ID,但这似乎不够优雅。
如果还有其他事情我要搞砸了,请指教!
我喜欢找到解决方案。
此外,如果有人要求人们改进盐文件,我认为我的团队可以说服一些人。
这是我发现的最接近别人问这个问题的事情:
http://comments.gmane.org/gmane.comp.sysutils.salt.user/15138
答案 0 :(得分:4)
根据我的理解,这样做的方法是:在salt中放置nexus.properties的模板文件并使用file.managed,如文档中所示http://docs.saltstack.com/en/latest/ref/states/all/salt.states.file.html
你最终会得到类似的东西:
/opt/nexus-2.8.0/conf/nexus.properties:
file.managed:
- source: salt://nexus/nexus.properties.jinja
- template: jinja
- defaults:
bundleBasedir: "..."
然后,您将在文件中使用Jinja模板:
# Jetty section
application-port=8081
application-host=0.0.0.0
nexus-webapp={{ bundleBasedir }}/nexus
nexus-webapp-context-path=/nexus
请参阅此处查看Jinja模板:http://docs.saltstack.com/en/latest/ref/renderers/all/salt.renderers.jinja.html
我希望它有所帮助。