summaryrefslogtreecommitdiffstats
path: root/foreman/ci/vm_nodes_provision.sh
blob: d0bba64526179482d4240f82e9bbf7793ec7aff7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
#!/usr/bin/env bash

#bootstrap script for VM OPNFV nodes
#author: Tim Rozet (trozet@redhat.com)
#
#Uses Vagrant and VirtualBox
#VagrantFile uses vm_nodes_provision.sh which configures linux on nodes
#Depends on Foreman being up to be able to register and apply puppet
#
#Pre-requisties:
#Target system should be Centos7 Vagrant VM

##VARS
reset=`tput sgr0`
blue=`tput setaf 4`
red=`tput setaf 1`
green=`tput setaf 2`

host_name=REPLACE
dns_server=REPLACE
##END VARS

##set hostname
echo "${blue} Setting Hostname ${reset}"
hostnamectl set-hostname $host_name

##remove NAT DNS
echo "${blue} Removing DNS server on first interface ${reset}"
if ! grep 'PEERDNS=no' /etc/sysconfig/network-scripts/ifcfg-enp0s3; then
  echo "PEERDNS=no" >> /etc/sysconfig/network-scripts/ifcfg-enp0s3
  systemctl restart NetworkManager
fi

if ! ping www.google.com -c 5; then 
  echo "${red} No internet connection, check your route and DNS setup ${reset}"
  exit 1
fi

# Install EPEL repo for access to many other yum repos
# Major version is pinned to force some consistency for Arno
yum install -y epel-release-7*

# Update device-mapper-libs, needed for libvirtd on compute nodes
# Major version is pinned to force some consistency for Arno
if ! yum -y upgrade device-mapper-libs-1*; then
   echo "${red} WARN: Unable to upgrade device-mapper-libs...nova-compute may not function ${reset}"
fi

# Install other required packages
# Major version is pinned to force some consistency for Arno
echo "${blue} Installing Puppet ${reset}"
if ! yum install -y puppet-3*; then
  printf '%s\n' 'vm_nodes_provision.sh: failed to install required packages' >&2
  exit 1
fi

echo "${blue} Configuring puppet ${reset}"
cat > /etc/puppet/puppet.conf << EOF

[main]
vardir = /var/lib/puppet
logdir = /var/log/puppet
rundir = /var/run/puppet
ssldir = \$vardir/ssl

[agent]
pluginsync      = true
report          = true
ignoreschedules = true
daemon          = false
ca_server       = foreman-server.opnfv.com
certname        = $host_name
environment     = production
server          = foreman-server.opnfv.com
runinterval     = 600

EOF

# Setup puppet to run on system reboot
/sbin/chkconfig --level 345 puppet on

/usr/bin/puppet agent --config /etc/puppet/puppet.conf -o --tags no_such_tag --server foreman-server.opnfv.com --no-daemonize

sync

# Inform the build system that we are done.
echo "Informing Foreman that we are built"
wget -q -O /dev/null --no-check-certificate http://foreman-server.opnfv.com:80/unattended/built

echo "Starting puppet"
systemctl start puppet