Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
S
simple-vm-manager
Manage
Activity
Members
Labels
Plan
Issues
0
Issue boards
Milestones
Wiki
Code
Merge requests
0
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package Registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Terms and privacy
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Recolic
simple-vm-manager
Commits
3164c6cb
There was an error fetching the commit references. Please try again later.
Commit
3164c6cb
authored
1 year ago
by
Recolic
Browse files
Options
Downloads
Patches
Plain Diff
update
parent
a160577a
No related branches found
No related tags found
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
requirements.log
+23
-0
23 additions, 0 deletions
requirements.log
with
23 additions
and
0 deletions
requirements.log
0 → 100644
+
23
−
0
View file @
3164c6cb
需求:
我有一个简单的脚本,可以给定 cpu cores+RAM size+disk size+port forward, 从ubuntu的cloudimg创建一个VM出来。
我需要一个稳定的软件,它可以自动帮我管理正在运行的VM. 它需要能够:
1. 有一个容易使用的命令行工具. 运行它之后就可以一键创建VM,删除vm.
参考用法(具体语法按照你的喜好来):
vm create #然后interactive的方式询问名字,CPU核心数,RAM,disk。然后自动帮忙选择一个空闲的端口 forward 22,自动用默认用户名密码。
vm create MY_VM1 cpu=2 ram=1G disk=40G port=30222:22 port=80 port=443 username=recolic password=fuck #就是non-interactive mode. 如果port/username/password不设置,就默认转发22端口,默认用户名密码。如果没有说要转发到哪一个端口,就自动选一个
vm info #显示所有的VM信息,例如名字,cpu,ram size,disk size,forwarded ports
vm delete MY_VM1
(可选)如果再支持一个vm copy MY_VM1 new_vm就更好了!注意端口要自动改一下
2. 会以daemon process的形式,或crontab的形式,在后台经常检查。发现有VM关机了(或崩溃了),就自动帮我重启。
3. 最好是用脚本语言(因为方便我修改逻辑),编译型语言也可以。拒绝python,因为它在系统升级后往往会dependency炸掉。拒绝java/csharp这类需要runtime的语言。偏好bash或fish或perl
4. 留出一个类似配置文件的东西(可以在代码里面),方便我偶尔修改port range,修改默认的用户名密码, 修改cloudimg镜像。自动选择空闲端口的时候就假设这个port range没有别人在用,不用特意检查。
5. 最好是程序+所有的VM+数据文件+下载好的cloudimage镜像都放在同一个目录里 (例如/var/myvps/里面有programs, disks, metadata, images, logs几个子目录), 并且整个大文件夹移动到其他位置也能正常工作(也就是不准hardcode)。我有bash和fish的代码告诉你怎样获取自己被执行时所在的目录。
部署方式:
把整个程序目录放在任何一个地方,提供一个命令/脚本/程序,例如/.../programs/on_start.sh。我通过我喜欢的方式保证开机时这个程序被执行到一次(如果你喜欢,也可以要求被用crontab的形式执行。我作为用户都可以)
然后它会启动一个后台的process,自动帮我开机所有的VM,并且发现有VM关机了就自动重启,发现需要cloudimage就从预定的url下载,发现VM被删除了就把东西都删掉,etc。
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment