使用 Ansible 操作手册实现 NorthStar 安装自动化
Ansible palybook 与 NorthStar 下载包捆绑在一起。您可以从 NorthStar 下载页面下载 NorthStar 下载 包。该手册支持 NorthStar 软件安装的自动化,适用于实验室和生产系统。如果您不熟悉 Ansible 开源自动化工具,可以在线获取信息。示例资源包括:
对于 Ansible 用户指南:
https://docs.ansible.com/ansible/latest/user_guide/index.html
有关清单文件格式的介绍:
https://docs.ansible.com/ansible/latest/user_guide/intro_inventory.html
有关“成为”(权限提升)的信息:
https://docs.ansible.com/ansible/latest/user_guide/become.html
-
有关加密机密变量的信息:
https://docs.ansible.com/ansible/latest/vault_guide/index.html
有关执行剧本时可以包含的参数的完整列表:
https://docs.ansible.com/ansible/latest/cli/ansible-playbook.html
Ansible 剧本将 NorthStar 与 cRPD 相结合。没有可用于 Junos VM 安装的剧本。
请参阅安装 NorthStar 控制器, 了解不使用 Ansible 操作手册的安装过程。
Ansible 操作指南需要一个从中启动安装的主机(虚拟机或笔记本电脑/台式机)。此主机称为“控制节点”。安装状态保留在控制节点上,以便于将来更改配置。这也是保存清单文件 (hosts.yml) 和许可证文件以供将来重新安装或更新的好地方。您需要将控制节点中存在的公共 SSH 密钥安装在要安装的目标主机(“托管式节点”)上,以便 Ansible 可以与这些节点通信。
开始之前
要准备执行 Ansible 剧本,请执行以下操作:
在控制节点上安装以下内容:
Linux 操作系统
Python
Python-pip(用于安装 Ansible)
Ssh
Ansible
我们建议使用 virtualenv 创建一个隔离的 Python 环境来安装 Ansible。它会创建一个包含所有必要可执行文件的文件夹。您可以使用 virtualenv 中的命令安装
pip
Ansible。您还可以用于pip
在系统环境中安装 Ansible。下面是使用 virtualenv 安装 Ansible 的示例:
$ virtualenv ansible $ source ansible/bin/activate $ pip install ansible
确定要安装 NorthStar 软件的所有受管节点。确保每个节点都具有以下内容:
基本操作系统(Red Hat Enterprise Linux 7.x 或 CentOS 7.x)
网络连接
SSH 服务器
确保您可以从控制节点通过 SSH 连接到所有受管节点。
要执行 playbook,您必须能够连接到每个受管节点并成为 root。您可以通过将 SSH 密钥添加到每个托管式节点上的 ~/.ssh/authorized_keys 文件中来设置此设置,可以直接用于 root,也可以为另一个无需密码即可执行
sudo
而成为 root 的帐户。另一种方法是使用变量指定连接到受管节点的用户名/密码以及清单文件中的 sudo 密码。这些是变量:
ansible_user
要连接到的用户,例如 root。默认值为当前用户。
ansible_password
对 进行身份验证的密码 ansible_user。
ansible_become
如果不是根,则 ansible_user 将其设置为 true。
ansible_sudo_password
提供给sudo的密码。
将适用于 NorthStar 和 NorthStar-Bundle.rpm 的 Ansible 剧本复制到控制节点,然后更改为该目录。
创建 Ansible 清单文件
为 NorthStar 安装创建自定义清单文件。清单是一组列表,用于定义计划的 NorthStar 安装中的受管节点。适用于 NorthStar 的 Ansible 手册包含一个名为 hosts.yml.sample 的示例清单文件,您可以将其用作启动自定义清单文件的模板。清单文件的默认名称为 hosts.yml。使用文本编辑器自定义库存文件。
模板清单文件分为几组:
all
包含用于定义应用于所有受管节点的变量的小节 vars 。例如, ansible_user 定义用于连接到受管节点的帐户名。
northstar
定义将运行 NorthStar 服务(如 PCS、TopoServer 和 Web 前端)的受管节点和变量。组中的节点应定义一个northstar_license变量,其中包含该节点的northstar许可证信息
northstar_ha
包含为 NorthStar 高可用性配置的节点或节点子组。
northstar_analytics
包含用于分析的节点和变量。
northstar_collector
包含用于分析辅助收集器的节点和变量。
此示例显示了清单文件的一部分,其中包括以下一些组:
all: vars: # define common variables ansible_user: root # connect directly to root@target northstar_ha_vip: 10.10.10.1 # define HA virtual ip address northstar_password: PASSSWORD # PASSWORD can be encrypted northstar_crpd_asn: "100" # configure CRPD northstar: hosts: 10.10.10.4: # target-host by ip-address or hostname northstar_license_file: npatpw.host1 # file containing license 10.10.10.5 northstar_license: | # (alt:) inline license information: expire_date=... # each line is indented by 2 space card=... MAC=ab:cd:ef:00:01:02 usercount=... . . . 10.10.10.6: . . . northstar_ha: children: # define subgroup (optional) site1: vars: northstar_ha_site: site1 # common variable for hosts in this child hosts: 10.10.10.4: # re-use host defined in northstar group northstar_ha_priority: 10 # override priority 10.10.10.5: # these two hosts use default values 10.10.10.6: #
您可以使用命令 ansible-vault encrypt_string
加密机密变量,例如 northstar_password 或 ansible_password。更多信息可在此处获得: https://docs.ansible.com/ansible/latest/vault_guide/index.html。
执行剧本
定义清单文件后,执行命令 ansible -m ping all
以验证所有受管节点是否已正确定义、可访问以及 SSH 登录是否成功。
执行 ./install.yml
(或 ansible-playbook install.yml
) 命令以执行安装手册并安装清单文件中定义的所有受管节点。您可以向 install.yml
命令添加可选参数。一些有用的示例包括:
-e key=value
额外的变量。例如,
-e northstar_bundle_rpm=NorthStar-Bundle-6.2.6.xxx.rpm
-我 inventory-file
使用其他库存文件。例如,如果您使用控制节点为独立集群安装软件,则可以利用这一点。
-我 limit
将执行限制为托管式节点的子集。例如,
-l 10.10.10.4,10.10.10.5
只会安装在这两个受管节点上。-t taglist
将执行限制为一组标记的任务。例如,
-t northstar
只会安装 NorthStar 应用程序。--问金库通行证
请求嵌入式机密的解密密钥。
安装数据收集器和辅助收集器以进行分析
您可以安装 NorthStar 数据收集器以支持以下两种分析配置之一:
与 NorthStar 应用程序共同托管的分析
对于此配置,请将清单组中的相同托管式节点northstar_analytics添加到清单组。northstar
外部分析节点或群集
对于此配置,请将一个或多个受管节点 northstar_analytics 添加到清单组。
通过将托管式节点 northstar_collector 添加到清单组来安装分析辅助收集器。为了成功安装辅助收集器,安装脚本需要访问运行 NorthStar 应用程序的节点。主节点必须与分析/收集器节点一起安装,或者必须在安装分析/收集器节点之前运行。该脚本从 northstar 清单组中获取所需信息,但您可以使用变量 northstar_primary覆盖该信息。
变量
表 1 中列出了专门为 NorthStar 行动手册而提供的变量。
变量名称 |
描述 |
---|---|
northstar_bundle_rpm |
要安装的捆绑包 RPM 的名称。 |
chrony_config_server |
NTP 服务器列表。 如果未指定任何 NTP 服务器,则托管式节点将配置为与以下四个 NTP 服务器同步:
|
northstar_license_file |
每节点 NorthStar 许可证文件。 |
northstar_license |
每节点 NorthStar 许可证(内联)。 |
northstar_crpd_asn |
用于 cRPD 路由反射器的 ASN。 默认行为是不修改 NorthStar 配置脚本中的默认 ASN。NorthStar 配置脚本中的默认 ASN 为 64512。 |
northstar_crpd_license_file |
cRPD 许可证文件。 |
northstar_crpd_license |
cRPD 许可证(内联)。 |
northstar_ha_group |
属于 HA 的受管节点。 默认情况下,包括清单组的所有 northstar_ha 成员。 |
northstar_ha_vip |
HA 的虚拟 IP 地址。 |
northstar_ha_site |
地理 HA 站点的名称。 默认值为 site1。 |
northstar_ha_priority |
每节点 HA 优先级。 默认值为 100。 |
northstar_primary |
NorthStar 应用程序节点用于配置远程分析和收集器节点。主节点必须与分析/收集器节点一起安装,或者必须在安装分析/收集器节点之前运行。 默认值为 清单组 的第一个成员 northstar 。 |
northstar_app_nodes |
运行 NorthStar 应用程序的受管节点。 默认情况下,包括清单组的所有 northstar 成员。 |
northstar_analytics_priority |
每节点 HA 优先级。 默认值为 100。 |
northstar_analytics_vip |
分析群集的虚拟 IP 地址。 |
表 2 列出了其他一些有用的变量。
变量 |
描述 |
---|---|
ansible_user |
用户以连接到受管节点。 |
ansible_password |
用于连接到控制节点的密码。 |
ansible_become |
如果不是根,则 ansible_user 将其设置为 true。 |
ansible_sudo_password |
提供给sudo的密码。 |