Articles of saltstack

盐奴隶继续失去与主的联系

我正在testing盐。 我有一个简单的3个VirtualBox虚拟机的testing设置 – 在其中一台机器上运行salt-master,在另外两台虚拟机上运行salt-minions。 我可以启动salt minion虚拟机的任何一个,他们将连接到主和接收命令。 如果我启动两个虚拟机,它们都会短时间连接,然后一个虚拟机会掉线并显示为未连接主机。 实际上,我甚至不需要有多个VM客户端处于活动状态。 有1个虚拟机客户端和1个VM虚拟机,它会断开连接。 我可以重新启动salt-minion,它会重新连接到master并且再次接收命令…至less几分钟。 最终,它会显示为主连接断开。 在debugging中运行salt-minion似乎没有显示任何解释为什么它在主服务器上显示为断开连接。 什么可能导致这个? 编辑: 我使用的操作系统是Ubuntu 14.04。 主人和奴才环境是相同的,除了盐主包。 在master和minion上运行–versions-report给出以下版本: Salt: 2015.5.3 Python: 2.7.6 (default, Mar 22 2014, 22:59:56) Jinja2: 2.7.2 M2Crypto: 0.21.1 msgpack-python: 0.3.0 msgpack-pure: Not Installed pycrypto: 2.6.1 libnacl: Not Installed PyYAML: 3.10 ioflo: Not Installed PyZMQ: 14.0.1 RAET: Not Installed ZMQ: 4.0.4 Mako: Not […]

构build分阶段环境的盐状态文件

Salt State Files和Pillarconfiguration应该如何结构化,以便为dev , qa和production等分阶段环境以及function分支平滑部署不同的minionangular色? 我已经在我的Python项目源代码的一个单独的存储库中安排了我的根和柱状态文件,如下所示: salt-states/ pillar/ web/ init.sls production.sls qa.sls dev.sls db/ init.sls production.sls qa.sls dev.sls top.sls roots/ web/ init.sls production.sls qa.sls dev.sls db/ init.sls production.sls qa.sls dev.sls top.sls 我的top.sls文件应该如何利用这个结构,以及如何以这种方式定位特性分支?

如何列出小工具连接的IP地址?

有些小伙伴在NAT后面,我想从主站看到他们的公共IP地址(为了防火墙的目的)。 有external_ip粮食,但AFAIK它依赖于第三方服务,甚至不能为我工作可靠。

Salt-Stack从salt master复制目录到minion

背景 :我一直在努力build立一个盐环境,并达到了我不仅要分发文件而且还要分发目录的地步。 我发现最明智的方法是将要复制到/srv/salt/path_to_dir放在主服务器上,然后使用cp.get_dir命令将其分发。 我所做的 :为了testing我创build的设置和命令/srv/salt/tmp/foo并在其中放置了两个文件。 然后,当我在salt minion_name cp.get_dir salt://tmp/foo /tmp/foo运行命令salt minion_name cp.get_dir salt://tmp/foo /tmp/foo时,有一行输出结果正好读取minion_name: 有点奇怪,除了仆从的名字,没有任何输出,甚至是错误,但是好的,我去检查仆从,看看是否有什么事情发生。 在minion中它没有出现在/tmp/ ,并且/etc/salt/或/var/cache/salt/没有新的内容。 我检查了/var/log/salt/minion ,但没有什么,除了我的小时的旧尝试,以弄清楚为什么我不能使用file.copyrecursion设置为true分配文件。 我的问题 :有什么明显的我做错了吗? 根据文件,我发现我所做的工作。 似乎也没有任何错误输出。 我应该尝试使用不同的命令或方法来通过salt来分发来自主人的内容的文件夹吗? 附加信息 :主人和所有的爪牙都是Debian系统。 所安装的版本的盐是salt 2014.1.3 (Hydrogen)在主salt-minion 0.17.5和salt-minion 0.17.5和salt-minion 2015.5.3对奴才我试过这种方法。

Ubuntu上的LXC和Saltstack minion_idconfiguration

我使用LXC作为testingSaltStack脚本的实验平台。 该实验室由+5 Ubuntu 12.04 LTS容器组成,我通过克隆模板容器来预先安装salt-minion 。 一旦我创build模板容器并安装salt-minion minion_id ,模板将根据hostname ( test-template )获取它的Salt minion_id 。 如果我lxc-clone这个模板,那么所有的克隆都会有这个模板的minion_id ,但是我希望克隆的minion_id与它们的hostname相匹配( test-machine-{1,2,3,4,5} minion_id test-machine-{1,2,3,4,5} )。 有没有办法让这个脚本与bash或者我应该采取另一条path相同的效果? 更新 : 我查看了一些lxc脚本,发现lxc脚本使用定义了get_default_lxcpath函数的/usr/share/lxc/lxc.functions文件,所以我当前的脚本如下所示: . /usr/share/lxc/lxc.functions # clone template lxc-clone -o $template -n "$container" # create saltstack minion config dir if does not exist minion_id_path="$(get_default_lxcpath)/$container/rootfs/etc/salt" mkdir -p "$minion_id_path" # set minion-id directly from container name […]

如何在NAT后面使用Salt Stack(不可公开访问,默认salt端口未打开)?

可以使用标准端口,在所有的消费者NAT路由器中默认使用标准端口(并且没有公共DNSlogging或者静态IP),Salt Stack minions可以与NAT /防火墙等之后的salt master进行通信? 我正在通过我的第一个盐教程的方式,这是我卡住的地方。 我可以在Ubuntu salt-master上configurationiptables。 但是我无法控制那些将要坐在后面的路由器/ NAT。 到目前为止,我试过这些设置: 的/ etc /盐/主: publish_port: 465 ret_port: 443 的/ etc /盐/仆从: master_port: 465 这没有用。 背景: 我有一个定制开发的应用程序,目前运行在约40 Kubuntu笔记本电脑(&更多计划)。 每隔几个月我都需要更新应用程序。 (通常这相当于replace一个需要root权限的.jar文件。)我还必须运行Ubuntu更新和其他一些小的东西。 我一直在使用Team Viewerlogin到每个客户端。 我想大大改善这个过程。 我知道的两个选项是: 使用反向ssh隧道和bash脚本。 我testing了这个,它的工作原理。 但是我没有得到任何报道等等,我会用Salt Stack得到。 使用Salt Stack(或类似的)pipe理工具。 但是我需要一个非常简单的工具。 我不能随时投入大的学习曲线。 我看着Puppet和一堆相关的工具。 我发现的唯一一个对我来说足够简单的(就目前而言)是Salt Stack。 但是我现在被卡住了,因为我的奴才不能达到盐师,如上所述。 我欣赏build议。

我应该如何备份SaltStack的支柱数据?

将salt state备份到git repo是有意义的,因为那里不应该有任何敏感数据。 但是支柱数据呢? 我应该为此创build一个单独的git仓库,或者把它放在S3存储桶中,或者以某种方式encryption数据?

salt top.sls不会在`salt-run fileserver.update`上用gitfs更新

我有一个单盐连接盐主。 我最近从'webserver.sls'重命名为'jetty.sls'。 我用pygit2和ssh使用gitfs后端。 我只启用了gitfs后端。 /etc/salt/master : fileserver_backend: # – roots – git gitfs_provider: pygit2 gitfs_remotes: – [email protected]:Groomblecom/[repo].git: – pubkey: /root/salt-credentials/id_rsa.pub – privkey: /root/salt-credentials/id_rsa 但是,每当我运行salt-run fileserver.update && salt '*' state.highstate我得到一个错误: Data failed to compile: ———- No matching sls found for 'webserver' in env 'base' 运行salt '*' state.show_sls jetty给出预期(长)输出,与我在bitbucket回购中看到的一致。 运行salt '*' state.show_top给出以下内容: ———- base: – common – […]

SaltStack:批量调度高端状态

我想安排一个highstate运行,每天晚上但不平行。 有没有办法将batch选项添加到调度系统? 例: schedule: highstate: enabled: True function: state.highstate maxrunning: 1 when: 3:00am kwargs: batch: 1 理想情况下,我也想随机的时间运行。 我想我可以安排在一个小时的时间范围内每两小时运行一次,所以它只能运行一次: schedule: highstate: enabled: True function: state.highstate maxrunning: 1 range: start: 3:00am end: 4:00am hours: 2 kwargs: batch: 1

SaltStack:调用一个sls文件的单一状态

我无法调用一个sls文件的单一状态。 整个sls文件的作品 这工作: salt-ssh w123 state.sls monitoring 这工作: salt-ssh w123 state.show_sls monitoring 以上输出一项: monitoring_packages: ———- __env__: base __sls__: monitoring.packages pkg: |_ ———- pkgs: – python-psutil – installed |_ ———- order: 10000 我试过了 现在我只想调用monitoring_packages ,而不是整个sls文件: 失败: salt:/srv # salt-ssh w123 state.sls_id monitoring_packages monitoring w123: Data failed to compile: ———- No matching sls found for 'monitoring' in […]