使用 Ansible 配置 Tulip

Prev Next

Ansible 是一款开源的命令行 IT 工具,用于批量管理边缘设备。

点击此处了解有关 Ansible 的更多信息。

本指南适用于哪些用户

  • 拥有边缘设备完整 Permission 的用户
  • 熟悉 Ansible 的用户
  • 熟悉边缘设备配置的用户

工作原理

Ansible 是一款 IT 管理软件,允许您复制并粘贴设备配置。其实现方式是将**“黄金设备”**作为经过验证的基准配置,据此对目标设备进行配置。

例如,您可以通过将设备分配到一个组中,该组会自动应用来自现有参考设备(黄金设备)的凭据,从而一次性配置多个新的边缘设备(目标设备)。您可以对黄金设备进行进一步优化并推送这些更新。

Edge device bulk configuration workflow

该方法可实现自动化且可扩展的 IT 管理,并减少潜在的手动配置错误。

边缘设备与 Ansible 的集成

以下步骤说明了如何将 Tulip Edge 收集功能集成到您现有的 Ansible 工作流中。

安装 Tulip Edge 集合

  1. 在终端上运行以下命令:ansible-galaxy collection install git+https://github.com/tulip/tulip-ansible-library.git#/collections/ansible_collections/tulip/edge
  2. 要安装边缘设备存储库,请运行以下命令:ansible-galaxy collection install tulip.edge

库存配置

将以下代码添加到现有的设备清单中,并填写相应变量。

  1. 在以下代码中,为设备组命名,并使用实例的 URL、您的电子邮件地址和电子邮件密码对实例进行身份验证。

[your_device_group:vars]tulip_factory_url=https://your-factory.tulip.cotulip_admin_email=admin@yourcompany.comtulip_admin_password_sha256=your_sha256_hash

  1. 在以下代码中,请填写您的公司名称。

tulip_client_name=您的公司名称tulip_client_version=1.0.0tulip_client_description=生产网关

生成密码哈希

密码哈希是一种安全措施,它将密码转换为固定长度的乱码字符串,这种字符串无法轻易逆向还原或破译。此步骤可避免文件中明文密码带来的安全风险。

要生成安全的密码哈希,请输入以下内容:

echo -n "your_password" | sha256sum | cut -d' ' -f1

核心 Playbook 集成

使用以下代码将必要的 Playbook 添加到现有工作流中:


* import\_playbook: tulip.edge.register when: register\_devices | default(false) ```

### 集成测试

使用以下代码将测试剧本添加到您的工作流中:

```- name: 测试 Tulip 网关身份验证 hosts: test\_devices tasks: - name: 验证测试设备 import\_playbook: collections/ansible\_collections/tulip/edge/playbooks/gateway\_tulip\_auth.yml

  • name: 验证身份验证是否成功 import_playbook: collections/ansible_collections/tulip/edge/playbooks/gateway_device_info.yml- name: 检查网络连接 import_playbook: collections/ansible_collections/tulip/edge/playbooks/gateway_check_internet.yml

集成最佳实践

  1. 变量管理

    • 使用 group_vars 设置通用配置
    • 使用 host\_vars 进行特定设备的覆盖设置
    • 将敏感数据存储在 Ansible Vault 中
  2. 错误处理


* name: 处理身份验证失败 debug: msg: "身份验证失败,请检查凭据" when: auth\_result.failed | default(false) ```
* **备份管理**
* 使用统一的备份命名规则,例如:`设备-组件-时间戳`
* 将备份名称存储在变量中以便重复使用
* 实施备份保留策略
* **保持幂等性**所有操作手册均具有幂等性,因此可以安全地多次运行。

若要查找错误、理解逻辑执行过程或在执行前进行验证,您可以进行一次模拟运行,该操作不会实际运行软件。要进行模拟运行,请使用 --check 模式,如下例所示。

`ansible-playbook gateway_tulip_auth.yml --limit test_device --check`

## 黄金设备配置

黄金设备配置工作流允许您:1.**选择黄金设备**:选择一台配置正确的参考设备2.**备份黄金配置**:捕获所有组件配置3.**部署到新设备**:将黄金设备设置应用到新设备或替换设备4.**认证与验证**:注册设备并验证部署

### 设备清单配置

使用黄金设备和目标设备配置您的设备清单。

在终端中输入以下内容:

```[tulip\_edge\_devices]golden-device ansible\_host=172.16.15.130EIO-01-BCDEFA ansible\_host=172.16.15.140EIO-01-CDEFAB ansible\_host=172.16.15.141EIO-01-DEFABCansible\_host=172.16.15.150

[golden\_devices]EIO-01-ABCDEF

[newly\_provisioned]EIO-01-BCDEFAEIO-01-CDEFABEIO-01-DEFABC

[tulip\_edge\_devices:vars]

# 出厂认证

tulip\_factory\_url=https://your-factory.tulip.cotulip\_admin\_email=admin@yourcompany.com tulip\_admin\_password\_sha256=your\_sha256\_hash

# 客户端信息

tulip\_client\_name=您的公司名称tulip\_client\_version=1.0.0tulip\_client\_description=生产网关```

### 生成密码哈希

密码哈希是一种安全措施,它将密码转换为固定长度的乱码字符串,这种字符串难以被逆向还原或破译。此步骤可避免文件中明文密码带来的安全风险。

要生成[SHA256 哈希值](https://www.movable-type.co.uk/scripts/sha256.html)以实现密码的安全存储,请输入以下命令:

`echo -n "your_password" | sha256sum | cut -d' ' -f1`

### 基本黄金设备配置

请为每个步骤输入以下代码。

1. 登录到您的黄金`设备:ansible-playbook tulip.edge.login --limit golden-device`
2. 备份黄金设备的`配置:ansible-playbook tulip.edge.backup_mqtt_broker --limit golden-device ansible-playbook tulip.edge.backup_mqtt_bridge --limit golden-deviceansible-playbook tulip.edge.backup_drivers --limit golden-deviceansible-playbook tulip.edge.backup_root_certs --limit golden-device`
3. 登录目标`设备ansible-playbook tulip.edge.login --limit newly_provisioned`
4. 将黄金配置部署到目标设备```ansible-playbook tulip.edge.restore\_mqtt\_broker \ --limit newly\_provisioned \ -e mqtt\_broker\_backup\_name="golden-device-mqtt-broker-20241219-143022"

ansible-playbook tulip.edge.restore\_mqtt\_bridge \ --limit newly\_provisioned \ -e mqtt\_bridge\_backup\_name="golden-device-mqtt-bridge-20241219-143025"

ansible-playbook tulip.edge.restore\_drivers \ --limit newly\_provisioned \ -e drivers\_backup\_name="golden-device-drivers-20241219-143028"

ansible-playbook tulip.edge.restore\_root\_certs \ --limit newly\_provisioned \ -e root\_certs\_backup\_name="golden-device-root-certs-20241219-143030"```

1. 通过`工厂`进行身份`验证ansible-playbook tulip.edge.gateway_tulip_auth --limit newly_provisioned`
2. 向外部系统注册(可选)`ansible-playbook tulip.edge.register --limit newly_provisioned`
3. 验证`部署:ansible-playbook tulip.edge.gateway_device_info --limit newly_provisioned ansible-playbook tulip.edge.gateway_check_internet --limit newly_provisioned`

### 黄金设备最佳实践

以下“黄金设备”方法可确保您的 Tulip Edge 设备群的一致、可靠的配置,同时保持对配置标准的完全可追溯性和控制。

1. **维护黄金设备**:确保黄金设备保持最新状态并得到妥善维护
2. **创建定期备份**:定期备份您的黄金设备配置
3. **确保版本控制**:将黄金设备备份存储在版本控制系统中,并使用有意义的名称
4. **建立测试流程**:在生产环境部署前,务必在预发布环境中测试黄金设备的配置
5. **记录黄金设备配置**:记录黄金设备的配置标准和操作流程
6. **确保访问控制**:限制对黄金设备的访问权限,并使用独立的凭据
7. **监控运行状态和流程**:监控黄金设备的运行状态及备份创建流程

### 故障排除

以下是排查常见黄金设备问题的步骤:

#### 无法访问黄金设备

首先,测试与黄金设备的连接。运行:`ansible golden-device -m ping`

检查黄金设备的状态。运行:`ansible-playbook tulip.edge.gateway_device_info --limit golden-device`

#### 备份部署失败

首先,应验证备份文件是否存在。运行:`ls backups/golden-device-mqtt-broker-*.json`

使用带`扩展名的`备份命名规则:`ansible-playbook tulip.edge.restore_mqtt_broker \ --limit target-device \ -e mqtt_broker_backup_name="golden-device-mqtt-broker-20241219-143022" \ -vv`

#### 身份验证问题

要重新认证黄金设备,请运行:`ansible-playbook tulip.edge.login --limit golden-device`

要验证库存中黄金设备的凭据,请运行:`ansible-inventory --host golden-device`

{{snippet.您找到所需内容了吗}}