[CentOS] How to start a script to complete configuration

Wed Nov 9 15:03:55 UTC 2016
Bernard Fay <bernard.fay at gmail.com>

To Bill,

The script solution is what I try to do.  I am close to it.  The problem I
am facing at the moment is that this script need to be interactive to have
input from the sysadmin.

I tried to add the following lines to the service unit file to direct the
interaction of the script to tty1 but without success:
StandardInput=tty
TTYPath=/dev/tty1
TTYReset=yes
TTYVHangup=yes




On Wed, Nov 9, 2016 at 8:01 AM, Bill Howe <howe.bill at gmail.com> wrote:

> How you could do this with scripts:
>
> *CentOS 7*
>
>    1. Deploy a VM from your base CentOS 7 template
>    2. Copy your "my-firstboot.sh" script (or whatever its called) to a
>    location such as /root/scripts/
>       1. This scripts only job should be to mount a NFS location and
>       execute any post install scripts you have stored there, and provide
> a log
>       file.
>       2. This script should disable the "my-firstboot.service" at the end
>       and then change permissions of itself to no execute to ensure it
> doesn't
>       get run more than once.
>       3. It is also useful to have this script email the system admins when
>       its done and reboot the VM (in the case of full system updates
> that require
>       a reboot to new kernel)
>       3. Create your "my-firstboot.service" unit file at: /etc/systemd/
>    system/my-firstboot.service, enable it. example contents:
>    1. [Unit]
>       Description=Auto-execute my post install scripts
>       After=network.target
>
>       [Service]
>       ExecStart=/root/scripts/my-firstboot.sh
>
>       [Install]
>       WantedBy=multi-user.target
>
> *CentOS 6*
>
>    1. Same thing as above, except no service unit file. Instead simply
>    create a line in /etc/rc.local to execute the "my-firstboot.sh" script
> like
>    so:
>       1.
>
>       echo "/root/scripts/my-firstboot.sh" >> /etc/rc.d/rc.local
>
>       2. And have the "my-firstboot.sh" script remove that same line above
>    from rc.local at the end of its execution so its not run again on the
> next
>    reboot.
>
>
> Bill
>
>
> On Tue, Nov 8, 2016 at 3:44 PM, Oscar Osta Pueyo <oostap.listas at gmail.com>
> wrote:
>
> > Hello,
> > I think you can use anaconda for this task, you can configure some
> actions
> > after the installation.
> >
> > Best regards,
> >
> > El dt, 8 nov 2016 a les 18:44 Leon Fauster <leonfauster at googlemail.com>
> va
> > escriure:
> >
> > > Am 08.11.2016 um 16:47 schrieb cpolish at surewest.net:
> > > > On 2016-11-07 14:35, Bernard Fay wrote:
> > > >> Hi,
> > > >>
> > > >> We have a virtual environment based on XenServer. In this
> environment
> > I
> > > >> defined a template for CentOS 7 servers.
> > > >>
> > > >> I would like to start a script a boot time to complete the
> > > configuration of
> > > >> new VMs based on this template. How can I have a script started
> before
> > > any
> > > >> login prompt to ask question to the user to complete the
> configuration
> > > such
> > > >> as hostname, IP address, etc?
> > > >
> > > > Hi Bernard,
> > > >
> > > > My first impulse was "don't!", and that's probably the best
> > > > advise.  A popular model is that the "firstboot" package takes
> > > > care of this at the first user login, and *nix systems sort of
> > > > depend on this "logged in users do stuff" model.
> > > >
> > > > Even better, use ansible, cfengine, chef, or puppet to automate
> > > > the task of setting things up. This is the _best_ solution and
> > > > you will eventually come back to it.
> > > >
> > > > But, the darker, cynical part of my brain, the part that says
> > > > "what, you're cutting down on coffee?" part, said "sure you
> > > > can". Here's how it _could_ be done.
> > > >
> > > > DON'T DO THIS. TURN BACK NOW.
> > > >
> > > >    Replace /sbin/init with a shell script that does what you want.
> > > >    It will be the first userland process started, have the console
> > > >    for I/O, and run as root. At completion, restore the original
> > > >    /sbin/init and reboot. Leave no traces behind. Do not document
> > > >    your awful hack, others will use your words against you.
> > >
> > >
> > >
> > > :-) ... kernel parameter init=/root/yourscript
> > >
> > > https://www.kernel.org/doc/Documentation/kernel-parameters.txt
> > >
> > > --
> > > LF
> > >
> > > _______________________________________________
> > > CentOS mailing list
> > > CentOS at centos.org
> > > https://lists.centos.org/mailman/listinfo/centos
> > >
> > _______________________________________________
> > CentOS mailing list
> > CentOS at centos.org
> > https://lists.centos.org/mailman/listinfo/centos
> >
> _______________________________________________
> CentOS mailing list
> CentOS at centos.org
> https://lists.centos.org/mailman/listinfo/centos
>