gue*_*tli 5 debugging reverse-engineering configuration-management salt-stack
如果你看一下设置的主机是SaltStack,那么它有时候就像用vi查看二进制文件一样.
您不知道配置文件是如何创建的.
这会很难解决问题.文件来源的逆向工程需要花费太多时间.
我的目标:通过查看minion(由salt创建)上的unix配置文件到配置来源的源,可以轻松找到方法.就像$Id$在svn和cvs中一样.
我和朋友的一个想法是:
状态file.managed应该(可选)添加文件的源.
例:
我的sls文件包含这个:
file_foo_bar:
file.managed:
- source:
- salt://foo/bar
Run Code Online (Sandbox Code Playgroud)
然后,创建的文件应包含此注释.
# Source: salt://foo/bar
Run Code Online (Sandbox Code Playgroud)
当然这并不简单,因为将注释放入配置文件有不同的方法.
这可行吗?或者是否有更好的解决方案来实现我的目标.
更新
通常我知道我做错了什么,并且可以轻松找到根.如果有几个人在州树上工作,就会出现问题.
这是一个起点,您可以使用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 }}
Run Code Online (Sandbox Code Playgroud)
然后在minion上调用pillar时会得到以下结果:
$ salt-call pillar.get salt_managed
local:
Salt managed: File modified on 2016-10-18 11:12:40
Run Code Online (Sandbox Code Playgroud)
您可以通过将其添加到配置文件的顶部来使用它,例如如下所示:
{{ pillar.get('salt_managed') }}
Run Code Online (Sandbox Code Playgroud)
更新:
我找到了一种可能对某人有用的解决方法。假设我们有多个状态可以修改同一个文件。我们如何知道状态 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 }}"
Run Code Online (Sandbox Code Playgroud)
barfile 的内容是:
This is a new file
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
目前的内容foofile是:
This file was managed by using this salt state statedir.test
This is a new file
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
240 次 |
| 最近记录: |