跳转到主要内容

Ansible角色,用于管理TripleO的IPSEC隧道

项目描述

tripleo-ipsec

Ansible角色,用于为TripleO配置IPSEC隧道

  • 此操作会设置软件包和防火墙设置。

  • 在overcloud节点上设置IPSEC隧道的配置。

  • 解析给定的配置文件并启动IPSEC隧道。

在最后一步,当启用pacemaker时,它为每个虚拟IP启用资源代理,根据VIP位置建立/拆除IPSEC隧道。

注意,截至最新代码,现在它依赖于TripleO的动态清单。这意味着它期望清单告诉角色哪些网络正在设置以及主机具有哪些IP。如果相关的变量不是来自清单,该角色将尝试使用旧版设置,该设置会自动发现这些。但是,如果您使用自定义网络,此设置不可靠。

角色变量

  • ipsec_psk:用于IPSEC隧道的预共享密钥。请注意,这是敏感信息,建议将其安全地存储在运行playbook的主机上,例如使用Ansible Vault。可以使用以下命令生成此变量:openssl rand -base64 48

  • ipsec_algorithm:定义用于隧道phase2alg配置选项的加密算法。默认为:aes_gcm128-null。可能的值应在libreswan的文档中检查。

  • ipsec_configure_vips:确定是否应配置VIP隧道。默认为:true

  • ipsec_skip_firewall_rules:确定是否跳过防火墙规则。默认为:false

  • ipsec_uninstall_tunnels:确定是否移除之前设置的IPSEC隧道。默认为:false

  • ipsec_upgrade_tunnels:确定是否升级之前设置的IPSEC隧道。这意味着它会移除之前运行中创建的所有隧道并替换它们。默认为:false

  • ipsec_setup_resource_agents:确定是否创建pacemaker资源代理。默认为:true

  • ipsec_skip_networks:确定哪些网络应被跳过。默认为:[]

  • ipsec_force_install_legacy:强制使用旧版安装。默认为:false

  • overcloud_controller_identifier:这确定了集群中哪些节点是控制器以及哪些不是,并且应该包含在控制器的主机名中。默认为:'controller'。强烈建议有明确识别这些节点的方法。请注意,这仅在旧版设置中使用。

示例Playbook

样本

- hosts: servers
  roles:
     - tripleo-ipsec

在TripleO中启用ipsec隧道

要在overcloud节点上运行的主要Playbook是

tests/deploy-ipsec-tripleo.yml

这将部署IPSEC到overcloud节点上的内部API网络。

我们将使用PSK和一个AES128加密。

将PSK添加到ansible var文件中

cat <<EOF > ipsec-psk.yml
ipsec_psk: $(openssl rand -base64 48)
EOF

使用ansible-vault加密文件(请注意,它将提示输入密码)

ansible-vault encrypt ipsec-psk.yml

完成此操作后,现在可以运行playbook

ansible-playbook -i /usr/bin/tripleo-ansible-inventory --ask-vault-pass \
        -e @ipsec-psk.yml tests/deploy-ipsec-tripleo.yml

生成inventory

脚本/usr/bin/tripleo-ansible-inventory生成一个具有overcloud中节点的动态inventory。然而,它附带了一些不便

  • 在Pike之前的部署中,运行可能有点慢。为了解决这个问题,在Ocata和Pike中,可以从该命令的输出中生成一个静态inventory

    /usr/bin/tripleo-ansible-inventory  --static-inventory nodes.txt

    这将创建一个名为nodes.txt的静态inventory,我们可以现在使用它并节省时间。

  • Newton遗憾的是,该命令仅考虑了计算器和控制器。因此,对于此部署,我们需要生成自己的inventory。我们可以使用以下命令完成此操作

    cat <<EOF > nodes.txt
    [undercloud]
    localhost
    
    [undercloud:vars]
    ansible_connection = local
    
    [overcloud:vars]
    ansible_ssh_user = heat-admin
    
    [overcloud]
    $( openstack server list -c Networks -f value | sed 's/ctlplane=//')
    EOF

    这假设您从undercloud本身部署此playbook。因此,包含localhost的undercloud组。

跳过网络

ipsec_skip_networks变量允许用户跳过某些网络的隧道设置。这是通过使用网络名称实现的,该名称可能因您的设置类型而异。

使用动态inventory(Queens及其以后版本)

当使用动态inventory时,网络名称将基于您在tripleo-heat-templates中设置的名称。如tripleo-heat-templates中所述,此文件将确定您在整体TripleO部署中设置的网络,甚至指定哪些网络具有VIP。

要用于ipsec_skip_networks变量的网络名称将位于每个网络定义的name_lower部分。

例如,如果您想跳过存储管理网络,您会看到如下条目

- name: StorageMgmt
  name_lower: storage_mgmt
  vip: true
  vlan: 40
  ip_subnet: '172.16.3.0/24'
  allocation_pools: [{'start': '172.16.3.4', 'end': '172.16.3.250'}]
  ipv6_subnet: 'fd00:fd00:fd00:4000::/64'
  ipv6_allocation_pools: [{'start': 'fd00:fd00:fd00:4000::10', 'end': 'fd00:fd00:fd00:4000:ffff:ffff:ffff:fffe'}]

因此,在这种情况下,您将放在您的ansible变量文件中的变量将具有以下条目

ipsec_skip_networks:
- storage_mgmt

您可以通过向该列表添加更多条目来添加更多网络。

旧版设置

如果您使用的是旧版设置(这在Newton中有效),请注意网络名称是硬编码的;因此,您有以下选项可用

  • internalapi

  • storage

  • storagemgmt

  • ctlplane

您还可以通过向列表中添加redis一词来显式跳过创建Redis VIP。

如果您想要跳过存储和存储管理网络,您在ansible变量文件中设置的变量将包含以下条目

ipsec_skip_networks:
- storage
- storagemgmt

项目详情


下载文件

下载适用于您平台上的文件。如果您不确定该选择哪个,请了解更多关于安装包的信息。

源分发

tripleo-ipsec-11.0.1.tar.gz (33.4 kB 查看哈希值)

上传时间

构建分发

tripleo_ipsec-11.0.1-py2.py3-none-any.whl (37.0 kB 查看哈希值)

上传时间 Python 2 Python 3

由以下支持

AWSAWS云计算和安全赞助商DatadogDatadog监控FastlyFastlyCDNGoogleGoogle下载分析MicrosoftMicrosoftPSF赞助商PingdomPingdom监控SentrySentry错误日志StatusPageStatusPage状态页