gpt4 book ai didi

debugging - salt 栈 : Reverse engineering where a file comes from

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

如果您查看设置为 SaltStack 的主机,那么有时就像使用 vi 查看二进制文件。

您不知道配置/文件是如何创建的。

这使得故障排除错误变得困难。文件来源的逆向工程需要太多时间。

我的目标是:轻松找到从查看 minion 上的 unix 配置文件(由 salt 创建)到此配置来源的方法。赞 $Id$在 svn 和 cvs 中。

我和一个 friend 有一个想法:

国家file.managed应该(可选)添加文件的来源。

例子:

我的 sls 文件包含以下内容:

file_foo_bar:
file.managed:
- source:
- salt://foo/bar

然后创建的文件应包含此注释。
# Source: salt://foo/bar

当然这并不简单,因为有多种方法可以将注释放入配置文件中。

这可行吗?或者对我的目标有更好的解决方案。

更新

通常我知道我做错了什么并且可以很容易地找到根源。如果几个人在一个状态树上工作,就会出现问题。

最佳答案

这是一个起点,您可以使用 Salt Pillar 获取由 Salt 管理的修改文件的日期和时间。 .

让我们调用我们的变量 salt_managed .创建一个像下面这样的柱子文件:

{% set managed_text = 'Salt managed: File modified on ' + salt.cmd.run('date "+%Y-%m-%d %H:%M:%S"') %}

salt_managed: {{ managed_text | yaml_dquote }}

然后在 minion 上调用 pillar 时,您将得到以下结果:
$ salt-call pillar.get salt_managed
local:
Salt managed: File modified on 2016-10-18 11:12:40

您可以通过将其添加到配置文件的顶部来使用它,例如:
{{ pillar.get('salt_managed') }}

更新:

我找到了一个可能对某人有用的解决方法。假设我们有多个状态可以修改同一个文件。我们怎么知道状态 X 负责修改该文件?通过执行以下步骤:

1-我创建了一个这样的状态:
Create a File:
file.managed:
- name: /path/to/foofile
- source: salt://statedir/barfile
Add file header:
file.prepend:
- name: /path/to/foofile
- text: "This file was managed by using this salt state {{ sls }}"

barfile 的内容是:
This is a new file

2-从minion调用状态,这将是结果:
$ salt-call state.sls statedir.test
local:
----------
ID: Create a File
Function: file.managed
Name: /path/to/foofile
Result: True
Comment: File /path/to/foofile updated
Started: 07:50:45.254994
Duration: 1034.585 ms
Changes:
----------
diff:
New file
mode:
0644
----------
ID: Add file header
Function: file.prepend
Name: /path/to/foofile
Result: True
Comment: Prepended 1 lines
Started: 07:50:46.289766
Duration: 3.69 ms
Changes:
----------
diff:
---
+++
@@ -1,1 +1,2 @@
+This file was managed by using this salt state statedir.test
This is a new file

Summary for local
------------
Succeeded: 2 (changed=2)
Failed: 0
------------
Total states run: 2

当前内容 foofile是:
This file was managed by using this salt state statedir.test
This is a new file

关于debugging - salt 栈 : Reverse engineering where a file comes from,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39747351/

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