NetScaler VPX

使用 OpenStack 预配 Citrix ADC VPX 实例

可以在 OpenStack 环境中使用 Nova boot 命令 (OpenStack CLI) 或 Horizon(OpenStack 控制板)预配 Citrix ADC VPX 实例。

预配 VPX 实例(可选)涉及使用配置驱动器中的数据。 配置驱动器是一个在启动时作为 CD-ROM 设备附加到实例的特殊配置驱动器。 可以使用此配置驱动器来传递网络连接配置(例如管理 IP 地址、网络掩码、默认网关),以及注入客户脚本。

在 Citrix ADC 设备中,默认的身份验证机制是基于密码的。 现在,OpenStack 环境中的 Citrix ADC VPX 实例支持 SSH 密钥对身份验证机制。

请先生成密钥对(公钥和私钥),然后再使用公钥加密机制。 可以使用不同的机制(例如 Horizon、适用于 Windows 的 Puttygen.exe 以及适用于 Linux 的 ssh-keygen)生成密钥对。 有关生成密钥对的详细信息,请参阅各个机制的联机文档。

有了密钥对后,将私钥复制到已获得授权的人员有权访问的安全位置。 在 OpenStack 中,可以使用 Horizon 或 Nova boot 命令将公钥部署在 VPX 实例上。 使用 OpenStack 预配 VPX 实例时,它会首先通过读取特定 BIOS 字符串来检测实例是否在 OpenStack 环境中引导。 此字符串为“OpenStack Foundation”,对于 Red Hat Linux 发行版,此字符串存储在 /etc/nova/release 中。 这是在基于 KVM 虚拟机管理程序平台的所有 OpenStack 实现中提供的标准机制。 该驱动器必须具有特定的 OpenStack 标签。

如果检测到配置驱动器,该实例会尝试读取网络配置、自定义脚本和 SSH 密钥对(如果已提供)。

用户数据文件

Citrix ADC VPX 实例使用自定义 OVF 文件(也称为用户数据文件)来注入网络配置、自定义脚本。 此文件作为配置驱动器的一部分提供。 下面是自定义 OVF 文件示例。

```
  <?xml version="1.0" encoding="UTF-8" standalone="no"?>
  <Environment xmlns:oe="http://schemas.dmtf.org/ovf/environment/1"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  oe:id=""
  xmlns="http://schemas.dmtf.org/ovf/environment/1"
  xmlns:cs="http://schemas.citrix.com/openstack">
  <PlatformSection>
  <Kind></Kind>
  <Version>2016.1</Version>
  <Vendor>VPX</Vendor>
  <Locale>en</Locale>
  </PlatformSection>
  <PropertySection>
  <Property oe:key="com.citrix.netscaler.ovf.version" oe:value="1.0"/>
  <Property oe:key="com.citrix.netscaler.platform" oe:value="NSVPX"/>
  <Property oe:key="com.citrix.netscaler.orch_env" oe:value="openstack-orch-env"/>
  <Property oe:key="com.citrix.netscaler.mgmt.ip" oe:value="10.1.2.22"/>
  <Property oe:key="com.citrix.netscaler.mgmt.netmask" oe:value="255.255.255.0"/>
  <Property oe:key="com.citrix.netscaler.mgmt.gateway" oe:value="10.1.2.1"/>
  </PropertySection>
   <cs:ScriptSection>
     <cs:Version>1.0</cs:Version>
       <ScriptSettingSection xmlns="http://schemas.citrix.com/openstack" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
           <Scripts>
             <Script>
                   <Type>shell</Type>
                   <Parameter>X Y</Parameter>
                  <Parameter>Z</Parameter>
                  <BootScript>before</BootScript>
                    <Text>
                          #!/bin/bash
                          echo "Hi, how are you" $1 $2 >> /var/sample.txt
                    </Text>
             </Script>
             <Script>
                   <Type>python</Type>
                   <BootScript>after</BootScript>
                    <Text>
                         #!/bin/python
   print("Hello");
                    </Text>
             </Script>
     <Script>
                   <Type>perl</Type>
                   <BootScript>before</BootScript>
                    <Text>
                         !/usr/bin/perl
   my $name = "VPX";
   print "Hello, World $name !\n" ;
                    </Text>
             </Script>
             <Script>
                  <Type>nscli</Type>
                  <BootScript>after</BootScript>
                  <Text>
                   add vlan 33
   bind vlan 33 -ifnum 1/2
                  </Text>
             </Script>
           </Scripts>
       </ScriptSettingSection>
   </cs:ScriptSection>
  </Environment>
<!--NeedCopy--> ``` 在 OVF 文件中,“PropertySection”用于 NetScaler 网络配置,而 <cs:ScriptSection\> 用于封装所有脚本。 \<Scripts\>\</Scripts\> 标签用于将所有脚本捆绑在一起。 每个脚本都在 \<Script\\> \</Script\> 标签之间定义。 每个脚本标记都有以下字段/标记:

a) <Type>:为脚本类型指定值。 可能的值:Shell/Perl/Python/NSLCI(对于 NetScaler CLI 脚本)

b) <Parameter>:为脚本提供参数。 每个脚本可以有多个 <Parameter> 标签。

c) <BootScript>:指定脚本执行点。 此标记的可能值:before/after。 “before”指定脚本将在 PE 启动之前运行。 “after”指定脚本将在 PE 启动之后运行。

d)\ <Text\ >:粘贴脚本的内容。

注意:

目前,VPX 实例不负责清理脚本。 作为管理员,您必须检查脚本的有效性。

并非所有部分都需要存在。 可使用空的“PropertySection”仅定义要在首次引导时运行的脚本,或使用空的

填充了 OVF 文件(用户数据文件)的所需部分后,使用该文件预配 VPX 实例。

网络配置

作为网络配置的一部分,VPX 实例读取:

  • Management IP address(管理 IP 地址)
  • Network mask(网络掩码)
  • Default gateway(默认网关)

参数成功读取后,将填入 NetScaler 配置中,从而允许远程管理实例。 如果参数未成功读取,或者配置驱动器不可用,实例将转换为默认行为,即:

  • 实例尝试从 DHCP 中检索 IP 地址信息。
  • 如果 DHCP 失败或超时,实例将提供默认网络配置 (192.168.100.1/16)。

客户脚本

VPX 实例允许在初始预配期间运行自定义脚本。 设备支持 Shell、Perl、Python 和 Citrix ADC CLI 命令类型的脚本。

SSH 密钥对身份验证

VPX 实例将配置驱动器中作为实例元数据的一部分提供的公钥复制到其“authorized_keys”文件中。 这样,用户可以使用私钥访问实例。

注意:

提供 SSH 密钥后,默认凭据 (nsroot/nsroot) 将不再起作用,如果需要基于密码的访问,请使用各自的 SSH 私钥登录并手动设置密码。

开始之前的准备工作

在 OpenStack 环境中预配 VPX 实例之前,请从 .tgz 文件中提取 .qcow2 文件,并构建

从 qcow2 映像构建 OpenStack 映像。 请按照以下步骤进行操作:

  1. 键入以下命令从 .tqz 文件中提取 .qcow2 文件

      tar xvzf <TAR file>
      tar xvzf <NSVPX-KVM-12.0-26.2_nc.tgz>
      NSVPX-KVM.xml
      NSVPX-KVM-12.0-26.2_nc.qcow2
    
  2. 键入以下命令使用在步骤 1 中提取的 .qcoz2 文件构建 OpenStack 映像。

      openstack image create --container-format bare --property hw_disk_bus=ide --disk-format qcow2 --file <path to qcow2 file> --public <name of the OpenStack image>
       
      glance image-create --name="NS-VPX-12-0-26-2" --property hw_disk_bus=ide --ispublic=
      true --container-format=bare --disk-format=qcow2< NSVPX-KVM-12.0-26.2_nc.qcow2
    

    图 1:下图提供了 glance image-create 命令的示例输出。

    映像创建命令 OpenStack

预配 VPX 实例

可以采用两种方式预配 VPX 实例,方法是使用以下选项之一:

  • Horizon(OpenStack 控制板)
  • Nova boot 命令 (OpenStack CLI)

使用 OpenStack 控制板预配 VPX 实例

请按照以下步骤使用 Horizon 预配 VPX 实例:

  1. 登录 OpenStack 控制板。
  2. 在控制板左侧的“Project”(项目)面板中,选择 Instances(实例)。
  3. 在“Instances”(实例)面板中,单击 Launch Instance(启动实例)打开“Instance Launching”(实例启动)向导。

    实例启动向导

  4. 在“Launch Instance”(启动实例)向导中,填写详细信息,例如:

    1. Instance Name(实例名称)
    2. Instance Flavor(实例风格)
    3. Instance Count(实例计数)
    4. Instance Boot Source(实例启动源)
    5. Image Name(映像名称)

    启动向导详细信息

  5. 完成以下步骤来通过 Horizon 部署新密钥对或现有密钥对:

    a) 如果您没有现有密钥对,请使用任何现有机制创建密钥。 如果您有现有密钥,请跳过此步骤。

    b) 复制公钥的内容。

    c) 转到 Horizon > Instances(实例)> Create New Instances(创建新实例)

    d) 单击 Access & Security(访问和安全)。

    e) 单击 Key Pair(密钥对)下拉菜单旁边的 + 号,为所示参数提供值。

    f) 在 Public key(公钥)框中粘贴公钥内容,为密钥提供名称,并单击 Import Key Pair(导入密钥对)。

    导入密钥对 OpenStack

  6. 单击向导中的 Post-Creation(后期创建)选项卡。 在“Customization Script”(自定义脚本)中,添加用户数据文件的内容。 用户数据文件中包含 VPX 实例的 IP 地址、网络掩码和网关详细信息以及客户脚本。

  7. 选择或导入密钥对后,选中“Configuration Drive”(配置驱动器),并单击 Launch(启动)。

    启动实例

使用 OpenStack CLI 预配 VPX 实例

按照以下步骤使用 OpenStack CLI 预配 VPX 实例。

  1. 要从 qcow2 创建映像,请键入以下命令:

    openstack image create --container-format bare --property hw_disk_bus=ide --diskformat qcow2 --file NSVPX-OpenStack.qcow2 --public VPX-ToT-Image

  2. 要选择映像以创建实例,请键入以下命令:

    openstack image list | more

  3. 要创建特定风格的实例,请键入以下命令从列表中选择风格 ID/名称:

    openstack flavor list

  4. 要将 NIC 附加到特定网络,请键入以下命令从网络列表中选择网络 ID:

    openstack network list

  5. 要创建实例,请键入以下命令:

      openstack server create --flavor FLAVOR_ID --image IMAGE_ID --key-name KEY_NAME
      --user-data USER_DATA_FILE_PATH --config-drive True --nic net-id=net-uuid
      INSTANCE_NAME
      openstack server create --image VPX-ToT-Image --flavor m1.medium --user-data
      ovf.xml --config-drive True --nic net-id=2734911b-ee2b-48d0-a1b6-3efd44b761b9
      VPX-ToT
    

图 2:下图提供了示例输出。

OpenStack 提供 CLI

使用 OpenStack 预配 Citrix ADC VPX 实例