如何配置SaltStack首次传输文件(或安装包)?

时间:2016-11-25 02:19:39

标签: devops salt-stack configuration-management

我正在运行两个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?

1 个答案:

答案 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或其他任何将用户内容与应用程序分离的方法都是更好的方法。