所以我尝试了以下排列:
docker_test ansible_host=fe80::88ea:e002:b409:4be0
docker_test ansible_host=[fe80::88ea:e002:b409:4be0]
docker_test ansible_host=\[fe80::88ea:e002:b409:4be0\]
没有一个可行的为比较起见,我添加了我的
.ssh/config
条目:Host docker_host
AddressFamily inet6
HostName fe80::88ea:e002:b409:4be0
BindAddress fe80::3e6b:335a:d2f7:3a75%enp3s0
我在问题跟踪系统中发现了两个已关闭的错误,这些错误指示问题至少已部分解决:3879、3888
任何对此主题的建议都将受到高度赞赏。
#1 楼
该博客文章介绍了所有方法:摘录-Ansible 2中的主机名和模式
库存主机名
Ansible 2要求清单主机名是有效的IPv4 / IPv6地址或主机名(即x.example.com或x,但不是x..example.com或x--)。作为扩展,它在主机名标签中接受Unicode单词字符。任何错误都会导致特定的解析错误,而不是执行过程中的神秘错误。
库存主机名还可以使用字母或数字范围来定义多个主机。例如,foo [1:3]定义foo1到foo3,而foo [x:z:2]扩展为fox和foz。地址可以使用以下数字范围:192.0.2。[3:42]。它们的行为已在清单(.ini文件)和剧本(例如,在主机中:行和使用add_host)中保持一致。支持各种压缩形式的位)。带端口号的地址必须写为[addr]:port。您还可以使用十六进制范围来定义清单文件中的多个主机,例如9876 :: [a:f]:2。
几个小的但必要的错误修正与解析更改紧密结合,并解决了将IPv6地址传递到ssh和rsync的问题。综上所述,这些更改使在Ansible中实际使用IPv6成为可能。
因此可以允许使用这些IPv6这样的模式:完全指定的128位地址
[addr]:port
各种形式的压缩范围-FF01 :: [1:6]
简化示例:
# IPv6 Address # Simplified Notation
----------------------------------------- ----------------------------
- FF01:0000:0000:0000:0000:0000:0000:0001 - FF01::1
- 2031:0000:130F:0000:0000:09C0:876A:130B - 2031:0:130F::9C0:876A:130B
- 0000:0000:0000:0000:0000:0000:0000:0001 - ::1
- FE80:0000:0000:5EFE:0192.0168.0001.0123 - FE80::5EFE:192.168.1.123
- FE80:0000:0000:0000:1585:4868:495F:D521 - FE80::1585:4868:495F:D521
参考文献
网络基础:IPV6地址简化表示法
评论
您是否尝试使用库存文件?并请告诉我们您遇到的错误。是的,我确实尝试过使用清单文件。发布的三个排列从那里开始。异常含糊不清,说明清单文件中的格式错误或ssh客户端的参数错误。
IPv6地址缺少必需的作用域ID。当然,您应该尽可能避免使用本地链接地址。