首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从Nixops1.7迁移到2.0和从<deployment>.nix迁移到nixops.nix

从Nixops1.7迁移到2.0和从<deployment>.nix迁移到nixops.nix
EN

Server Fault用户
提问于 2022-06-15 10:29:55
回答 1查看 175关注 0票数 0

我尝试将我的nixops从版本1.7迁移到nixops_unstable 2.0.0-pre7220cbd。在安装nixops_unstable之后,我不能再使用nixops命令了:

代码语言:javascript
复制
$ nixops deploy -d streaming
Traceback (most recent call last):
  File "/nix/store/diamr11y34lkmnjwkyw5qnv5xcn1x60h-python3.9-nixops-2.0.0-pre-7220cbd/bin/.nixops-wrapped", line 9, in 
    sys.exit(main())
  File "/nix/store/3ybyi0v3pj8hlchzcchsx3m2myjpbmir-python3-3.9.13-env/lib/python3.9/site-packages/nixops/__main__.py", line 56, in main
    args.op(args)
  File "/nix/store/3ybyi0v3pj8hlchzcchsx3m2myjpbmir-python3-3.9.13-env/lib/python3.9/site-packages/nixops/script_defs.py", line 710, in op_deploy
    with deployment(args, True, "nixops deploy") as depl:
  File "/nix/store/gwlgfywzqypv91rxw916v81mpzhckdz5-python3-3.9.13/lib/python3.9/contextlib.py", line 119, in __enter__
    return next(self.gen)
  File "/nix/store/3ybyi0v3pj8hlchzcchsx3m2myjpbmir-python3-3.9.13-env/lib/python3.9/site-packages/nixops/script_defs.py", line 72, in deployment
    with network_state(args, writable, description=activityDescription) as sf:
  File "/nix/store/gwlgfywzqypv91rxw916v81mpzhckdz5-python3-3.9.13/lib/python3.9/contextlib.py", line 119, in __enter__
    return next(self.gen)
  File "/nix/store/3ybyi0v3pj8hlchzcchsx3m2myjpbmir-python3-3.9.13-env/lib/python3.9/site-packages/nixops/script_defs.py", line 102, in network_state
    network = eval_network(get_network_file(args))
  File "/nix/store/3ybyi0v3pj8hlchzcchsx3m2myjpbmir-python3-3.9.13-env/lib/python3.9/site-packages/nixops/script_defs.py", line 60, in get_network_file
    raise ValueError(f"Neither flake.nix nor nixops.nix exists in {network_dir}")
ValueError: Neither flake.nix nor nixops.nix exists in /home/matthias/nixops

我想这里最重要的部分是ValueError: Neither flake.nix nor nixops.nix exists in /home/matthias/nixops。这是正确的,我从来没有nixops.nix,但是这个部署是用/home/matthias/nixops/streaming.nix定义的。

目前,我不想迁移到使用片上,我只是尝试使用nixops_unstable的现有方式。

streaming.nix更改为nixops.nix不起作用,可能是因为它无法将其现有状态与这个新文件名相关联,因为该文件实际上是nixop状态的一部分:

代码语言:javascript
复制
{
  "c54b29a1-417e-11eb-9873-0242cc6606ab": {
    "configsPath": "/nix/store/46s4g876yjdijfdjwpqqjzj94pyp05lz-nixops-machines", 
    "name": "streaming", 
    "nixExprs": "[\"/home/matthias/nixops/streaming.nix\"]", 
    "resources": {
      "styx": {
        "configsPath": "/nix/store/46s4g876yjdijfdjwpqqjzj94pyp05lz-nixops-machines", 
        "creationTime": "1608329862", 
        "index": "0", 
        "keys": "XXXXXXXX", 
        "none.sshPrivateKey": "XXXXXXXX\n", 
        "none.sshPublicKey": "XXXXXXXX", 
        "none.sshPublicKeyDeployed": "1", 
        "publicVpnKey": "XXXXXXXX", 
        "sshPinged": "1", 
        "state": "3", 
        "stateVersion": "20.09", 
        "targetHost": "styx.p7m.de", 
        "toplevel": "/nix/store/hjlv7mlp71rij4vn3dhvr6rxickldjaa-nixos-system-styx-22.05.915.9ff91ce2e4c", 
        "type": "none", 
        "vmId": "nixops-c54b29a1-417e-11eb-9873-0242cc6606ab-styx"
      }
    }, 
    "rollbackEnabled": "1"
  }
}

我发现的关于迁移的文档非常稀少:https://nixops.readthedocs.io/en/latest/manual/migrating.html。我只能或多或少地发现,我必须定义network.storage.legacy = {},这并不能解决我的迁移问题。

如何从.nix转换为nixops.nix?如何区分用于对类似服务器进行分组的不同部署?

EN

回答 1

Server Fault用户

发布于 2022-06-15 13:40:39

通过对每个部署执行以下步骤完成了转换:

  1. 我将文件${deploymentname}.nix移到${deploymentname}/nixops.nix
  2. 我使用nixops1.7:nixops export -d ${deploymentname} > ${deploymentname}/state.json导出所有状态
  3. 我从步骤1更新了移动文件在${deploymentname}.json文件中的位置(该文件位于nixExprs键上)
  4. 我更新了${deploymentname}/nixops.nix中的配置,它使用相对路径引用外部文件。
  5. 我使用nixops2.0:cd ${deploymentname}/ ; nixops import < ${deploymentname}.json导入状态
  6. 我重新部署:nixops deploy -d ${deploymentname}
票数 0
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/1103329

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档