我怎样才能自动化一个新的Linux服务器的初始设置?

每次我安装一个新的服务器,我都会在每台服务器上执行一系列的步骤来获取更新,设置passwd,通过root用户删除login,定制一个熟悉的环境(bashrc)并保护服务器。

是否有可能使用脚本来做所有的事情? 该设置可能包括:

  1. 发行版升级和更新

    apt-get更新

    apt-get升级

  2. 添加用户

    adduser部署者

    adduser部署者sudo

    mkdir /home/deployer/.ssh

    chmod 700 /home/deployer/.ssh

    触摸/home/deployer/.ssh/authorization_keys

    部署者passwd

    su部署者

    cd到/home/deployer/.ssh/

    sudo chown部署者.ssh /

  3. 在本地机器上执行命令

    ssh-copy-id [email protected]

    ssh-copy-id [email protected]

  4. 重新login到服务器上:

    chmod 400 /home/deployer/.ssh/authorized_keys

    chown部署者:部署者/家庭/部署者-R

5..6 … 7 ..自定义bashrc,编辑sshd_config,安装ufw&logwatch

使用Kickstart或同等的stream程来pipe理构build。 使用像Puppet这样的configurationpipe理产品来部署您的设置。

您还可以使用一点脚本魔法在构build结束时启动configurationpipe理,使其成为无缝的体验。

我的脚本设置一个静态的IP,configurationOSSEC,并执行一些puppet运行来清理所有依赖,然后运行yum更新(我主要是一个CentOS用户)。

有可能拼凑其他方法来获得相同的结果,但我发现这是我工作过的最灵活的方法。

Kickstart / Jumpstart, Chef (包括厨师独奏), Puppet , Salt ,shell脚本和更高级别的脚本语言都可以用来解决这个问题。

老实说,看起来你有一个体面的shell脚本的开端。 从那里开始,如果复杂性增加,要么迭代,要么查看更强大的产品。 就我个人而言,我和厨师有过很好的经验。

使所有事情自动化的关键是从小事做起。 您不必全身心投入自动化。 select一个痛点,做得更好。 选另一个,重复。