为什么 poudriere 创建一对有 IP 地址和没有 IP 地址的监狱
Why poudriere creates a pair of jails with and without IP addresses
在使用 poudriere 测试一个端口时,像这样:
poudriere testport -v -j 11amd64 -p custom www/go-www
我收到这个错误:
!!! build failure encountered !!!
[00:00:06] ====>> Error: Build failed in phase: fetch
出于某种原因,该包不能 found/downloaded,因此在我尝试检查 jails 解析器是否存在问题时,我通过执行 jails 列出了现有的 jails =20=] - 这个输出引起了我的注意:
> jls
JID IP Address Hostname Path
363 127.0.0.1 11amd64-custom /usr/local/poudriere/data/.m/11amd64-custom/ref
364 11amd64-custom /usr/local/poudriere/data/.m/11amd64-custom/ref
365 127.0.0.1 11amd64-custom-job-02 /usr/local/poudriere/data/.m/11amd64-custom/02
366 11amd64-custom-job-02 /usr/local/poudriere/data/.m/11amd64-custom/02
367 127.0.0.1 11amd64-custom-job-01 /usr/local/poudriere/data/.m/11amd64-custom/01
368 11amd64-custom-job-01 /usr/local/poudriere/data/.m/11amd64-custom/01
369 127.0.0.1 11amd64-custom-job-03 /usr/local/poudriere/data/.m/11amd64-custom/03
370 11amd64-custom-job-03 /usr/local/poudriere/data/.m/11amd64-custom/03
我注意到的是,如果我进入一个没有分配 IP 地址的监狱 jexec 364
我可以 ping/fetch 任何主机,例如,但是如果我进入一个监狱IP 地址 jexec 363
,在这种情况下 127.0.0.1
我不能 ping/resolve:
ping: sendto: Can't assign requested address
因此我想知道创建一对监狱的想法是什么,一个有 IP(不可路由),另一个没有 IP(可路由),背后的逻辑是什么?
以防万一这是我用于 poudriere 的配置 /usr/local/etc/poudriere.conf
:
ZPOOL=tank
ZROOTFS=/poudriere
FREEBSD_HOST=https://download.FreeBSD.org
RESOLV_CONF=/etc/resolv.conf
BASEFS=/usr/local/poudriere
POUDRIERE_DATA=${BASEFS}/data
USE_PORTLINT=no
USE_TMPFS=yes
DISTFILES_CACHE=/usr/ports/distfiles
CHECK_CHANGED_OPTIONS=verbose
CHECK_CHANGED_DEPS=yes
PKG_REPO_SIGNING_KEY=/usr/local/etc/ssl/keys/pkg.key
CCACHE_DIR=/var/cache/ccache
NOLINUX=yes
更新
要解决我在交互模式下输入的问题 - 请注意 -i
:
poudriere testport -v -i -j 11amd64 -p custom www/go-www
然后:
cd /usr/ports/www/go-www/; make
获取包,我只是将它们复制到 /usr/ports/distfiles/
再说一遍:
poudriere testport -v -j 11amd64 -p custom www/go-www
那是一个丑陋的 hack,但主要问题是 Makefile 中复制内容的错误行:
GH_ACCOUNT= nbari:DEFAULT,www
应该是:
GH_ACCOUNT= nbari:DEFAULT
但仍然想知道为什么要创建有 IP 和无 IP 的监狱对。
poudriere(8)
preforms preforms 不需要联网的阶段是限制性更强的监狱,以增加安全性。 Previously jails 在有或没有网络功能的情况下重新启动,现在在整个过程中保留两个独立的 jails 以降低复杂性。
具有所列IP地址的jail被明确设置为环回地址,没有的则从主机继承网络:
: ${LOIP6:=::1}
: ${LOIP4:=127.0.0.1}
case $IPS in
01)
localipargs="ip6.addr=${LOIP6}"
ipargs="ip6=inherit"
;;
10)
localipargs="ip4.addr=${LOIP4}"
ipargs="ip4=inherit"
;;
11)
localipargs="ip4.addr=${LOIP4} ip6.addr=${LOIP6}"
ipargs="ip4=inherit ip6=inherit"
;;
esac
...
jstart() {
local name network
network="${localipargs}"
[ "${RESTRICT_NETWORKING}" = "yes" ] || network="${ipargs}"
_my_name name
jail -c persist name=${name} \
path=${MASTERMNT}${MY_JOBID+/../${MY_JOBID}} \
host.hostname=${BUILDER_HOSTNAME-${name}} \
${network} ${JAIL_PARAMS} \
allow.socket_af allow.raw_sockets allow.chflags allow.sysvipc
jail -c persist name=${name}-n \
path=${MASTERMNT}${MY_JOBID+/../${MY_JOBID}} \
host.hostname=${BUILDER_HOSTNAME-${name}} \
${ipargs} ${JAIL_PARAMS} \
allow.socket_af allow.raw_sockets allow.chflags allow.sysvipc
}
提取错误似乎是因为新 distfile
中的重复条目(nbari-www-1.1.1_GH0.tar.gz
有两个条目)。错误行
在您的日志文件中以 fetch: 4211
开头,4211 是重复条目的大小。
由于 GH_ACCOUNT
、DEFAUT
指定的组添加了 PORTNAME
(www
) 和 [=18=,因此该条目被添加了两次] 添加自己。
在使用 poudriere 测试一个端口时,像这样:
poudriere testport -v -j 11amd64 -p custom www/go-www
我收到这个错误:
!!! build failure encountered !!!
[00:00:06] ====>> Error: Build failed in phase: fetch
出于某种原因,该包不能 found/downloaded,因此在我尝试检查 jails 解析器是否存在问题时,我通过执行 jails 列出了现有的 jails =20=] - 这个输出引起了我的注意:
> jls
JID IP Address Hostname Path
363 127.0.0.1 11amd64-custom /usr/local/poudriere/data/.m/11amd64-custom/ref
364 11amd64-custom /usr/local/poudriere/data/.m/11amd64-custom/ref
365 127.0.0.1 11amd64-custom-job-02 /usr/local/poudriere/data/.m/11amd64-custom/02
366 11amd64-custom-job-02 /usr/local/poudriere/data/.m/11amd64-custom/02
367 127.0.0.1 11amd64-custom-job-01 /usr/local/poudriere/data/.m/11amd64-custom/01
368 11amd64-custom-job-01 /usr/local/poudriere/data/.m/11amd64-custom/01
369 127.0.0.1 11amd64-custom-job-03 /usr/local/poudriere/data/.m/11amd64-custom/03
370 11amd64-custom-job-03 /usr/local/poudriere/data/.m/11amd64-custom/03
我注意到的是,如果我进入一个没有分配 IP 地址的监狱 jexec 364
我可以 ping/fetch 任何主机,例如,但是如果我进入一个监狱IP 地址 jexec 363
,在这种情况下 127.0.0.1
我不能 ping/resolve:
ping: sendto: Can't assign requested address
因此我想知道创建一对监狱的想法是什么,一个有 IP(不可路由),另一个没有 IP(可路由),背后的逻辑是什么?
以防万一这是我用于 poudriere 的配置 /usr/local/etc/poudriere.conf
:
ZPOOL=tank
ZROOTFS=/poudriere
FREEBSD_HOST=https://download.FreeBSD.org
RESOLV_CONF=/etc/resolv.conf
BASEFS=/usr/local/poudriere
POUDRIERE_DATA=${BASEFS}/data
USE_PORTLINT=no
USE_TMPFS=yes
DISTFILES_CACHE=/usr/ports/distfiles
CHECK_CHANGED_OPTIONS=verbose
CHECK_CHANGED_DEPS=yes
PKG_REPO_SIGNING_KEY=/usr/local/etc/ssl/keys/pkg.key
CCACHE_DIR=/var/cache/ccache
NOLINUX=yes
更新
要解决我在交互模式下输入的问题 - 请注意 -i
:
poudriere testport -v -i -j 11amd64 -p custom www/go-www
然后:
cd /usr/ports/www/go-www/; make
获取包,我只是将它们复制到 /usr/ports/distfiles/
再说一遍:
poudriere testport -v -j 11amd64 -p custom www/go-www
那是一个丑陋的 hack,但主要问题是 Makefile 中复制内容的错误行:
GH_ACCOUNT= nbari:DEFAULT,www
应该是:
GH_ACCOUNT= nbari:DEFAULT
但仍然想知道为什么要创建有 IP 和无 IP 的监狱对。
poudriere(8)
preforms preforms 不需要联网的阶段是限制性更强的监狱,以增加安全性。 Previously jails 在有或没有网络功能的情况下重新启动,现在在整个过程中保留两个独立的 jails 以降低复杂性。
具有所列IP地址的jail被明确设置为环回地址,没有的则从主机继承网络:
: ${LOIP6:=::1}
: ${LOIP4:=127.0.0.1}
case $IPS in
01)
localipargs="ip6.addr=${LOIP6}"
ipargs="ip6=inherit"
;;
10)
localipargs="ip4.addr=${LOIP4}"
ipargs="ip4=inherit"
;;
11)
localipargs="ip4.addr=${LOIP4} ip6.addr=${LOIP6}"
ipargs="ip4=inherit ip6=inherit"
;;
esac
...
jstart() {
local name network
network="${localipargs}"
[ "${RESTRICT_NETWORKING}" = "yes" ] || network="${ipargs}"
_my_name name
jail -c persist name=${name} \
path=${MASTERMNT}${MY_JOBID+/../${MY_JOBID}} \
host.hostname=${BUILDER_HOSTNAME-${name}} \
${network} ${JAIL_PARAMS} \
allow.socket_af allow.raw_sockets allow.chflags allow.sysvipc
jail -c persist name=${name}-n \
path=${MASTERMNT}${MY_JOBID+/../${MY_JOBID}} \
host.hostname=${BUILDER_HOSTNAME-${name}} \
${ipargs} ${JAIL_PARAMS} \
allow.socket_af allow.raw_sockets allow.chflags allow.sysvipc
}
提取错误似乎是因为新 distfile
中的重复条目(nbari-www-1.1.1_GH0.tar.gz
有两个条目)。错误行
在您的日志文件中以 fetch: 4211
开头,4211 是重复条目的大小。
由于 GH_ACCOUNT
、DEFAUT
指定的组添加了 PORTNAME
(www
) 和 [=18=,因此该条目被添加了两次] 添加自己。