Articles of saltstack

使用Salt轻松安装txt文件中的软件包列表

盐已经提供了一个点状态,可以用作: pip.installed: – requirements: requirements.txt 我想用easy_install和尽可能less的杂耍来做同样的事情。 我可以理解,我可以循环Jinja中的命令输出,但是我只会select作为最后的手段。 请提供一些关于如何进行的指导。

用盐为非root用户生成ssh密钥

我需要为用户生成ssh-keys(公共/私有对)。 这个用户已经在我所有的盐族中。 如何从我的盐大师为这个用户生成ssh密钥? 对于root用户,我使用这个命令生成密钥,它工作正常: salt '*application-server-*' cmd.run "ssh-keygen -q -N '' -f /root/.ssh/id_rsa" 我可以发出下面的命令,可以为helen生成ssh-keys; 但是权限和所有权会有所不同; 所以需要再次发出命令来更正权限和所有权: salt '*application-server-*' cmd.run "ssh-keygen -q -N '' -f /home/helen/.ssh/id_rsa" 有没有任何方法可以用盐作为用户helen而不是root来运行这个命令? 一般来说,有没有一种方法可以让盐作为非root用户运行命令?

我如何让cmd.run在salt-stack中回答提示?

我有一个正在执行state.sls的盐脚本,如下所示: salt '*' state.sls foo.bar 在我的脚本中,我有这样的: foo-bar: cmd.run: – php foo.php bar –delete – cwd: /srv/foo –delete标志将导致脚本首先截断数据库。 我的问题是,它提出一个问题,并期待一个input。 root@host:/srv/foo# php foo.php bar –delete This is going to remove all data in the database. Are you sure? [y/n]: 因为盐不知道如何回答,它会超时,中止,做我不打算的事情。 cmd.run上的盐文档没有说这样做,我不知道什么谷歌。 我知道在一个Perl实现中,我会使用Expect来执行此操作。 我如何告诉盐,请用y回答?

你怎么能让一个盐执行模块在失败时返回一个非零的退出码

我试图使用jenkins运行一个盐执行模块命令; 如果任何仆从未能执行命令,我希望Jenkins作业失败。 jenkins只是遵循一般shell脚本实践失败的非零退出代码,所以使其工作盐也应该。 这就是我卡住的地方,运行像这样的预期工作: root@salt-master:~# salt –batch-size 1 –failhard -G 'ec2_roles:stage' cmd.run 'exit 0' Executing run on ['stage-12'] jid: 20170209212325270060 retcode: 0 stage-12: Executing run on ['stage-13'] jid: 20170209212325423735 retcode: 0 stage-13: Executing run on ['stage-197'] jid: 20170209212325590982 retcode: 0 stage-197: root@salt-master:~# echo $? 0 root@salt-master:~# salt –batch-size 1 –failhard -G 'ec2_roles:stage' cmd.run 'exit 1' […]

SaltStack支柱包括在同一把钥匙下

我找不到关于在同一个密钥下有多个包含文件的任何内容,但是当我尝试它时,我最终只包含了根密钥下的最后一个包含密钥。 例如: /srv/pillar/top.sls base: '*': – ports cat /srv/pillar/ports/init.sls include: – ports.frontend: key: ports – ports.backend: key: ports /srv/pillar/ports/backend.sls service1: 10000 service2: 10001 /srv/pillar/ports/frontend.sls web1: 8000 web2: 8001 salt '*' pillar.items没有其他键的结果是这样的: ports: ———- service1: 10000 service2: 10001 期望的结果将如下所示: ports: web1: 8000 web2: 8001 service1: 10000 service2: 10001

如果使用引导脚本安装,则升级SaltStack Master和Minion

正如标题所述,如果我使用bootstrap.sh脚本安装它们,我如何升级SaltStack(Master和Minion)?

在盐命令的主人的名字

我对盐很新,所以有可能我错过了一些东西,但是我无法弄清楚。 我使用salt作为命令执行工具(到目前为止没有configurationpipe理)。 我无法find一种方法来从盐唾手可得的configuration,并把它们放到git存储库。 我最终试图实现的是给盐主这样的configfiles列表 /etc/ssh/ssh_config /etc/vim/vimrc etc. 并得到salt-master运行获取这些文件,把它放在文件夹中 /srv/salt/minions/configs/minion01/etc/ssh/ssh_config /srv/salt/minions/configs/minion02/etc/ssh/ssh_config 那么我可以让主人把所有的东西都推到我们的git服务器上,并且让所有的configuration版本化。 我知道salt可以处理状态,但我发现的一切都是关于将文件从主文件推送到备用文件以保持状态,但是我只想从所有服务器收集所有更新configuration并自动对其进行版本。 有一个命令叫 salt \* cp.push /etc/ssh/ssh_config 这将configuration文件推到/ var / cache /盐/ minion / minion01 /文件/ etc / ssh / ssh_config,这似乎是完美的,但我不知道如何告诉盐做文件更改(我们有几个服务器和大量的configuration到版本…),只有取得它,如果它已经改变,所以我不必每隔五分钟左右(通过cron)获取所有文件。 任何人都有一个想法如何用盐做到这一点? 问候,Mohrphium

用Saltstack部署最新的.NET Framework

是否有Windows Server 2008+的“apt-get install .NET-Framework”? 有些方法可以更新到最新的.NET Framework 4+,最好使用Saltstack?

监视服务器以了解自动化软件以外的更改

我工作的公司目前正在研究为我们的服务器(所有Ubuntu / FreeBSD)部署集中式自动化系统(如Salt或Puppet)。 我们可能会跟盐一起去,但我认为这与我的问题无关。 我的问题:有没有一种好的方法来监控机器上是否包含自动化系统中未包含的本地更改? 例如:为了快速修复,某人在给定机器上启动了服务或修改了configuration文件。 有没有办法使用Salt / Puppet /什么来检查这些东西? 或者我需要使用像AIDE这样的外部程序吗?

延迟命令的执行,直到其他事情已经运行

我正在尝试编写一个盐的部署脚本。 它大部分工作。 我必须运行一段时间的高速状态才能完成。 我最大的问题是如何根据具体的第一个执行命令,并且他们实际上正在完成/工作。 这是我的demo.sls盐状态: {% set web_root = "/var/www/demo/" %} /var/www/venv/demo: virtualenv.managed: – system_site_packages: False – require: – pkg: python-virtualenv demo: git.latest: – name: git://localhost/demo.git – target: {{ web_root }} demo_pip: cmd.wait: – name: 'source /var/www/venv/demo/bin/activate && pip install -r requirements.txt' – cwd: {{ web_root }} – watch: – git: demo run_migrations: cmd.wait: – […]