1095. EPMO Open Source Coordination Office Redaction File Detail Report

Produced by Araxis Merge on 3/13/2018 7:47:49 PM Central Daylight Time. See www.araxis.com for information about Merge. This report uses XHTML and CSS2, and is best viewed with a modern standards-compliant browser. For optimum results when printing this report, use landscape orientation and enable printing of background images and colours in your browser.

1095.1 Files compared

# Location File Last Modified
1 TASCore_v1.0_Build_2_Jan_2018.zip\mccf_devops\scripts\shell tas-init.sh Thu Feb 15 21:03:10 2018 UTC
2 TASCore_v1.0_Build_2_Jan_2018.zip\mccf_devops\scripts\shell tas-init.sh Thu Mar 8 19:25:17 2018 UTC

1095.2 Comparison summary

Description Between
Files 1 and 2
Text Blocks Lines
Unchanged 13 1416
Changed 12 32
Inserted 0 0
Removed 0 0

1095.3 Comparison options

Whitespace
Character case Differences in character case are significant
Line endings Differences in line endings (CR and LF characters) are ignored
CR/LF characters Not shown in the comparison detail

1095.4 Active regular expressions

No regular expressions were active.

1095.5 Comparison detail

  1   #! /bin/ba sh
  2   # ==== Beg in Header  ====
  3   # tas-init .sh v2.1 2 017-Dec-27   PII                          )
  4   #  Add dos 2unix, wge t, yum-uti ls to stan dard build s
  5   #  Remove  password r equirement  for non-N FS/FPC bui lds
  6   # tas-init .sh v2.0 2 017-Dec-11   PII                          )
  7   #  Remove  Security s ettings an d other pa rts that a re now pro vided in
  8   #  VA "Gol d Image" ( or self-cr eated with  SysAdmin  mag-init.s h)
  9   # tas-init .sh v1.0 2 017-Dec-08   PII                          )
  10   #  First r eal releas e
  11   #
  12   # These ar e the avai lable comm and-line o ptions:
  13   #  -c or - -nocolor :  Turn Off  Color Debu g output
  14   #  -l or - -logfile :  Change lo gfile (mus t come nex t)
  15   #  -f or - -fqdn    :  Use FQDN  instead of  detecting  it (must  come next)
  16   #  -u or - -user    :  Username  to use to  access Bit Bucket (mc cf_devops)   
  17   #  -p or - -pass    :  Password  to go with  username  above
  18   #  -v or - -vpass   :  Vault Pas sword for  Jenkins pa sswords &  Private SS L Key
  19   #
  20   # This scr ipt assume s a system  in one of  the TAS e nvironment s
  21   # - VA AIT C (aka EDE ) is the A ustin IT C enter (VA  Private Cl oud)
  22   # - VA Azu re (aka MA G) is the  Microsoft  Azure Gov  Cloud
  23   # - Halfak er AWS (ak a AWS) is  the Halfak er AWS Clo ud (tempor ary)
  24   # - Halfak er Azure ( aka HAC) i s the Half aker Azure  Cloud (un defined)
  25   # - Indivi dual dev s ystems are  NOT suppo rted and w ill likely  be detect ed as AWS
  26   #
  27   # The task s this scr ipt perfor ms are ess entially t o create a  system-st art-point
  28   # from whi ch the TAS  Jenkins S erver can  access the  system an d configur e it 
  29   # based on  the requi rements ne eded by th e TAS Conf iguration  Management  Team
  30   #
  31   # A log of  the progr ess and re sults of t his script  is locate d at $LOGT XT
  32   # If run i nteractive ly, the pr ogress & r esults (di fferent fr om the log  file)
  33   #      are  shown on  the screen . If the c olorized o utput of t he interac tive
  34   #      scr een are no t working,  you can t urn off th e color wi th a -c op tion
  35   #
  36   # ==== End  Header == ==
  37   # Don't wa ste any ti me -- if y ou're not  root, exit  now
  38   if [ "${UI D}" != "0"  ]; then
  39       echo " $0 Error:  You must r un this sc ript as ro ot" >&2 
  40       exit 1
  41   fi
  42  
  43   LOGFILE=/v ar/log/$0. log ; cp / dev/null $ {LOGFILE}  # create &  blank the  log file
  44   DeployEnv=
  45   MyIP=
  46   MyHostname =
  47   MyDomain=
  48   MyFQDN=
  49   MyDNS1=
  50   MyDNS2=
  51   MyCIServer =localhost
  52   IsCIServer =
  53   IsVA=No
  54   VARH7BSTRA P="http:// URL /pub/boots trap/rhel7 .sh"
  55   VARH7LIC=
  56   PreInstall edPkgs="gi t ansible  dos2unix w get yum-ut ils"
  57   #
  58   # VA DNS S ervers & T AS CI serv ers for ED E Environm ent
  59   VAEDEDNS1= IP          
  60   VAEDEDNS2= IP          
  61   VAEDECI=UR L
  62   #
  63   # VA DNS S ervers & T AS CI serv ers for MA G Environm ent
  64   # NOTE: Fo r now, the  DNS serve rs are ide ntical to  EDE DNS se rvers
  65   #   That i s expected  to change  at some t ime in the  future
  66   VAMAGDNS1= IP          
  67   VAMAGDNS2= IP          
  68   VAMAGCI=UR L
  69   #
  70   # Someday  we will ha ve a HAC e nvironment  -- until  then, trea t as AWS
  71   HACDNS1=8. 8.4.4
  72   HACDNS2=4. 2.2.3
  73   HACCI=aws- master.tas .local.
  74   HACCIIP= IP           
  75   #
  76   # If we're  not in th e EDE or M AG, we ass ume AWS
  77   AWSDNS1=8. 8.4.4
  78   AWSDNS2=4. 2.2.3
  79   AWSCI=aws- master.mcc f.halfaker labs.com
  80   AWSCIIP= IP           
  81   #
  82   # Jenkins  Public Key
  83   JENKINSUSE R= AI
  84   JENKINSUID =410
  85   JENKINSHOM E=/home/je nkins
  86   JENKINSSHE LL=/bin/ba sh
  87   JENKINSPUB ="AI"
  88   #
  89   YUMSRC=bit bucket.org /halfaker/ mccf_yum
  90   YUMDIR=mcc f_yum
  91   YUMSH=./mv repo.sh
  92   MISCSRC=bi tbucket.or g/halfaker /mccf_misc _repo
  93   MISCDIR=mc cf_misc_re po
  94   MISCSH=./m vrepo.sh
  95   JENKINSSRC =bitbucket .org/halfa ker/mccf_j enkins
  96   JENKINSDIR =mccf_jenk ins
  97   JENKINSSH= ./mvrepo.s h
  98   DEVOPSSRC= bitbucket. org/halfak er/mccf_de vops
  99   DEVOPSDIR= mccf_devop s
  100   DEVOPSDIR2 =playbooks
  101   DEVOPSSH=. /installJe nkins.sh
  102   #
  103   # Define c olors and  terminal e scape sequ ences for  intereacti ve use
  104   UseColor=Y es
  105   CLEAR="\\0 33c"
  106   COL60="\\0 33[60G"
  107   NORMAL="\\ 033[0;39m"
  108   WHITE="\\0 33[1;39m"
  109   GREEN="\\0 33[1;32m"
  110   RED="\\033 [1;31m"
  111   YELLOW="\\ 033[1;33m"
  112   BLUE="\\03 3[1;34m"
  113  
  114   SHOWPROCES S="${COL60 }${BLUE}Pr ocessing${ NORMAL}"
  115   SHOWBUILD= "${COL60}$ {BLUE}Buil ding..${NO RMAL}"
  116   SHOWINSTAL L="${COL60 }${BLUE}In stalling${ NORMAL}"
  117   SHOWSKIP=" ${COL60}${ WHITE}[${Y ELLOW} SKI P ${WHITE} ] ${NORMAL }"
  118   SHOWOK="${ COL60}${WH ITE}[${GRE EN} -OK- $ {WHITE}] $ {NORMAL}"
  119   SHOWDONE=" ${COL60}${ WHITE}[${G REEN} DONE  ${WHITE}]  ${NORMAL} "
  120   SHOWPASS=" ${COL60}${ WHITE}[${G REEN} PASS  ${WHITE}]  ${NORMAL} "
  121   SHOWISSUE= "${COL60}$ {WHITE}[${ YELLOW}ISS UE ${WHITE }] ${NORMA L}"
  122   SHOWFAIL=" ${COL60}${ WHITE}[${R ED} FAIL $ {WHITE}] $ {NORMAL}"
  123   #
  124   # LOGTXT s ends argum ents passe d to the d efined log file
  125   LOGTXT() {
  126      echo "$ *" >> ${LO GFILE}
  127   }
  128   # DEBUG se nds the ar guments pa ssed to th e terminal  with an E OL at the  end
  129   DEBUG() {
  130      if [ -t  1 ] ; the n echo -e  "$*" ; fi
  131   }
  132   # EDEBUG s ends the a rguments p assed to t he termina l WITH NO  EOL charac ter
  133   EDEBUG() {
  134      if [ -t  1 ] ; the n echo -en  "$*" ; fi
  135   }
  136  
  137   # ReadArgs  reads the  command l ine argume nts passed  to it
  138   # and polu lates shel l variable s accordin gly
  139   ReadArgs()  {
  140     LOGTXT " Entered Re adArgs `da te`"
  141     while [[  $# -gt 0  ]] ; do
  142       key="$ 1"
  143  
  144       case $ {key} in
  145         -c |  --nocolor  ) 
  146               UseColor= No
  147               CLEAR=""
  148               COL60=""
  149               NORMAL=""
  150               WHITE=""
  151               GREEN=""
  152               RED=""
  153               YELLOW=""
  154               BLUE=""
  155               shift # p ast argume nt
  156               LOGTXT "P rocessing  without co lor"
  157               ;;
  158         -l |  --logfile  )
  159               if [[ $#  -ge 2 ]] ;  then
  160                 LOGFILE ="$2"
  161               else
  162                 DEBUG " $1 argumen t requires  another a rgument af ter it"
  163                 LOGTXT  "Error in  $1 argumen t (no next  argument  provided)"
  164                 exit 9
  165               fi
  166               LOGTXT "U sing LogFi le ${LOGFI LE} instea d"
  167               # DEBUG   "Log outpu t redirect ed to ${LO GFILE}"
  168               shift # p ast argume nt
  169               shift # p ast logfil e entry
  170               ;;
  171         -f |  --fqdn )
  172               if [[ $#  -ge 2 ]] ;  then
  173                 MyFQDN= "$2"
  174               else
  175                 DEBUG " argument $ 1 requires  another a rgument af ter it"
  176                 LOGTXT  "Error in  $1 argumen t (no next  argument  provided)"
  177                 exit 9
  178               fi
  179               LOGTXT "O verriding  FQDN looku p. Using $ {MyFQDN} i nstead"
  180               # DEBUG   "Overridin g FQDN loo kup. Using  ${MyFQDN}  instead"
  181               shift # p ast argume nt
  182               shift # p ast fqdn e ntry
  183               ;;
  184         -u |  --user )
  185               if [[ $#  -ge 2 ]] ;  then
  186                 BBUSER= "$2"
  187                 LOGTXT  "Setting B itBucket U ser from C ommand Lin e"
  188               else
  189                 DEBUG " argument $ 1 requires  another a rgument af ter it"
  190                 LOGTXT  "Error in  $1 argumen t (no next  argument  provided)"
  191                 exit 9
  192               fi
  193               shift # p ast argume nt
  194               shift # p ast user e ntry
  195               ;;
  196         -p |  --pass |  --password  )
  197               if [[ $#  -ge 2 ]] ;  then
  198                 BBPASS= "$2"
  199                 DEBUG "  "
  200                 LOGTXT  "Setting B itBucket P assword fr om Command  Line"
  201               else
  202                 DEBUG " argument $ 1 requires  another a rgument af ter it"
  203                 LOGTXT  "Error in  $1 argumen t (no next  argument  provided)"
  204                 exit 9
  205               fi
  206               shift # p ast argume nt
  207               shift # p ast passwo rd entry
  208               ;;
  209         -v |  --vpass |  --vault |  --vault-p assword )
  210               if [[ $#  -ge 2 ]] ;  then
  211                 JVPASS= "$2"
  212                 LOGTXT  "Setting J enkins Vau lt Passwor d from Com mand Line"
  213               else
  214                 DEBUG " argument $ 1 requires  another a rgument af ter it"
  215                 LOGTXT  "Error in  $1 argumen t (no next  argument  provided)"
  216                 exit 9
  217               fi
  218               shift # p ast argume nt
  219               shift # p ast vault  password e ntry
  220               ;;
  221         * )   DEBUG "$1  is not a  valid argu ment"
  222               LOGTXT "$ 1 is not a  valid arg ument"
  223               exit 9
  224               ;;
  225       esac
  226     done
  227     LOGTXT " Exited Rea dArgs"
  228   }
  229  
  230   # DetectSy stem attem pts to ide ntify the  system we' re on base d on IP ad dress
  231   # and PTR  record (if  any)
  232   DetectSyst em() {
  233     LOGTXT " Entering D etectSyste m `date`"
  234     EDEBUG " Detecting  System IP:  "
  235     # This m ethod uses  our defin ed gateway  to determ ine the IP  address u sed
  236     # for ge tting out. .. in most  cases, th is will be  our prima ry IP addr ess
  237     Internet IP="`ip ro ute get 8. 8.8.8 | aw k '{print  $NF; exit} '`"
  238     LOGTXT " InternetIP  found to  be ${Inter netIP}"
  239     # The ho stname -I  option ret urns ALL I Ps (other  than loopb ack)
  240     # In the  EDE envir onment the re are oft en 2 inter faces
  241     IPs="`ho stname -I` "
  242     LOGTXT " List of al l IPs on o ur interfa ces is: ${ IPs}"
  243     MyIP=${I nternetIP}
  244     #
  245     # If we' ve been gi ven the FQ DN, don't  bother det ecting it
  246     if [ ! - z "${MyFQD N}" ] ; th en
  247       LOGTXT  "Using pr ovided FQD N ${MyFQDN } and rout able IP ${ MyIP}"
  248       EDEBUG  "${WHITE} ${MyIP}${N ORMAL}"
  249       DEBUG  "${SHOWOK} "
  250     # We wer en't told  our FQDN,  so we have  to try to  GET it
  251     # Since  we're prim arily desi gned for o perating i n VA envir onments, t he
  252     # first  way we try  to determ ine our FQ DN (and IP ) is to tr y to get i t from
  253     # the VA  DNS serve rs
  254     elif PTR ="`host ${ MyIP} ${VA MAGDNS1} |  grep 'va. gov'`" ; t hen
  255       MyFQDN ="`echo ${ PTR} | sed  's/.* poi nter //'`"
  256       LOGTXT  "${MyIP}  has PTR of  ${MyFQDN}  from ${VA MAGDNS1}"
  257       EDEBUG  "${WHITE} ${MyIP}${N ORMAL}"
  258       DEBUG  "${SHOWOK} "
  259     # If our  IP isn't  listed in  the VA DNS  server (a nd it wasn 't provide d)
  260     # We hav e little c hoice (unt il HAC is  created) b ut to assu me AWS
  261     elif PTR ="`host ${ MyIP} ${AW SCI} | gre p 'tas.loc al'`" ; th en
  262       MyFQDN ="`echo ${ PTR} | sed  's/.* poi nter //'`"
  263       LOGTXT  "${MyIP}  has PTR of  ${MyFQDN}  from AWS  DNS"
  264       EDEBUG  "${WHITE} ${MyIP}${N ORMAL}"
  265       DEBUG  "${SHOWOK} "
  266     else 
  267       LOGTXT  "Failed t o determin e which IP  to use"
  268       EDEBUG  "${YELLOW }${IPs}${N ORMAL}"
  269       DEBUG  "${SHOWISS UE}"
  270       exit 1 0
  271     fi
  272     #
  273     # At thi s point we  should ha ve defined  MyFQDN an d MyIP
  274     # Lets v erify and  set the My Hostname &  MyDomain  settings
  275     EDEBUG " Detecting  System nam es: "
  276     if [ -z  "${MyFQDN} " ] ; then
  277       LOGTXT  "Failed t o find an  FQDN: fix  DNS/PTR or  specifiy  on the com mand line  with -f"
  278       DEBUG  "${SHOWFAI L}"
  279       DEBUG   "Failed t o find you r FQDN in  DNS"
  280       DEBUG   " - Fix y our DNS (P TR) entrie s for this  IP addres s, or"
  281       DEBUG   " - use t he --fqdn  option to  force the  value in t his script "
  282       exit 1 0
  283     elif ! M yHostname= "`echo ${M yFQDN} | a wk -F. '{  print $1 } '`" ; then
  284       LOGTXT  "Error ge tting host name from  ${MyFQDN}"
  285       DEBUG  "${SHOWFAI L}"
  286       DEBUG   "Failed t o get a va lid hostna me from yo ur FQDN: $ {MyFQDN}"
  287       exit 1 0
  288     elif ! M yDomain="` echo ${MyF QDN} | sed  s/^${MyHo stname}\./ /`" ; then
  289       DEBUG  "${SHOWFAI L}"
  290       DEBUG   "Failed t o get a va lid domain  name from  your FQDN : ${MyFQDN }"
  291       LOGTXT  "Error ge tting doma in from ${ MyFQDN}"
  292       exit 1 0
  293     fi
  294     EDEBUG " ${WHITE}${ MyFQDN}${N ORMAL}"
  295     DEBUG "$ {SHOWOK}"
  296  
  297     # Next w e need to  set the ho stname
  298     EDEBUG " Setting Ho stname to:  "
  299     if ! hos tnamectl s et-hostnam e ${MyFQDN } ; then
  300       DEBUG  "${SHOWFAI L}"
  301       DEBUG   "Failed t o set host name to ${ MyFQDN} -  Unknown ca use"
  302       LOGTXT  "Error se tting host name to ${ MyFQDN}"
  303       exit 1 0
  304     fi
  305     # Ensure  that we h ave oursel ves listed  in /etc/h osts
  306     if ! gre p -q ${MyI P} /etc/ho sts ; then
  307       echo $ {MyIP} ${M yHostname}  ${MyFQDN}  >> /etc/h osts
  308     fi
  309     EDEBUG " ${WHITE}${ MyFQDN}${N ORMAL}"
  310     DEBUG "$ {SHOWOK}"
  311  
  312     # Finall y we need  to determi ne our env iroment: M AG, EDE, A WS, or HAC
  313     EDEBUG " Detected S ystem Envi ronment is : "
  314     if `echo  ${MyFQDN}  | grep '. va.gov' >  /dev/null  2>&1` ; th en
  315       IsVA=Y es
  316       if   [  "${MyHost name:2:3}"  == "c20"  ] ; then
  317         Depl oyEnv=MAG
  318           MyCIServer =http:// URL
  319         EDEB UG "${WHIT E}MAG${NOR MAL}"
  320         DEBU G  "${SHOW OK}"
  321       elif [  "${MyHost name:2:3}"  == "aus"  ] ; then
  322         Depl oyEnv=EDE
  323           MyCIServer =http:// URL
  324         EDEB UG "${WHIT E}EDE${NOR MAL}"
  325         DEBU G  "${SHOW OK}"
  326       else
  327         DEBU G "${SHOWF AIL}"
  328         DEBU G  "Error  determinin g VA insta ll environ ment -- ch eck hostna me"
  329         LOGT XT "Error  determinin g VA insta ll environ ment -- ch eck hostna me"
  330         exit  10
  331       fi
  332       if [ " ${MyHostna me:5:3}" = = "fpc" ]  ; then
  333         IsCI Server=tru e
  334       fi
  335     # ===
  336     # At som e point in  the futur e, we will  detect Ha lfaker Azu re Cloud e nv here
  337     # ===
  338     elif `ec ho ${MyFQD N} | grep  '.halfaker labs.com'  > /dev/nul l 2>&1` ;  then
  339       IsVA=N o
  340       Deploy Env=AWS 
  341       MyCISe rver=http: //aws-mast er.mccf.ha lfakerlabs .com
  342       if [ " ${MyHostna me:4:6}" = = "master"  ] ; then
  343         IsCI Server=tru e
  344       fi
  345       EDEBUG  "${WHITE} AWS${NORMA L}"
  346       DEBUG   "${SHOWOK }"
  347     elif `ec ho ${MyFQD N} | grep  '.tas.loca l' > /dev/ null 2>&1`  ; then
  348       IsVA=N o
  349       Deploy Env=AWS 
  350       MyCISe rver=http: //aws-mast er.mccf.ha lfakerlabs .com
  351       if [ " ${MyHostna me:4:6}" = = "master"  ] ; then
  352         IsCI Server=tru e
  353       fi
  354       EDEBUG  "${WHITE} AWS${NORMA L}"
  355       DEBUG   "${SHOWOK }"
  356     else
  357       DEBUG  "${SHOWFAI L}"
  358       DEBUG   "Error de termining  Non-VA ins tall envir onment --  check doma in name"
  359       LOGTXT  "Error de termining  Non-VA ins tall envir onment --  check doma in name"
  360       exit 1 0
  361     fi
  362     LOGTXT " ${MyIP} is  ${MyHostn ame}.${MyD omain} in  ${DeployEn v}"
  363     LOGTXT " DetectSyst em exited"
  364   }
  365   # Make use  of ALL of  the alloc ated stora ge!
  366   GrowFS() {
  367     LOGTXT " Entering G rowFS `dat e`"
  368     EDEBUG " Verifiying  and Growi ng Filesys tems: "
  369     Err=
  370     #
  371     # Grow H ome to 10G B (from de fault 2GB)
  372     FSYS=/ho me
  373     SIZE=10G B
  374     EXTENT=" `df -h ${F SYS} | gre p ${FSYS}   | awk '{  print $1 } '`"
  375     LOGTXT " Setting si ze of ${FS YS} (${EXT ENT}) to $ {SIZE}"
  376     EDEBUG " ${WHITE}${ FSYS} "
  377     if ! lve xtend -r - L ${SIZE}  ${EXTENT}  >> ${LOGFI LE} 2>&1 ;  then
  378       LOGTXT  "Error re turned fro m lvextend  -- contin uing thoug h"
  379       DEBUG  "\n${WHITE }Problem g rowing ${F SYS} to ${ SIZE}${SHO WISSUE}"
  380       Err=1
  381     fi
  382     #
  383     # Grow O pt to 10GB  (from def ault 2GB)
  384     FSYS=/op t
  385     SIZE=10G B
  386     EXTENT=" `df -h ${F SYS} | gre p ${FSYS}  | awk '{ p rint $1 }' `"
  387     LOGTXT " Setting si ze of ${FS YS} (${EXT ENT}) to $ {SIZE}"
  388     EDEBUG " ${WHITE}${ FSYS} "
  389     if ! lve xtend -r - L ${SIZE}  ${EXTENT}  >> ${LOGFI LE} 2>&1 ;  then
  390       LOGTXT  "Error re turned fro m lvextend  -- contin uing thoug h"
  391       DEBUG  "\n${WHITE }Problem g rowing ${F SYS} to ${ SIZE}${SHO WISSUE}"
  392       Err=1
  393     fi
  394     #
  395     # Grow V ar to 20GB  (this is  where web  pages go!)
  396     FSYS=/va r
  397     SIZE=20G B
  398     EXTENT=" `df -h ${F SYS} | gre p ${FSYS}  | awk '{ p rint $1 }' `"
  399     LOGTXT " Setting si ze of ${FS YS} (${EXT ENT}) to $ {SIZE}"
  400     EDEBUG " ${WHITE}${ FSYS} "
  401     if ! lve xtend -r - L ${SIZE}  ${EXTENT}  >> ${LOGFI LE} 2>&1 ;  then
  402       LOGTXT  "Error re turned fro m lvextend  -- contin uing thoug h"
  403       DEBUG  "\n${WHITE }Problem g rowing ${F SYS} to ${ SIZE}${SHO WISSUE}"
  404       Err=1
  405     fi
  406     LOGTXT " GrowFS Exi ted `date` "
  407     if [ -z  ${Err} ] ;  then DEBU G "${SHOWO K}" ; fi
  408   }
  409  
  410   GetPackage s() {
  411     LOGTXT " Entering G etPackages  `date`"
  412     # The pl aybooks th at complet e startup  require An sible and  are retrie ved with
  413     # GIT --  so we nee d to fetch  them with  YUM
  414     EDEBUG " Installing  Pre-Insta ll Package s..."
  415     if ! yum  install $ {PreInstal ledPkgs} - y --disabl erepo=\*mc cf\* >> ${ LOGFILE} 2 >&1 ; then
  416       DEBUG  "${SHOWFAI L}"
  417       DEBUG   "Failure  installing  Pre-Insta ll Package s - See Lo g File"
  418       LOGTXT  "Failure  installing  Pre-Insta ll Package s"
  419       exit 1 5
  420     fi
  421     DEBUG "$ {SHOWOK}"
  422  
  423     LOGTXT " Exiting Ge tPackages"
  424   }
  425   #
  426   # EnableJe nkinsAcess  creates t he MCCF Je nkins user  on the sy stem and
  427   # installs  SSH KEY l evel acces s to it. W e also mak e sure tha t this
  428   # Jenkins  user canno t login wi th any pas sword, but  can with  a key
  429   # Finally,  we make t his Jenkin s user a S UDOer with  no need f or a passw ord
  430   EnableJenk insAccess( ) {
  431     LOGTXT " Entering E nableJenki nsAccess"
  432     EDEBUG " Enabling M CCF Jenkin s user: "
  433     # Check  if group e xists, and  if not cr eate it
  434     EDEBUG " ${WHITE}Gr oup ${NORM AL}"
  435     if [ "`a wk -F: '{  print $1 } ' /etc/gro up | grep  -c jenkins `" -eq 0 ]  ; then
  436       if ! g roupadd -g  ${JENKINS UID} ${JEN KINSUSER}  >> ${LOGFI LE} 2>&1 ;  then
  437         DEBU G "${SHOWF AIL}"
  438         DEBU G "Failed  to add Jen kins group  -- check  error logs "
  439         exit  12
  440       fi
  441     fi
  442     # Check  if user ex ists, and  if not cre ate it
  443     EDEBUG " ${WHITE}Us er ${NORMA L}"
  444     if [ "`a wk -F: '{  print $1 } ' /etc/pas swd | grep  -c jenkin s`" -eq 0  ] ; then
  445       if ! u seradd -s  ${JENKINSS HELL} -m - d ${JENKIN SHOME} -c  "Jenkins A ccess Syst em Account " -u ${JEN KINSUID} - g ${JENKIN SUID} ${JE NKINSUSER}  >> ${LOGF ILE} 2>&1  ; then
  446         DEBU G "${SHOWF AIL}"
  447         DEBU G "Failed  to add Jen kins user  -- check e rror logs"
  448         exit  12
  449       fi
  450     fi
  451     # Create  .ssh fold er 
  452     EDEBUG " ${WHITE}.s sh ${NORMA L}"
  453     if [ ! - d ${JENKIN SHOME}/.ss h ] ; then
  454       if ! m kdir -p ${ JENKINSHOM E}/.ssh ;  then
  455         DEBU G "${SHOWF AIL}"
  456         DEBU G "Failed  to create  Jenkins .s sh"
  457         exit  12
  458       fi
  459     fi
  460     EDEBUG " ${WHITE}au th_key ${N ORMAL}"
  461     if [ ! - f ${JENKIN SHOME}/.ss h/authoriz ed_keys ]  ; then
  462       echo $ {JENKINSPU B} > ${JEN KINSHOME}/ .ssh/autho rized_keys
  463     fi
  464     if ! /bi n/chown -R  jenkins:j enkins ${J ENKINSHOME }/.ssh ; t hen
  465       DEBUG  "${SHOWFAI L}"
  466       DEBUG  "Failed to  set owner  for Jenki ns .ssh"
  467       exit 1 2
  468     elif ! / bin/chmod  700 ${JENK INSHOME}/. ssh ; then
  469       DEBUG  "${SHOWFAI L}"
  470       DEBUG  "Failed to  set permi ssions for  Jenkins . ssh"
  471       exit 1 2
  472     elif ! / bin/chmod  400 ${JENK INSHOME}/. ssh/author ized_keys  ; then
  473       DEBUG  "${SHOWFAI L}"
  474       DEBUG  "Failed to  set permi ssions for  Jenkins k eys"
  475       exit 1 2
  476     fi
  477     EDEBUG " ${WHITE}su do ${NORMA L}"
  478     JenkinsS udo=/etc/s udoers.d/j enkins
  479     if [ ! - f ${Jenkin sSudo} ] ;  then
  480       echo " jenkins AL L=(ALL) NO PASSWD:ALL " > ${Jenk insSudo}
  481       chmod  400 ${Jenk insSudo}
  482     fi
  483     DEBUG "$ {SHOWOK}"
  484     LOGTXT " Exiting En ableJenkin sAccess"
  485   }
  486  
  487   #
  488   DeployYUMR epo() {
  489     LOGTXT " Entering D eployYUMRe po"
  490     EDEBUG " Downloadin g YUM Repo  for CI Se rver..."
  491     STARTDIR ="`pwd`"
  492     # Clean  out any pr ior git op eration fo r this pro ject
  493     if [ -d  "${YUMDIR} " ] ; then  rm -rf "$ {YUMDIR}"  ; fi
  494     # Fetch  the projec t using gi t with the  provided  credential s
  495     if ! git  clone htt ps://${BBU SER}:${BBP ASS}@${YUM SRC} >> ${ LOGFILE} 2 >&1 ; then
  496       DEBUG  "${SHOWFAI L}" 
  497       DEBUG  " Error ob taining pl aybook --  check the  logfile @  ${LOGFILE} "
  498       DEBUG  " However,  the most  likely err or is bad  BitBucket  permission s"
  499       LOGTXT  "Sorry! g it clone f ailed..."
  500       exit 2 1
  501     else
  502       DEBUG  "${SHOWOK} "
  503     fi
  504     if [ ! - d "${YUMDI R}" ] ; th en
  505       DEBUG  "${SHOWFAI L}"
  506       DEBUG  " Error ac cessing fo lder `pwd` /${YUMDIR} "
  507       exit 2 1
  508     elif [ !  -f "${YUM DIR}/${YUM SH}" ] ; t hen
  509       DEBUG  "${SHOWFAI L}"
  510       DEBUG  " Error ac cessing fi le `pwd`/$ {YUMDIR}/$ {YUMSH}" 
  511       exit 2 1
  512     fi
  513     cd "${YU MDIR}"
  514     EDEBUG " Deploying  YUM Repo L ocally..."
  515     if ! ${Y UMSH} >> $ {LOGFILE}  2>&1 ; the n
  516       DEBUG  "${SHOWFAI L}"
  517       DEBUG  "YUM Insta ller Faile d -- check  logs: ${L OGFILE}"
  518       exit 2 1
  519     else
  520       DEBUG  "${SHOWOK} "
  521     fi
  522     cd "${ST ARTDIR}"
  523     rm -rf " ${YUMDIR}"
  524     EDEBUG " Starting A pache HTTP  service f or YUM rep o..."
  525     if ! yum  install h ttpd -y -- disablerep o=\*mccf\*  >> ${LOGF ILE} 2>&1  ; then
  526       DEBUG  "${SHOWFAI L}"
  527       DEBUG  "Apache ht tpd Instal ler Failed  -- check  logs: ${LO GFILE}"
  528       exit 2 1
  529     elif ! s ystemctl e nable http d >> ${LOG FILE} 2>&1  ; then
  530       DEBUG  "${SHOWFAI L}"
  531       DEBUG  "Apache ht tpd Instal ler Failed  -- check  logs: ${LO GFILE}"
  532       exit 2 1
  533     elif ! s ystemctl s tart httpd  >> ${LOGF ILE} 2>&1  ; then
  534       DEBUG  "${SHOWFAI L}"
  535       DEBUG  "Apache ht tpd Startu p Failed - - check lo gs: ${LOGF ILE}"
  536       exit 2 1
  537     elif ! f irewall-cm d --zone=p ublic --ad d-service= http --per manent >>  ${LOGFILE}  2>&1 ; th en
  538       DEBUG  "${SHOWFAI L}"
  539       DEBUG  "Firewalld  add for h ttpd Faile d -- check  logs: ${L OGFILE}"
  540       exit 2 1
  541     else
  542       DEBUG  "${SHOWOK} "
  543     fi
  544     LOGTXT " Exiting De ployYUMRep o"
  545   }
  546   #
  547   # Subscrib eMCCFRepo 
  548   SubscribeM CCFRepo()  {
  549     LOGTXT " Entering S ubscribeMC CFRepo"
  550     EDEBUG " Subscribin g to addit ional YUM  Repos: ${W HITE}MCCF  ${NORMAL}"
  551     cat > /e tc/yum.rep os.d/mccf. repo << -E ND
  552   [mccf]
  553   name=Halfa ker MCCF D istributab le (to the  VA)
  554   baseurl=${ MyCIServer }/pub/repo /yum/MCCF
  555   gpgcheck=1
  556   gpgkey=${M yCIServer} /pub/repo/ yum/RPM-GP G-KEY-MCCF
  557   enabled=1
  558   -END
  559     LOGTXT " Created mc cf.repo"
  560     if [ "${ DeployEnv} " == "AWS"  ] ; then
  561       EDEBUG  "${YELLOW }MCCF-VA $ {NORMAL}"
  562       cat >>  /etc/yum. repos.d/mc cf.repo <<  -END
  563   [mccf-va]
  564   name=Halfa ker MCCF D ev Repo fo r VA suppl ied packag es
  565   baseurl=${ MyCIServer }/dev/repo /yum/MCCF- VA
  566   gpgcheck=1
  567   gpgkey=${M yCIServer} /pub/repo/ yum/RPM-GP G-KEY-MCCF
  568   enabled=1
  569   -END
  570       LOGTXT  "Added mc cf-va to   mccf.repo"
  571       EDEBUG  "${YELLOW }MCCF-DEV  ${NORMAL}"
  572       cat >>  /etc/yum. repos.d/mc cf.repo <<  -END
  573   [mccf-dev]
  574   name=Halfa ker MCCF D ev Repo 
  575   baseurl=${ MyCIServer }/dev/repo /yum/MCCF- DEV
  576   gpgcheck=1
  577   gpgkey=${M yCIServer} /pub/repo/ yum/RPM-GP G-KEY-MCCF
  578   enabled=0
  579   -END
  580       LOGTXT  "Added mc cf-dev to   mccf.repo "
  581     fi
  582     DEBUG "$ {SHOWOK}"
  583     LOGTXT " Exiting Su bscribeMCC FRepo"
  584   }
  585   #
  586   # InstallC I Server ( aka NFS or  Master)
  587   DeployJenk ins() {
  588     LOGTXT " Entering D eployJenki ns"
  589     #
  590     # If Bit Bucket Use rname, Pas sword, or  Vault Pass words are  not provid ed...
  591     if [ -z  "${BBUSER} " ] ; then
  592       EDEBUG  "${WHITE} Please ent er your At lassian Bi tBucket Ac count User  Name: ${Y ELLOW}"
  593       read B BUSER
  594       EDEBUG  "${NORMAL }"
  595     fi
  596     if [ -z  "${BBPASS} " ] ; then
  597       EDEBUG  "${WHITE} Please ent er your pa ssword for  the accou nt ${BBUSE R}: ${NORM AL}"
  598       read - s BBPASS
  599       DEBUG  " "
  600     fi
  601     if [ -z  "${JVPASS} " ] ; then
  602       EDEBUG  "${WHITE} For CI Ser vers, plea se enter t he Jenkins  Vault Pas sword: ${N ORMAL}"
  603       read - s JVPASS
  604       DEBUG  " "
  605     fi
  606     EDEBUG " Setting Je nkins Vaul t Password s..."
  607     echo "${ JVPASS}" >  ~root/.va ult_pass     ; chmod  400 ~root/ .vault_pas s
  608     echo "${ JVPASS}" >  ~jenkins/ .vault_pas s ; chmod  400 ~jenki ns/.vault_ pass ; cho wn -R jenk ins:jenkin s ~jenkins /.vault_pa ss
  609     DEBUG "$ {SHOWOK}"
  610     EDEBUG " Getting Je nkins Repo  for CI Se rver..."
  611     STARTDIR ="`pwd`"
  612     # Clean  out any pr ior git op eration fo r this pro ject
  613     if [ -d  "${JENKINS DIR}" ] ;  then rm -r f "${JENKI NSDIR}" ;  fi
  614     # Fetch  the projec t using gi t with the  provided  credential s
  615     if ! git  clone htt ps://${BBU SER}:${BBP ASS}@${JEN KINSSRC} > > ${LOGFIL E} 2>&1 ;  then
  616       DEBUG  "${SHOWFAI L}" 
  617       DEBUG  " Error ob taining pl aybook --  check the  logfile @  ${LOGFILE} "
  618       exit 2 1
  619     else
  620       DEBUG  "${SHOWOK} "
  621     fi
  622     EDEBUG " Running Je nkins Repo  Installer ..."
  623     if [ ! - d "${JENKI NSDIR}" ]  ; then
  624       DEBUG  "${SHOWFAI L}"
  625       DEBUG  " Error ac cessing fo lder `pwd` /${JENKINS DIR}"
  626       exit 2 1
  627     elif [ !  -f "${JEN KINSDIR}/$ {JENKINSSH }" ] ; the n
  628       DEBUG  "${SHOWFAI L}"
  629       DEBUG  " Error ac cessing fi le `pwd`/$ {JENKINSDI R}/${JENKI NSSH}" 
  630       exit 2 1
  631     fi
  632     cd "${JE NKINSDIR}"
  633     if ${JEN KINSSH} >>  ${LOGFILE } 2>&1 ; t hen
  634       DEBUG  "${SHOWOK} "
  635     else
  636       DEBUG  "${SHOWFAI L}"
  637       DEBUG  "Jenkins R epo Instal ler Failed  -- check  logs: ${LO GFILE}"
  638       exit 2 1
  639     fi
  640     cd "${ST ARTDIR}"
  641     rm -rf " ${JENKINSD IR}"
  642     #
  643     EDEBUG " Getting De vOps Repo  for CI Ser ver..."
  644     # Clean  out any pr ior git op eration fo r this pro ject
  645     if [ -d  "${DEVOPSD IR}" ] ; t hen rm -rf  "${DEVOPS DIR}" ; fi
  646     # Fetch  the projec t using gi t with the  provided  credential s
  647     if ! git  clone htt ps://${BBU SER}:${BBP ASS}@${DEV OPSSRC} >>  ${LOGFILE } 2>&1 ; t hen
  648       DEBUG  "${SHOWFAI L}" 
  649       DEBUG  " Error ob taining pl aybook --  check the  logfile @  ${LOGFILE} "
  650       exit 2 1
  651     else
  652       DEBUG  "${SHOWOK} "
  653     fi
  654     EDEBUG " Running De vops Jenki ns Install er..."
  655     if [ ! - d "${DEVOP SDIR}" ] ;  then
  656       DEBUG  "${SHOWFAI L}"
  657       DEBUG  " Error ac cessing fo lder `pwd` /${DEVOPSD IR}"
  658       exit 2 1
  659     elif [ !  -d "${DEV OPSDIR}/${ DEVOPSDIR2 }" ] ; the n
  660       DEBUG  "${SHOWFAI L}"
  661       DEBUG  " Error ac cessing fo lder `pwd` /${DEVOPSD IR}/${DEVO PSDIR2}"
  662       exit 2 1
  663     else
  664       cd "${ DEVOPSDIR} /${DEVOPSD IR2}"
  665       if [ !  -f "${DEV OPSSH}" ]  ; then
  666         DEBU G "${SHOWF AIL}"
  667         DEBU G " Error  accessing  file `pwd` /${DEVOPSS H}" 
  668         exit  21
  669       fi
  670     fi
  671   #
  672   #
  673   # THIS HAS  TO BE HAS HED OUT BE FORE RUNNI NG ANYWHER E ELSE BUT  MAG
  674   #
  675   #
  676     if ${DEV OPSSH} -e  MAG_DEV -u  ${BBUSER}  -p ${BBPA SS} -l /va r/log/${DE VOPSSH}.lo g >> ${LOG FILE} 2>&1  ; then
  677       DEBUG  "${SHOWOK} "
  678     else
  679       DEBUG  "${SHOWFAI L}"
  680       DEBUG  " Installe r Failed - - check lo gs: ${LOGF ILE}"
  681       exit 2 1
  682     fi
  683     cd "${ST ARTDIR}"
  684     rm -rf " ${DEVOPSDI R}"
  685     DEBUG "$ {SHOWOK}"
  686     LOGTXT " Exiting De ployJenkin s"
  687   }
  688   #
  689  
  690   #
  691   # THIS IS  THE START  OF ACTUAL  PROCESSING
  692   #
  693   #
  694  
  695   LOGTXT "St arting $0  at `date`"
  696   EDEBUG ${C LEAR}
  697   DEBUG "Wel come to th e TAS Syst em Prepara tion Scrip t."
  698   DEBUG "We  need to co nfirm and/ or set som e things u p before w e can inte grate"
  699   DEBUG "thi s system i nto TAS. P lease pay  close atte ntion to t he output  below:"
  700   DEBUG "Add itionally,  a log fil e is creat ed at ${LO GFILE}"
  701   DEBUG " "
  702  
  703   ReadArgs $ *
  704   DetectSyst em
  705   GrowFS
  706   EnableJenk insAccess
  707   GetPackage s
  708   if [ ! -z  ${IsCIServ er} ] ; th en
  709     DeployYU MRepo
  710     Subscrib eMCCFRepo
  711     DeployJe nkins
  712   else
  713     Subscrib eMCCFRepo
  714   fi
  715  
  716   DEBUG "All  done... e verything  passed. Re booting sy stem in 30  seconds f or initial  use"
  717   DEBUG "Pre ss CTRL-C  to abort t he reboot"
  718   LOGTXT "Co mpleted $0  at `date` "
  719   sleep 30
  720   PARENT="`p wd | sed ' s#/mccf_de vops/.*#/# '`"
  721   echo $PARE NT
  722   cd "${PARE NT}"
  723   rm -rf mcc f_devops
  724   init 6