在我的 Puppet-manifest 中,我需要执行一个命令,但只有在另一个 exec的数组驱动集合完成之后。像这样(伪代码):
define foo() {
exec { "touch $name": }
}
....
{
$bars = [ "a", "b", "c" ]
foo { $bars : }
exec { "echo Done" :
require => [ Foo["a"], Foo["b"], Foo["c"] ]
}
}
Run Code Online (Sandbox Code Playgroud)
如何在不$bars手动重复列表的每个元素的情况下实现与上面给出的相同的依赖项?
我有一对服务器,我想将它们直接相互连接——而不是通过网络其余部分共享的交换机。我希望从直接连接(包括更大的 MTU)提供的更低延迟和更高带宽中受益。
两台机器目前都运行 FreeBSD-11.2,每台机器都有自己的 ZFS 池和多个文件系统。快速交叉访问这些文件系统是主要目标之一。
为此我买了一对二手卡(Mellanox IBM 46M2201 Dual Port ConnectX 4X),有以下问题:

非常感谢您提供任何见解。如果有在线文档回答了(其中一些)这些问题,我很乐意提供链接——我能找到的一切似乎都是特定于供应商的......
(为什么这个关于连接服务器的问题在Serverfault上被认为是“题外话” ?)
我们已经设置了一对 GlusterFS 服务器镜像。无需特殊调整,无论官方 RHEL6 RPM 中的 GlusterFS-3.5.1 “开箱即用”什么,这就是我们所拥有的。
集群可以工作,但性能非常糟糕。例如,firefox-31.0.source.tar.bz2通过本地主机上的 GlusterFS 提取一个大的 tarball () 需要长达 44 分钟的时间。直接在同一磁盘上提取相同的文件所需时间不到 2。删除创建的树也存在类似的差异(通过 gluster 需要 10 分钟)...
当然,可以预见的是,需要进行镜像,等等,使用网络的文件系统会更慢——但是慢30 倍?简单地复制大文件速度很快——所以这不是我们所缺乏的带宽。当解压正在运行时,我看到glusterfs(客户端)和glusterfsd(服务器)进程都消耗了大量的 CPU(每个进程大约 10%),但系统仍然保持大约 70% 的空闲状态——两个 gluster 进程都消耗了大量的 CPU。比提取 bzip2 和 tar 更忙......他们在做什么?
我可以做一些调整来显着提高性能吗?或者我应该尝试ceph(或gfarm?)而不是 gluster ?或者对于大量的小文件来说它们都很糟糕?谢谢你!
performance-tuning distributed-filesystems glusterfs ceph glusterfs-3.5
像大多数其他人一样,我们的存储库服务器需要尽快禁用 SSLv3(和 v2)。
然而,这样做似乎破坏了我们的 git 客户端——至少,在 RHEL5 上(来自我的 FreeBSD 桌面的连接工作正常)。即使是最新的 git (2.1.2) 也失败了,将 OpenSSL 库升级到供应商的最新版本也无济于事。
然而!相同的 git-client 对 github.com 工作得很好——而且 github.com 也已经禁用了 SSLv3。通过反复试验,我将我们服务器的(Apache)SSL 配置设置为与 github 的配置相匹配:
SSLProtocol ALL -SSLv2 -SSLv3
SSLHonorCipherOrder On
SSLCipherSuite "AES128-SHA AES256-SHA RC4-SHA"
Run Code Online (Sandbox Code Playgroud)
通过sslscan在我们的服务器和 github 上运行,我得到了接受和拒绝的相同密码列表。但是 git 继续失败:
% git clone https://git.example.net/git/puppet-hiera
Cloning into 'puppet-hiera'...
* Couldn't find host git.example.net in the .netrc file, using defaults
* About to connect() to git.example.net port 443
* Trying 10.89.8.27... * connected
* Connected to git.example.net (10.89.8.27) …Run Code Online (Sandbox Code Playgroud) 尽管 Ansible 本身有触发自定义错误的方法,但我找不到类似 Jinja 的任何内容。
我当前的方法使用语法错误:
{% if 'ansible_mounts' in hostvars[host] %}
# {{ host }} knows its mount-points
{% else %}
# {% error!! No ansible_mounts listed for host - fact-gathering must've failed %}
{% endif %}
Run Code Online (Sandbox Code Playgroud)
但是那些在运行时渲染得很差——需要查看模板文件内部并搜索错误(渲染甚至不包括行号!)。
有没有办法从 Jinja 模板内部输出整洁的失败消息?
对于某些文件类型,简单的统一差异不是很有帮助。一个明显的例子是二进制文件,但即使某些表面上是文本的文件——例如 SSL 证书 ( .pem)——也属于这一类。
那么,任务可以指定自己的显示差异的方法吗?就像是:
- name: Update SSL certificate
copy:
src: etc/ssl/mycert.pem
dest: /etc/ssl/mycert.pem
diff:
exec: >
openssl x509 -in {{ old }} -noout -text > {{ old }}.txt
openssl x509 -in {{ new }} -noout -text > {{ new }}.txt
diff -U2 {{ old }}.txt {{ new }}.txt
rm -f {{ old }}.txt {{ new }}.txt
Run Code Online (Sandbox Code Playgroud)
?
@konstantin-suvorov 的“hack”很棒,但它似乎只适用于已经有差异方法的模块。不幸的是,我的另一个用例涉及一个模块 ( command),它没有。
特别是,我/usr/bin/apt-get update在 Ubuntu 上调用,它更新apt的缓存文件。我想在之前和之后以文本形式转储缓存的内容,看看更新发生了什么变化——如果有的话......
给定单个驱动器的 MTTF T(例如,100000 小时)以及操作员更换故障驱动器和阵列控制器重建阵列所需的平均时间r(例如,10 小时),需要多长时间,平均而言,第二个驱动器出现故障,而较早的故障仍在被替换,从而注定整个N驱动器 RAID5?
在我自己的计算中,我不断提出许多世纪的结果——即使对于N和r 的大值,这意味着使用“热备件”来减少恢复时间是一种浪费......然而,很多人选择将 RAID 机箱中的一个插槽专用于热备件(而不是增加容量),这让我感到困惑......
以下代码因语法错误而被拒绝:
{%
if inventory_hostname in groups.aptcache
set cachehost = 'localhost'
else
set cachehost = groups['aptcache'] | first
endif
%}
cache={{ cachehost }}
Run Code Online (Sandbox Code Playgroud)
我希望,我的意图足够清楚,以便 Jinja2 大师纠正我......拜托?
我在基于 Linux 的路由器后面有一个 FreeBSD 系统(使用DD-WRT 固件)。FreeBSD 系统正在运行 sshd,并且会定期被各种 script-kiddies 探测。
它当前运行一个脚本,当看到同一 IP 地址登录尝试超过 3 次失败时,会完全阻止该地址。该阻止曾经是本地的(使用 FreeBSD 的ipfw),但我想通过要求路由器进行阻止来覆盖整个 LAN。这让我开始使用 Linux 的防火墙手段——iptables。
如果我使用:
iptables -I INPUT -s $IP -j DROP
Run Code Online (Sandbox Code Playgroud)
那么路由器将拒绝尝试联系路由器本身的 IP,但会愉快地将连接转发到 LAN。
如果我使用
iptables -I FORWARD -s $IP -j DROP
Run Code Online (Sandbox Code Playgroud)
它将阻止攻击者访问我的 LAN,但会保持路由器可访问他们。
是否有一些单一的规则——或者至少是单一的命令——我可以为每个攻击 IP 拦截任何进出它的流量?
谢谢你!