我正在运行两个RedHat实例。我在一台机器上安装了SaltMaster,在另一台机器上安装了SaltMinion。我正在使用Salt的免费版本。我想测试SaltStack来执行基本的配置管理任务。如果它可以将文件从SaltMaster传输到SaltMinion,那就太好了。如果它可以在SaltMinion上安装Apache Web服务器,那就太好了。这两项任务都会帮助我学习。我的学习目标是半灵活的。
我可以使用salt '*' test.ping
。回复是True
。我尝试了这个命令:salt '*' state.apply
我收到了这个错误:
> hostname.fqdn:
> Data failed to compile:
> ----------
> No matching salt environment for environment 'qa' found
> ----------
> No matching sls found for 'qa1' in env 'qa'
> ----------
> No matching sls found for 'base1' in env 'base'
> ----------
> No matching salt environment for environment 'dev' found
> ----------
> Specified SLS base1 in saltenv dev is not available on the salt master or through a configured fileserver
我修改了/ etc / salt / master文件。我取消注释这些内容:
fileserver_backend:
- git
- roots
我再次尝试了这个命令:salt '*' state.apply
我收到了这个错误:
> [ERROR ] Error parsing configuration file: /etc/salt/master -
> expected '<document start>', but found '<block mapping start>' in
> "<string>", line 547, column 1:
> fileserver_backend:
> ^ [ERROR ] Error parsing configuration file: /etc/salt/master - expected '<document start>', but found '<block mapping start>' in
> "<string>", line 547, column 1:
> fileserver_backend:
> ^
我一直在这里遵循这些指示: https://docs.saltstack.com/en/latest/topics/tutorials/states_pt1.html
我创建了一个webserver.sls
文件。
我将这些行插入内容:
apache: # ID declaration
pkg: # state declaration
- installed # function declaration
我没有看到上述方向中的三条线如何足以配置SaltStack工作。 apache安装介质需要在哪里?转移将从何处发生?我应该将媒体下载到SaltMaster吗?我会这么认为。但是我会把它放在哪里?我有一个卫星服务器,可以让yum命令工作。
或者,如何让SaltStack将文件从SaltMaster传输到SaltMinion?
答案 0 :(得分:0)
第一个错误([...]No matching sls found for 'qa1' in env 'qa'[...]
)表示您已配置了许多不同的环境(file_roots
),这些环境在主文件系统中不存在。您解决此问题的方法是正确的,但会导致此错误:
[错误]解析配置文件时出错:/ etc / salt / master - expected'',但在'“,第547行,第1列中找到'':fileserver_backend:^ [错误]解析配置文件时出错:/ etc / salt / master - 期望'',但在'“,第547行,第1列中找到'':fileserver_backend:^
你不应该再test.ping
你的仆从了,因为盐主不应该再跑了,是吗?要解决它,只需阅读错误消息。它会告诉您盐主配置文件中的哪个盐不满意。
fileserver_backend
配置哪些类型的后端应该可用。您应该检查file_roots
配置以实际定义可用的根。根指的是文件系统中的salt state文件夹。
一个非常简单的配置可能看起来像这样:
file_roots:
base:
- /srv/salt
它假设/srv/salt
是您的州树的根 - 这实际上意味着您的webserver.sls
应该位于此文件夹中。
你的webserver.sls
看起来很有希望 - 当你应用它时,它应该在minion上安装apache2。
在主人身上管理配置文件并将其转移到仆从是盐很容易实现的。一个简单的状态可能如下:
/etc/myawesomeconfigurationfile.conf:
file.managed:
source: salt://myawesomefile # refers to /srv/salt/myawesomefile
user: root
group: root
mode: 640
您还要求提供要管理的 media 文件。如果您谈论与应用程序相关的数据,使用salt来移动它们并不是一个好主意。 IMO的其他方法,如NFS,GlusterFS或其他任何将用户内容与应用程序分离的方法都是更好的方法。