bionic (1) gitano-setup.1.gz

Provided by: gitano_1.1-1_all bug

NAME

       gitano-setup - set up a Gitano instance

SYNOPSIS

       gitano-setup [-h] [--help] [--usage] [ANSWER-FILE...]

DESCRIPTION

       gitano-setup  creates  the  basic  repository  setup  for  a Gitano instance.  Gitano is a git repository
       management system.  It provides repository creation, user administration, and access control.

       gitano-setup is an interactive tool where if it has any questions for you, it  will  visit  each  answers
       file in turn until it finds the answer.  This means that for automation purposes you can specify multiple
       answers files with the earlier ones overriding the later ones.

       In summary, the behaviour is as follows:

       The repository root is created if it does not exist, and a gitano-admin.git repository is created  within
       it.   Said repository is populated with the example administration repository rules and an admin user and
       group.  Finally the .ssh/authorized_keys file for the Gitano instance is populated with the keys to allow
       further configuration and use of the repositories.

   Answer files
       Answer  files  contain  key  value  pairs which are used to answer the questions which gitano-setup would
       otherwise prompt for.  If the setting setup.batch is set, then gitano-setup will operate in  batch  mode,
       rather than interactively.  The format is as follows:

              key.name "value"

       Valid keys and the meaning of their values are:

       setup.batch
              Operate in batch mode if set at all.

       paths.home
              Home directory for the Gitano management user.  This defaults to the HOME environment variable.

       paths.ssh
              The  .ssh  directory for the Gitano instance.  This defaults to the value of paths.home with /.ssh
              appended.

       paths.bypasskey
              The path to a public SSH key to be used for the gitano-bypass user who will be able to do anything
              with  access control, rules, hooks, etc.  all ignored.  Normally you would set this to the path to
              the public key held inside the paths.ssh location since only someone with  access  to  the  Gitano
              instance  ought  to have bypass capability by default.  The default value for this is the value of
              the paths.ssh variable with id_rsa.pub or id_ecdsa.pub appended,  whichever  is  found  first  (if
              either).

       paths.pubkey
              The path to a public SSH key to be used for the newly created user with gitano-admin rights in the
              new Gitano instance.  This defaults to the value of the  paths.home  variable  plus  admin.pub  if
              present.   Normally  you  would  set  this  to  the  path to your public key so that you will have
              administration rights upon creation of the instance.

       paths.repos
              The path to the repository store for the new Gitano instance.   This  defaults  to  the  value  of
              paths.home with /repos appended to it.

       admin.username
              The username for the administrator of the new Gitano instance.  This defaults to admin and is only
              relevant for rulesets inside Gitano.

       admin.realname
              The real name for the administrator of the new Gitano instance.  This  defaults  to  Administrator
              and  is  only  relevant  inside the Gitano instance as it will be used to indicate the name of the
              committer of administration changes.

       admin.email
              The  email  address  of  the  administrator  of  the  new  Gitano  instance.   This  defaults   to
              admin@administrator.local  and  is  only relevant inside the Gitano instance as it will be used to
              indicate the email address of the comitter of administration changes.

       site.name
              The site name used in greetings and messages from  Gitano.   This  defaults  to  a  random  Gitano
              instance  and  should always start with a lowercase letter since it will be used in sentences such
              as Welcome to a random Gitano instance or those with similar forms.

       log.prefix
              The log prefix for the Gitano instance.  This defaults to gitano and  is  used  in  messages  from
              Gitano.   Lines  generated by Gitano will be prefixed with the log prefix in square brackets.  For
              example, if log.prefix is set to 'example' then:

              [example] CRIT: Repository creation is not permitted.
              [example] FATAL: Ruleset denied action.  Sorry.

OPTIONS

       -h, --help, --usage
              Print out a usage summary for the program.

BASIC USAGE

       To set up a new Gitano instance:

       Create the new user.
              $ sudo useradd -m git
       Put the ssh key you want to use for the administrator somewhere that gitano-setup will be able to reach.
              $ sudo cp ~/.ssh/id_rsa.pub ~git/admin.pub
       Run the rest of the commands as the git user.
              $ sudo -u git -i
       Generate an ssh key for the bypass user of gitano.  This is conventionally the same as the git unix user.
              $ ssh-keygen -t rsa
              Generating public/private rsa key pair.
              Enter file in which to save the key (/home/git/.ssh/id_rsa):
              Created directory '/home/git/.ssh'.
              Enter passphrase (empty for no passphrase):
              Enter same passphrase again:
              Your identification has been saved in /home/git/.ssh/id_rsa.
              Your public key has been saved in /home/git/.ssh/id_rsa.pub.
              The key fingerprint is:
              [output elided]

       Run gitano-setup and for most of the options just press enter  to  use  the  default  except  where  bold
       alternative input is provided.
              $ gitano-setup
              [gitano-setup] Welcome to the Gitano setup process
              [gitano-setup] Performing system checks
              [gitano-setup] ... Checking supple sandboxing
              [gitano-setup] System checks out
              [gitano-setup] Step 1: Determine everything
              Home directory for new Gitano user [/home/git]:
              SSH directory for new Gitano user [/home/git/.ssh]:
              Public key file for bypass user [/home/git/.ssh/id_rsa.pub]:
              Public key file for admin user [/home/git/admin.pub]:
              Repository path for new Gitano instance [/home/git/repos]:
              User name for admin user [admin]:
              Real name for admin user [Administrator]:
              Email address for admin user [admin@administrator.local]: admin@example.com
              Key name for administrator [default]:
              Site name [a random Gitano instance]: Gitano for example.com
              Site log prefix [gitano]: example.com
              Store passwords with htpasswd? (needed for http authentication) [no]:
              Path to skeleton gitano-admin content [/usr/share/gitano/skel/gitano-admin]:
              [gitano-setup] Step 2: Gather required content
              [gitano-setup] Step 3: Write out paths and gitano-admin.git
              [gitano-setup] <gitano-admin> Set project.description to <Instance administration repository>
              [gitano-setup] <gitano-admin> Set project.owner to <admin>
              [gitano-setup] SSH authorised key file updated

       At this point the ~git/admin.pub public key can be cleaned up from the git user's home directory.
              $ rm -f ~git/admin.pub

       ssh will complain about having a new key.  ssh-keyscan can be used to explicitly accept those hosts.
              $ ssh-keyscan localhost >>~git/.ssh/known_hosts
              [output elided]
       We  can  run commands as the git user by looping back through ssh though Gitano will complain because the
       bypass key is only meant to be used in emergencies.
              $ ssh git@localhost whoami
              [example.com] **** ALERT **** ALERT ****  PAY CAREFUL ATTENTION  **** ALERT **** ALERT ****
              [example.com] **** You are acting as the bypass user.  Rules and hooks WILL NOT APPLY  ****
              [example.com] **** ALERT **** ALERT **** DO NOT DO THIS NORMALLY **** ALERT **** ALERT ****
              [example.com] **** DANGER **** SOMETHING RISKY HAPPENING **** DANGER ****
              [example.com] **** An ACL check was bypassed thanks to gitano-bypass ****
              [example.com] **** DANGER **** ACL BYPASS IS VERY RISKY  **** DANGER ****
                  User name: gitano-bypass
                  Real name: Special site-wide rule/hook bypass user
              Email address: admin@example.com
                    SSH key: initial => git@surtur-linux [*]
       If things break we will need to be able to access the gitano-admin  repository  directly,  which  can  be
       accessed by cloning the repository using the bypass key.
              $ git clone ssh://git@localhost/gitano-admin.git
              Cloning into 'gitano-admin'...
              [example.com] **** ALERT **** ALERT ****  PAY CAREFUL ATTENTION  **** ALERT **** ALERT ****
              [example.com] **** You are acting as the bypass user.  Rules and hooks WILL NOT APPLY  ****
              [example.com] **** ALERT **** ALERT **** DO NOT DO THIS NORMALLY **** ALERT **** ALERT ****
              [example.com] **** DANGER **** SOMETHING RISKY HAPPENING **** DANGER ****
              [example.com] **** An ACL check was bypassed thanks to gitano-bypass ****
              [example.com] **** DANGER **** ACL BYPASS IS VERY RISKY  **** DANGER ****
              remote: Counting objects: 24, done.
              remote: Compressing objects: 100% (23/23), done.
              remote: Total 24 (delta 0), reused 0 (delta 0)
              Receiving objects: 100% (24/24), 5.06 KiB | 0 bytes/s, done.
              Checking connectivity... done.

       We can do the same with our normal unix user without getting the warning.
              $ ^D
              $ ssh-keyscan localhost >>~/.ssh/known_hosts
              [output elided]
              $ ssh git@localhost whoami
                  User name: admin
                  Real name: Administrator
              Email address: admin@example.com
                    SSH key: default => admin@example.com [*]
                  In groups: gitano-admin: Gitano Instance Administrators
              $ ssh git@localhost ls
              RW  gitano-admin
              $ git clone ssh://git@localhost/gitano-admin.git
              Cloning into 'gitano-admin'...
              remote: Counting objects: 24, done.
              remote: Compressing objects: 100% (23/23), done.
              remote: Total 24 (delta 0), reused 0 (delta 0)
              Receiving objects: 100% (24/24), 5.06 KiB | 0 bytes/s, done.
              Checking connectivity... done.

       This  has  set  up  Gitano  in a newly created git user on the machine the gitano administrator is logged
       into, using the ssh key of their user account.  See the Gitano wiki for other ways to set Gitano up.

       This has tested basic command operation with whoami and repository access  by  cloning  the  gitano-admin
       repository.    For  more  information  consult  the  online  help  with  the  help  command,  the  Gitano
       Administrator's manual or the Gitano wiki.

                                                                                                 GITANO-SETUP(1)