evrardjp.tinc

Tinc

每日分支测试状态

该角色在星型或环型拓扑中安装tinc。

在组[tinc_nodes]中列出的节点是要应用/安装该角色的完整节点列表。

属于[tinc_spine_nodes]的节点是“核心”节点,所有节点都在此连接。

[tinc_leaf_nodes]中的节点仅连接到核心节点。处于NAT后面的设备就是这种情况的一个例子。

如果所有[tinc_nodes]都属于[tinc_spine_nodes],那么你将有一个更“环形”的拓扑。如果在[tinc_spine_nodes]中有一个节点,则你将有一个更“星形”的拓扑。

要求

  • Ubuntu 18.04 / CentOS 7(或更高)/ OpenWRT
  • 在CentOS及以上版本上,需要提前配置EPEL仓库。

要做到这一点,你可以运行以下命令:

yum install epel-release || dnf install epel-release
yum update || dnf update

角色变量

  • tinc_key_size:生成的密钥大小(默认值:4096
  • tinc_address_family可以是ipv4/ipv6/any(或未定义)
  • tinc_mode可以是router、switch或hub。(请参见https://www.tinc-vpn.org/documentation/tinc.conf.5)(默认值:`router`)
  • tinc_netname:tinc网络名称
  • tinc_vpn_ip:分配给单个VPN端点的IP。使用主机变量设置。
  • tinc_vpn_cidr:在tinc网络中使用的CIDR(默认值:/24,在路由模式下强制为/32)。
  • tinc_vpn_interface:用于tinc的设备,以防有多个tun设备(默认值:tun0
  • tinc_control_plane_bind_ip:tincd服务绑定的IP(默认值:ansible_default_ipv4.address

清单中必须设置tinc_control_plane_bind_ip(针对核心)和/或tinc_vpn_ip(针对核心和边缘节点)。 请查看任务文件。

示例

路由模式,环形拓扑

(简要)清单:

[tinc_nodes:children]
tinc_spine_nodes
tinc_leaf_nodes

[tinc_spine_nodes]
node1 tinc_vpn_ip=10.10.0.11
node2 tinc_vpn_ip=10.10.0.12
node3 tinc_vpn_ip=10.10.0.13

[tinc_leaf_nodes]
node1
node2
node3

路由模式,星型拓扑

(详细)清单:

[tinc_nodes]
node1
node2
node3

[tinc_spine_nodes]
node1

[tinc_leaf_nodes]
node1
node2
node3

tinc_nodes 的组变量:

tinc_netname: mynetname
tinc_vpn_interface: tun0

核心节点node1的主机变量:

tinc_control_plane_bind_ip: "{{ ansible_eth0.ipv4.address | default(ansible_default_ipv4.address) }}"
tinc_vpn_ip: 10.10.0.10

边缘节点node2的主机变量:

tinc_vpn_ip: 10.10.0.11

边缘节点node3的主机变量:

tinc_vpn_ip: 10.10.0.12

依赖关系

示例剧本

https://raw.githubusercontent.com/evrardjp/ansible-tinc/master/molecule/default/converge.yml

不要忘记在清单中设置必要的变量(见上文)。

测试

测试基于Ansible Molecule框架,它:

  • 检查角色语法
  • 启动多个不同操作系统的容器(仅用于测试。我们在生产中不混合Tinc版本)
  • 将该角色应用于每个容器
  • 运行幂等性测试(确保第二次运行不会产生意外更改)
  • 验证每个准备好的节点能够通过VPN ping其他节点

测试在PR和每日的github actions中运行。此外,你还可以在本地机器上执行它们。

运行测试所需的依赖项:

手动运行测试,使用molecule直接

你可以对星型和环型拓扑使用现有测试:

cd ansible-tinc
molecule test # 这将运行环形场景的默认测试
molecule test -s star

molecule test命令执行完整的场景:'创建'、'收敛'、'检查幂等性'、'验证'和'销毁'步骤。通常你不希望容器立即被销毁,而需要访问它以进行调试。为此,可以用以下方式替换molecule test

molecule converge # 这将创建容器并应用角色
molecule verify # 运行描述在molecule/default/verify.yml中的测试

# 在这两个步骤之后,你将拥有活动的Docker容器
# 你可以使用常规命令'docker ps'、'docker exec'等访问它们

molecule destroy

手动运行测试,使用tox

tox是一个Python测试运行器。它将在虚拟环境中安装所有必要的Python依赖项(ansible、molecule[docker])。

要运行测试:

tox -e ansible-<version>-<tinc scenario>

请在tox.ini中查看支持的version值。 当前可测试的tinc场景为ringstar。 位置参数将传递给molecule test命令。

例如,要为ansible-2.9运行一个测试,使用环形拓扑并防止molecule销毁环境:

tox -e ansible-2.9-ring -- --destroy=never

如何用新操作系统测试角色

molecule/default/molecule.ymlmolecule/star/molecule.yml中添加新映像,按照现有示例进行操作。这些文件除了变量scenario.namegroups外是相似的。以下几点可能会有所帮助:

许可证

Apache2

作者信息

Jean-Philippe Evrard

关于项目

Role to install tinc vpn in multiple topologies

安装
ansible-galaxy install evrardjp.tinc
许可证
apache-2.0
下载
1k