对于经常装 Linux 系统,有什么工具或方法能快速初始化环境么 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
smdbh
V2EX    程序员

对于经常装 Linux 系统,有什么工具或方法能快速初始化环境么

  •  
  •   smdbh 2019-01-17 09:41:49 +08:00 8495 次点击
    这是一个创建于 2468 天前的主题,其中的信息可能已经有所发展或是发生改变。
    1. 个人使用,没有批量需求
    2. 初始化 ,比如 ip 配置,apt 源,常用软件安装。smb 配置 zsh 等, 基本概括为修改配置文件和安装软件。
    3. 一键完成。

    当前手写 bash 脚本完成这个,但感觉不系统化。不知道有没有工具类完成这个工作。

    第 1 条附言    2019-01-17 22:27:28 +08:00
    学习了大家的建议
    1. 单机部分,最方便的还是虚拟机大法,快照功能无敌。
    2. 对于云环境,或是其他物理机器,bash dotfiles 更适合我。(虚拟机文件或是 docker 都还是臃肿,不好操作,但是稳定性性好,不会因为网络原因造成意外冲突)
    54 条回复    2019-01-21 17:17:35 +08:00
    richzhu
        1
    richzhu  
       2019-01-17 09:44:09 +08:00 via iPhone
    Ansible Task
    ly4572615
        2
    ly4572615  
       2019-01-17 09:44:23 +08:00
    ansible 或者 salt 也是要写 yaml 的,亲
    iRiven
        3
    iRiven  
       2019-01-17 09:46:03 +08:00 via Android
    dd
    CallMeReznov
        4
    CallMeReznov  
       2019-01-17 09:47:06 +08:00
    KS 无论批量和个人 都原生支持 KS
    greenskinmonster
        5
    greenskinmonster  
       2019-01-17 09:47:10 +08:00
    把默认系统和预装软件装好,tar 打包个模板出来,然后写个 bash,初始化设置下 ip,hostname,bootloader 啥的就好了。
    fox0001
        6
    fox0001  
       2019-01-17 09:47:43 +08:00 via Android
    把相关配置文件备份,装完系统还原过去。
    rocksolid
        7
    rocksolid  
       2019-01-17 09:55:48 +08:00
    虚拟机,建好放一个原始版本,用只用复制的
    lihongjie0209
        8
    lihongjie0209  
       2019-01-17 09:58:13 +08:00
    ansible
    openbsd
        9
    openbsd  
       2019-01-17 10:08:49 +08:00
    同机器还是不同的机器 ?同机器的话,快照 ?
    reus
        10
    reus  
       2019-01-17 10:17:51 +08:00
    bash 怎么就不够系统化了?
    Tonni
        11
    Tonni  
       2019-01-17 10:18:36 +08:00
    Ansible...
    zjsxwc
        12
    zjsxwc  
       2019-01-17 10:20:47 +08:00   1
    换硬盘
    0w0b
        13
    0w0b  
       2019-01-17 10:53:05 +08:00
    nixos
    zoum
        14
    zoum  
       2019-01-17 10:58:35 +08:00 via iPhone   1
    GitHub 上有许多 dotfiles 可以参考下
    DovaKeen
        15
    DovaKeen  
       2019-01-17 11:10:08 +08:00
    不装系统了,都弄到 docker 里
    quinoa42
        16
    quinoa42  
       2019-01-17 11:17:16 +08:00
    bash 怎么不系统化了,代码是自己写的,而且一般来讲无论什么发行版都会自带 bash
    我之前用的 dotbot,但考虑到不是所有发行版都自带 python,最后还是手写了自己的 bash script
    hoyixi
        17
    hoyixi  
       2019-01-17 11:30:54 +08:00
    不想写代码的话:

    虚拟机做好环境,然后作为一个备份镜像, 以后用的时候,用它 clone 一个;

    vagrant,本质一样,自己做个做好环境的 box,用的时候,装一份。


    个人感觉虚拟机简单粗暴。配上上面说的别人写好的脚本或者工具,可以方便定制。

    比如刚装好系统,做个最基础的备份镜像,

    然后克隆一份,比如 Nodejs,用专门配置脚本弄好环境,此时再保存镜像,就是一个初始的 Nodejs 环境。

    同理看工作需求,Python,数据库之类都可以搞个,甚至按照数据库版本都可以多弄几个(比如做为测试环境)。

    这样,麻烦的工作做一次,以后就可以少做点。
    TotoroSora
        18
    TotoroSora  
       2019-01-17 11:32:24 +08:00
    这个问题思考了好久没想到什么好方法。。想到过的有直接自制 LiveCD,另一个方法是直接 tar 系统盘
    wenzhoou
        19
    wenzhoou  
       2019-01-17 11:32:42 +08:00 via Android
    bash +1
    写完记得放 GitHub 上共享一下啊。
    catalina
        20
    catalina  
       2019-01-17 12:15:34 +08:00 via Android
    。。。lvm 不是自带快照功能吗?
    dajj
        21
    dajj  
       2019-01-17 12:22:37 +08:00
    Clonezilla 再生 镜像备份
    itabas016
        22
    itabas016  
       2019-01-17 12:24:41 +08:00 via Android
    我现在是 clonezilla 镜像盘 然后是一键 shell 改 IP Host 及个性化设置
    visitantzj
        23
    visitantzj  
       2019-01-17 12:34:42 +08:00
    关注一下,像 rsync 这样直接把绝大部分文件备份可行么,到时候就干净系统再覆盖一下
    itskingname
        24
    itskingname  
       2019-01-17 12:40:13 +08:00 via iPhone
    为什么不用 Docker 呢
    F1024
        25
    F1024  
       2019-01-17 12:41:51 +08:00
    写个自动安装脚本
    iorilu
        26
    iorilu  
       2019-01-17 12:42:30 +08:00 via iPhone
    用 docker 不就行,把初始环境装好做成 image,以后直接用啊,顺便还可以做版本控制随时切换任意版本
    xpresslink
        27
    xpresslink  
       2019-01-17 12:45:57 +08:00
    经常装 Linux 系统,这话说得很笼统。
    云环境,物理机,虚拟机里面,装 1 个,装 10 个还是 50 个,这个差别很大。
    使用的策略和方法也非常不同。
    STRRL
        28
    STRRL  
       2019-01-17 12:53:53 +08:00 via Android
    刚好看到这么一个工具 叫 azk 貌似刚刚起步
    kernel
        29
    kernel  
       2019-01-17 13:20:11 +08:00 via Android
    我就是一个几百行的脚本,因为经常要装 vps,一键全搞定
    yylucifer
        30
    yylucifer  
       2019-01-17 13:51:03 +08:00
    似乎楼主只想要一个 repo 或者一套脚本
    而不是实施方案。。。例如 ansible 啥的我觉得楼主是知道的。。
    guoqiao
        31
    guoqiao  
       2019-01-17 13:53:11 +08:00
    我很早就有跟楼主一样的需求,bash 脚本,python 脚本,dotfiles 什么的都试过。最后发现这个事情没法一劳永逸的,而且会不断演化,比如集成新的工具,支持新的环境。所以最后一定会代码化。我最后的选择是 Ansible。
    aaa5838769
        32
    aaa5838769  
       2019-01-17 13:58:53 +08:00
    docker ansible
    playnoa
        33
    playnoa  
       2019-01-17 14:04:01 +08:00 via Android
    hyper-v,快照树,恢复任何版本只需 3-5 秒
    weck
        34
    weck  
       2019-01-17 14:33:40 +08:00
    如果 lab 有 snapshot 功能可以试试创建 snapshot,然后初始化只需要 revert to snapshot,当然也可以使用 docker
    sundev
        35
    sundev  
       2019-01-17 14:50:32 +08:00 via iPhone
    我感觉像树莓派镜像那样挺好的,直接恢复,然后第一次启动时候对系统进行初始化
    lfzyx
        36
    lfzyx  
       2019-01-17 14:56:40 +08:00
    PXE
    lozzow
        37
    lozzow  
       2019-01-17 15:23:23 +08:00 via iPhone
    再生龙
    luozic
        38
    luozic  
       2019-01-17 15:30:45 +08:00
    docker 搞定
    NB40B938mff85mtq
        39
    NB40B938mff85mtq  
       2019-01-17 15:42:52 +08:00
    直接做镜像不就好了。。。。
    neverwin
        40
    neverwin  
       2019-01-17 17:01:48 +08:00
    最喜欢手动装系统了)逃
    toyland
        41
    toyland  
       2019-01-17 17:04:27 +08:00
    很多 Linux 发行版都支持无人值守安装,比如 Debian/Ubuntu 在安装时可以读取事先准备好的配置 preseed.cfg 、CentOS 也有类似的 ks.cfg ,其中可以更改系统默认配置或者添加额外要安装的软件包。
    HFcbyqP0iVO5KM05
        42
    HFcbyqP0iVO5KM05  
       2019-01-17 17:11:56 +08:00 via Android
    每次安装 /编译重要软件的时候都会写成 bash 脚本,把必要的配置文件也备份,然后推到 github
    honglongmen
        43
    honglongmen  
       2019-01-17 17:31:54 +08:00
    这种一般都是先装好个基本完整的主机, 然后快照恢复或者复制镜像.不过 31 楼说的对,迟早要更新各种环境,细微变化.

    觉得还是 docker 好点和方便点, 配上 shell 脚本应该可以了吧.
    hei1000
        44
    hei1000  
       2019-01-17 17:42:08 +08:00
    我个人电脑一般都是 dotfiles 以及各种放到 github 备份,其他本地文件什么的放到硬盘,如果是公司那种一个做好的系统要安装到多个服务器上面,貌似直接做镜像的
    zhouyut001
        45
    zhouyut001  
       2019-01-17 17:45:49 +08:00
    目前想到的也只有系统相同的情况下,备份主要的配置文件,到时候只需要 yum/ apt 装一次,把所有文件覆盖进去,重启完事儿。
    zhouyut001
        46
    zhouyut001  
       2019-01-17 17:47:03 +08:00
    借贴求 Linux 整盘(一个硬盘都是系统目录)备份成镜像的方法,像 ghost 一样直接恢复。。。。
    hxroyal
        47
    hxroyal  
       2019-01-17 19:10:57 +08:00
    docker 最方便
    lekai63
        48
    lekai63  
       2019-01-17 19:12:39 +08:00 via iPhone
    bash 脚本完成简单任务:新建用户,改端口,放公钥,装 docker。
    剩下的就是 docker 的事了。
    stebest
        49
    stebest  
       2019-01-17 21:01:58 +08:00
    直接把环境封装成系统镜像啊
    hanxiV2EX
        50
    hanxiV2EX  
       2019-01-18 06:49:06 +08:00 via Android
    dotfiles 写个一键安装脚本,可以参考我的。
    https://github.com/hanxi/dotfiles
    wanwaneryide
        51
    wanwaneryide  
       2019-01-18 09:05:58 +08:00
    配置好环境,然后自己做成一个系统的镜像就行了
    Rheinmetal
        52
    Rheinmetal  
       2019-01-18 10:46:23 +08:00
    @zhouyut001 可以试试 wimlib-imagex 虽然是给 windows 镜像写的 不过可以跨平台
    fangzheng
        53
    fangzheng  
       2019-01-18 14:09:13 +08:00
    用 virtualbox,先装个 mini 版的 CentOS1.vdi ,然后使用 virtualbox 的复制功能即可。
    loser
        54
    loser  
       2019-01-21 17:17:35 +08:00
    我以前喜欢用 shell 脚本,crt 连上后下载写好脚本全部自动配置
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1180 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 43ms UTC 17:47 PVG 01:47 LAX 10:47 JFK 13:47
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86