gpt4 book ai didi

replace - 如何使用一种 saltstack 状态对同一文件进行多次替换?

转载 作者:行者123 更新时间:2023-12-04 14:12:02 25 4
gpt4 key购买 nike

这是我的目标文件:

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'

但是,理想情况下,我更喜欢 saltstack 方式。

我希望它看起来像这样:
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

最佳答案

对于这么小的文件,我可能会使用 ahus1 建议的模板。

如果文件更大和/或我们不想控制其他行只是确保这两个行是正确的,我认为多个状态 ID(如 OP 所述)是一个好方法。就像是:

/opt/nexus-2.8.0/conf/nexus.properties-jetty:
file:
- replace
- name: /opt/nexus-2.8.0/conf/nexus.properties
- pattern: '\$\{bundleBasedir\}' # without escapes: '${bundleBasedir}/nexus'
- repl: '/my/second/path/002/nexus'

/opt/nexus-2.8.0/conf/nexus.properties-nexus:
file:
- replace:
- name: /opt/nexus-2.8.0/conf/nexus.properties
- pattern: '\$\{bundleBasedir\}\/WEB-INF' # without escapes: ${bundleBasedir}/WEB-INF
- repl: '/myfirstdir001/'

我的配置中有类似的设置,但我使用 salt.states.file.line用我的值替换一些行。另外我用了 salt.states.file.managed带有模板和 replace: False如果文件丢失,则初始化文件,但一旦文件存在,只有 line国家正在做出改变。

关于replace - 如何使用一种 saltstack 状态对同一文件进行多次替换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28123186/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com