| Tomáš Kukrál | b9957b3 | 2017-02-28 14:49:00 +0100 | [diff] [blame] | 1 | /** | 
|  | 2 | * | 
|  | 3 | * Launch heat stack with basic k8s | 
|  | 4 | * Flow parameters: | 
|  | 5 | *   STACK_TYPE                 Orchestration engine: heat, '' | 
|  | 6 | *   INSTALL                    What should be installed (k8s, openstack, ...) | 
| Tomáš Kukrál | 55357d0 | 2017-02-28 22:56:45 +0100 | [diff] [blame] | 7 | *   TEST                       What should be tested (k8s, openstack, ...) | 
| Tomáš Kukrál | b9957b3 | 2017-02-28 14:49:00 +0100 | [diff] [blame] | 8 | * | 
|  | 9 | * Expected parameters: | 
|  | 10 | * | 
|  | 11 | * required for STACK_TYPE=heat | 
|  | 12 | *   HEAT_TEMPLATE_URL          URL to git repo with Heat templates | 
|  | 13 | *   HEAT_TEMPLATE_CREDENTIALS  Credentials to the Heat templates repo | 
|  | 14 | *   HEAT_TEMPLATE_BRANCH       Heat templates repo branch | 
|  | 15 | *   HEAT_STACK_TEMPLATE        Heat stack HOT template | 
|  | 16 | *   HEAT_STACK_ENVIRONMENT     Heat stack environmental parameters | 
|  | 17 | *   HEAT_STACK_ZONE            Heat stack availability zone | 
|  | 18 | *   HEAT_STACK_PUBLIC_NET      Heat stack floating IP pool | 
|  | 19 | *   HEAT_STACK_DELETE          Delete Heat stack when finished (bool) | 
|  | 20 | *   HEAT_STACK_CLEANUP_JOB     Name of job for deleting Heat stack | 
|  | 21 | *   HEAT_STACK_REUSE           Reuse Heat stack (don't create one) | 
|  | 22 | *   OPENSTACK_API_URL          OpenStack API address | 
|  | 23 | *   OPENSTACK_API_CREDENTIALS  Credentials to the OpenStack API | 
|  | 24 | *   OPENSTACK_API_PROJECT      OpenStack project to connect to | 
|  | 25 | *   OPENSTACK_API_CLIENT       Versions of OpenStack python clients | 
|  | 26 | *   OPENSTACK_API_VERSION      Version of the OpenStack API (2/3) | 
|  | 27 | * | 
|  | 28 | *   SALT_MASTER_CREDENTIALS    Credentials to the Salt API | 
|  | 29 | * | 
|  | 30 | * required for STACK_TYPE=NONE or empty string | 
|  | 31 | *   SALT_MASTER_URL            URL of Salt-API | 
|  | 32 |  | 
|  | 33 | *   K8S_API_SERVER             Kubernetes API address | 
|  | 34 | *   K8S_CONFORMANCE_IMAGE      Path to docker image with conformance e2e tests | 
|  | 35 | * | 
|  | 36 | */ | 
|  | 37 |  | 
|  | 38 | git = new com.mirantis.mk.Git() | 
|  | 39 | openstack = new com.mirantis.mk.Openstack() | 
|  | 40 | salt = new com.mirantis.mk.Salt() | 
| Tomáš Kukrál | b9957b3 | 2017-02-28 14:49:00 +0100 | [diff] [blame] | 41 |  | 
| Tomáš Kukrál | e80680a | 2017-03-02 16:34:35 +0100 | [diff] [blame] | 42 |  | 
| Tomáš Kukrál | 9e0fb73 | 2017-03-02 10:12:05 +0100 | [diff] [blame] | 43 | timestamps { | 
|  | 44 | node { | 
| Tomáš Kukrál | a18de11 | 2017-03-02 13:57:47 +0100 | [diff] [blame] | 45 | try { | 
| Tomáš Kukrál | e80680a | 2017-03-02 16:34:35 +0100 | [diff] [blame] | 46 |  | 
|  | 47 |  | 
| Tomáš Kukrál | a18de11 | 2017-03-02 13:57:47 +0100 | [diff] [blame] | 48 | // | 
|  | 49 | // Prepare machines | 
|  | 50 | // | 
| Tomáš Kukrál | b9957b3 | 2017-02-28 14:49:00 +0100 | [diff] [blame] | 51 |  | 
| Tomáš Kukrál | a18de11 | 2017-03-02 13:57:47 +0100 | [diff] [blame] | 52 | stage ('Create infrastructure') { | 
|  | 53 | if (STACK_TYPE == 'heat') { | 
|  | 54 | // value defaults | 
|  | 55 | def openstackCloud | 
|  | 56 | def openstackVersion = OPENSTACK_API_CLIENT ? OPENSTACK_API_CLIENT : 'liberty' | 
|  | 57 | def openstackEnv = "${env.WORKSPACE}/venv" | 
| Tomáš Kukrál | b9957b3 | 2017-02-28 14:49:00 +0100 | [diff] [blame] | 58 |  | 
| Filip Pytloun | 794ad95 | 2017-03-03 10:39:26 +0100 | [diff] [blame] | 59 | if (HEAT_STACK_REUSE.toBoolean() == true && HEAT_STACK_NAME == '') { | 
|  | 60 | error("If you want to reuse existing stack you need to provide it's name") | 
|  | 61 | } | 
|  | 62 |  | 
|  | 63 | if (HEAT_STACK_REUSE.toBoolean() == false) { | 
|  | 64 | // Don't allow to set custom heat stack name | 
|  | 65 | wrap([$class: 'BuildUser']) { | 
| Tomáš Kukrál | 24d7fe6 | 2017-03-03 10:57:11 +0100 | [diff] [blame] | 66 | if (env.BUILD_USER_ID) { | 
|  | 67 | HEAT_STACK_NAME = "${env.BUILD_USER_ID}-${JOB_NAME}-${BUILD_NUMBER}" | 
|  | 68 | } else { | 
|  | 69 | HEAT_STACK_NAME = "jenkins-${JOB_NAME}-${BUILD_NUMBER}" | 
|  | 70 | } | 
| Filip Pytloun | 794ad95 | 2017-03-03 10:39:26 +0100 | [diff] [blame] | 71 | currentBuild.description = HEAT_STACK_NAME | 
|  | 72 | } | 
| Tomáš Kukrál | 9e0fb73 | 2017-03-02 10:12:05 +0100 | [diff] [blame] | 73 | } | 
| Tomáš Kukrál | a18de11 | 2017-03-02 13:57:47 +0100 | [diff] [blame] | 74 |  | 
| Tomáš Kukrál | cbabec4 | 2017-03-02 16:24:04 +0100 | [diff] [blame] | 75 | // set description | 
| Tomáš Kukrál | aeb5c92 | 2017-03-02 17:00:48 +0100 | [diff] [blame] | 76 | currentBuild.description = "${HEAT_STACK_NAME}" | 
| Tomáš Kukrál | cbabec4 | 2017-03-02 16:24:04 +0100 | [diff] [blame] | 77 |  | 
| Tomáš Kukrál | a18de11 | 2017-03-02 13:57:47 +0100 | [diff] [blame] | 78 | // get templates | 
|  | 79 | git.checkoutGitRepository('template', HEAT_TEMPLATE_URL, HEAT_TEMPLATE_BRANCH, HEAT_TEMPLATE_CREDENTIALS) | 
|  | 80 |  | 
|  | 81 | // create openstack env | 
|  | 82 | openstack.setupOpenstackVirtualenv(openstackEnv, openstackVersion) | 
|  | 83 | openstackCloud = openstack.createOpenstackEnv(OPENSTACK_API_URL, OPENSTACK_API_CREDENTIALS, OPENSTACK_API_PROJECT) | 
|  | 84 | openstack.getKeystoneToken(openstackCloud, openstackEnv) | 
|  | 85 |  | 
|  | 86 | // launch stack | 
| Filip Pytloun | 794ad95 | 2017-03-03 10:39:26 +0100 | [diff] [blame] | 87 | if (HEAT_STACK_REUSE.toBoolean() == false) { | 
| Tomáš Kukrál | a18de11 | 2017-03-02 13:57:47 +0100 | [diff] [blame] | 88 | stage('Launch new Heat stack') { | 
|  | 89 | // create stack | 
|  | 90 | envParams = [ | 
|  | 91 | 'instance_zone': HEAT_STACK_ZONE, | 
|  | 92 | 'public_net': HEAT_STACK_PUBLIC_NET | 
|  | 93 | ] | 
|  | 94 | openstack.createHeatStack(openstackCloud, HEAT_STACK_NAME, HEAT_STACK_TEMPLATE, envParams, HEAT_STACK_ENVIRONMENT, openstackEnv) | 
|  | 95 | } | 
|  | 96 | } | 
|  | 97 |  | 
|  | 98 | // get SALT_MASTER_URL | 
|  | 99 | saltMasterHost = openstack.getHeatStackOutputParam(openstackCloud, HEAT_STACK_NAME, 'salt_master_ip', openstackEnv) | 
| Tomáš Kukrál | aeb5c92 | 2017-03-02 17:00:48 +0100 | [diff] [blame] | 100 | currentBuild.description = "${HEAT_STACK_NAME}: ${saltMasterHost}" | 
| Tomáš Kukrál | a18de11 | 2017-03-02 13:57:47 +0100 | [diff] [blame] | 101 | SALT_MASTER_URL = "http://${saltMasterHost}:8088" | 
| Tomáš Kukrál | 9e0fb73 | 2017-03-02 10:12:05 +0100 | [diff] [blame] | 102 | } | 
| Tomáš Kukrál | 9e0fb73 | 2017-03-02 10:12:05 +0100 | [diff] [blame] | 103 | } | 
| Tomáš Kukrál | 9e0fb73 | 2017-03-02 10:12:05 +0100 | [diff] [blame] | 104 |  | 
| Tomáš Kukrál | a18de11 | 2017-03-02 13:57:47 +0100 | [diff] [blame] | 105 | // | 
|  | 106 | // Connect to Salt master | 
|  | 107 | // | 
| Tomáš Kukrál | 9e0fb73 | 2017-03-02 10:12:05 +0100 | [diff] [blame] | 108 |  | 
| Tomáš Kukrál | a18de11 | 2017-03-02 13:57:47 +0100 | [diff] [blame] | 109 | def saltMaster | 
|  | 110 | stage('Connect to Salt API') { | 
|  | 111 | saltMaster = salt.connection(SALT_MASTER_URL, SALT_MASTER_CREDENTIALS) | 
|  | 112 | } | 
| Tomáš Kukrál | 9e0fb73 | 2017-03-02 10:12:05 +0100 | [diff] [blame] | 113 |  | 
| Tomáš Kukrál | a18de11 | 2017-03-02 13:57:47 +0100 | [diff] [blame] | 114 | // | 
|  | 115 | // Install | 
|  | 116 | // | 
| Tomáš Kukrál | 9e0fb73 | 2017-03-02 10:12:05 +0100 | [diff] [blame] | 117 |  | 
| Tomáš Kukrál | a18de11 | 2017-03-02 13:57:47 +0100 | [diff] [blame] | 118 | if (INSTALL.toLowerCase().contains('core')) { | 
|  | 119 | stage('Install core infrastructure') { | 
|  | 120 | // salt.master, reclass | 
|  | 121 | // refresh_pillar | 
|  | 122 | // sync_all | 
|  | 123 | // linux,openssh,salt.minion.ntp | 
| Tomáš Kukrál | 9e0fb73 | 2017-03-02 10:12:05 +0100 | [diff] [blame] | 124 |  | 
| Tomáš Kukrál | a18de11 | 2017-03-02 13:57:47 +0100 | [diff] [blame] | 125 | //orchestrate.installFoundationInfra(saltMaster) | 
| Tomáš Kukrál | cbdb1d0 | 2017-03-02 16:08:51 +0100 | [diff] [blame] | 126 | salt.enforceState(saltMaster, 'I@salt:master', ['salt.master', 'reclass'], true) | 
| Tomáš Kukrál | 01f284a | 2017-03-02 23:14:20 +0100 | [diff] [blame] | 127 | salt.runSaltProcessStep(saltMaster, 'I@linux:system', 'saltutil.refresh_pillar', [], null, true) | 
|  | 128 | salt.runSaltProcessStep(saltMaster, 'I@linux:system', 'saltutil.sync_all', [], null, true) | 
| Tomáš Kukrál | cbdb1d0 | 2017-03-02 16:08:51 +0100 | [diff] [blame] | 129 | salt.enforceState(saltMaster, 'I@linux:system', ['linux', 'openssh', 'salt.minion', 'ntp'], true) | 
| Tomáš Kukrál | c265e35 | 2017-03-02 11:45:11 +0100 | [diff] [blame] | 130 |  | 
| Tomáš Kukrál | c265e35 | 2017-03-02 11:45:11 +0100 | [diff] [blame] | 131 |  | 
| Tomáš Kukrál | a18de11 | 2017-03-02 13:57:47 +0100 | [diff] [blame] | 132 | if (INSTALL.toLowerCase().contains('kvm')) { | 
|  | 133 | //orchestrate.installInfraKvm(saltMaster) | 
| Tomáš Kukrál | 01f284a | 2017-03-02 23:14:20 +0100 | [diff] [blame] | 134 | salt.runSaltProcessStep(saltMaster, 'I@linux:system', 'saltutil.refresh_pillar', [], null, true) | 
|  | 135 | salt.runSaltProcessStep(saltMaster, 'I@linux:system', 'saltutil.sync_all', [], null, true) | 
| Tomáš Kukrál | c265e35 | 2017-03-02 11:45:11 +0100 | [diff] [blame] | 136 |  | 
| Tomáš Kukrál | cbdb1d0 | 2017-03-02 16:08:51 +0100 | [diff] [blame] | 137 | salt.enforceState(saltMaster, 'I@salt:control', ['salt.minion', 'linux.system', 'linux.network', 'ntp'], true) | 
| Tomáš Kukrál | a18de11 | 2017-03-02 13:57:47 +0100 | [diff] [blame] | 138 | salt.enforceState(saltMaster, 'I@salt:control', 'libvirt', true) | 
|  | 139 | salt.enforceState(saltMaster, 'I@salt:control', 'salt.control', true) | 
| Tomáš Kukrál | c265e35 | 2017-03-02 11:45:11 +0100 | [diff] [blame] | 140 |  | 
| Tomáš Kukrál | a18de11 | 2017-03-02 13:57:47 +0100 | [diff] [blame] | 141 | sleep(300) | 
|  | 142 |  | 
| Tomáš Kukrál | 01f284a | 2017-03-02 23:14:20 +0100 | [diff] [blame] | 143 | salt.runSaltProcessStep(saltMaster, '* and not kvm*', 'saltutil.refresh_pillar', [], null, true) | 
|  | 144 | salt.runSaltProcessStep(saltMaster, '* and not kvm*', 'saltutil.sync_all', [], null, true) | 
| Tomáš Kukrál | a18de11 | 2017-03-02 13:57:47 +0100 | [diff] [blame] | 145 |  | 
|  | 146 | // workaround - install apt-transport-https | 
| Tomáš Kukrál | 5c83788 | 2017-03-03 00:54:13 +0100 | [diff] [blame] | 147 | salt.runSaltProcessStep(saltMaster, '* and not kvm*', 'cmd.run', ['apt-get update -y && apt-get install -y apt-transport-https'], null, true) | 
| Tomáš Kukrál | 677b423 | 2017-03-02 23:31:12 +0100 | [diff] [blame] | 148 | salt.runSaltProcessStep(saltMaster, '* and not kvm*', 'pkg.install', ['apt-transport-https', 'refresh=True'], null, true) | 
| Tomáš Kukrál | cbdb1d0 | 2017-03-02 16:08:51 +0100 | [diff] [blame] | 149 | salt.enforceState(saltMaster, 'I@linux:system', ['linux', 'openssh', 'salt.minion', 'ntp'], true) | 
| Tomáš Kukrál | a18de11 | 2017-03-02 13:57:47 +0100 | [diff] [blame] | 150 | } | 
|  | 151 |  | 
|  | 152 | //orchestrate.validateFoundationInfra(saltMaster) | 
| Tomáš Kukrál | cbdb1d0 | 2017-03-02 16:08:51 +0100 | [diff] [blame] | 153 | salt.runSaltProcessStep(saltMaster, 'I@salt:master', 'cmd.run', ['salt-key'], null, true) | 
| Tomáš Kukrál | 01f284a | 2017-03-02 23:14:20 +0100 | [diff] [blame] | 154 | salt.runSaltProcessStep(saltMaster, 'I@salt:minion', 'test.version', [], null, true) | 
| Tomáš Kukrál | cbdb1d0 | 2017-03-02 16:08:51 +0100 | [diff] [blame] | 155 | salt.runSaltProcessStep(saltMaster, 'I@salt:master', 'cmd.run', ['reclass-salt --top'], null, true) | 
| Tomáš Kukrál | 01f284a | 2017-03-02 23:14:20 +0100 | [diff] [blame] | 156 | salt.runSaltProcessStep(saltMaster, 'I@reclass:storage', 'reclass.inventory', [], null, true) | 
|  | 157 | salt.runSaltProcessStep(saltMaster, 'I@salt:minion', 'state.show_top', [], null, true) | 
| Tomáš Kukrál | a18de11 | 2017-03-02 13:57:47 +0100 | [diff] [blame] | 158 | } | 
|  | 159 | } | 
|  | 160 |  | 
|  | 161 | // install k8s | 
|  | 162 | if (INSTALL.toLowerCase().contains('k8s')) { | 
|  | 163 | stage('Install Kubernetes infra') { | 
|  | 164 | //orchestrate.installOpenstackMcpInfra(saltMaster) | 
|  | 165 |  | 
|  | 166 | // Comment nameserver | 
|  | 167 | salt.runSaltProcessStep(saltMaster, 'I@kubernetes:master', 'cmd.run', ["sed -i 's/nameserver 10.254.0.10/#nameserver 10.254.0.10/g' /etc/resolv.conf"]) | 
|  | 168 |  | 
|  | 169 | // Install glusterfs | 
|  | 170 | salt.runSaltProcessStep(saltMaster, 'I@glusterfs:server', 'state.sls', ['glusterfs.server.service']) | 
|  | 171 |  | 
|  | 172 | // Install keepalived | 
|  | 173 | salt.runSaltProcessStep(saltMaster, 'ctl01*', 'state.sls', ['keepalived']) | 
|  | 174 | salt.runSaltProcessStep(saltMaster, 'I@keepalived:cluster', 'state.sls', ['keepalived']) | 
|  | 175 |  | 
|  | 176 | // Check the keepalived VIPs | 
|  | 177 | salt.runSaltProcessStep(saltMaster, 'I@keepalived:cluster', 'cmd.run', ['ip a | grep 172.16.10.2']) | 
|  | 178 |  | 
|  | 179 | // Setup glusterfs | 
|  | 180 | salt.runSaltProcessStep(saltMaster, 'ctl01*', 'state.sls', ['glusterfs.server.setup']) | 
|  | 181 | salt.runSaltProcessStep(saltMaster, 'ctl02*', 'state.sls', ['glusterfs.server.setup']) | 
|  | 182 | salt.runSaltProcessStep(saltMaster, 'ctl03*', 'state.sls', ['glusterfs.server.setup']) | 
|  | 183 | salt.runSaltProcessStep(saltMaster, 'I@glusterfs:server', 'cmd.run', ['gluster peer status']) | 
|  | 184 | salt.runSaltProcessStep(saltMaster, 'I@glusterfs:server', 'cmd.run', ['gluster volume status']) | 
|  | 185 |  | 
|  | 186 | // Install haproxy | 
|  | 187 | salt.runSaltProcessStep(saltMaster, 'I@haproxy:proxy', 'state.sls', ['haproxy']) | 
|  | 188 | salt.runSaltProcessStep(saltMaster, 'I@haproxy:proxy', 'service.status', ['haproxy']) | 
|  | 189 |  | 
|  | 190 | // Install docker | 
|  | 191 | salt.runSaltProcessStep(saltMaster, 'I@docker:host', 'state.sls', ['docker.host']) | 
|  | 192 | salt.runSaltProcessStep(saltMaster, 'I@docker:host', 'cmd.run', ['docker ps']) | 
|  | 193 |  | 
|  | 194 | // Install bird | 
|  | 195 | salt.runSaltProcessStep(saltMaster, 'I@bird:server', 'state.sls', ['bird']) | 
|  | 196 |  | 
|  | 197 | // Install etcd | 
|  | 198 | salt.runSaltProcessStep(saltMaster, 'I@etcd:server', 'state.sls', ['etcd.server.service']) | 
|  | 199 | salt.runSaltProcessStep(saltMaster, 'I@etcd:server', 'cmd.run', ['etcdctl cluster-health']) | 
|  | 200 |  | 
| Tomáš Kukrál | c265e35 | 2017-03-02 11:45:11 +0100 | [diff] [blame] | 201 | } | 
|  | 202 |  | 
| Tomáš Kukrál | a18de11 | 2017-03-02 13:57:47 +0100 | [diff] [blame] | 203 | stage('Install Kubernetes control') { | 
|  | 204 | //orchestrate.installOpenstackMcpControl(saltMaster) | 
| Tomáš Kukrál | 06c27a9 | 2017-03-01 16:21:46 +0100 | [diff] [blame] | 205 |  | 
| Tomáš Kukrál | a18de11 | 2017-03-02 13:57:47 +0100 | [diff] [blame] | 206 | // Install Kubernetes pool and Calico | 
|  | 207 | salt.runSaltProcessStep(saltMaster, 'I@kubernetes:pool', 'state.sls', ['kubernetes.pool']) | 
|  | 208 | salt.runSaltProcessStep(saltMaster, 'I@kubernetes:pool', 'cmd.run', ['calicoctl node status']) | 
| Tomáš Kukrál | c265e35 | 2017-03-02 11:45:11 +0100 | [diff] [blame] | 209 |  | 
| Tomáš Kukrál | a18de11 | 2017-03-02 13:57:47 +0100 | [diff] [blame] | 210 | // Setup etcd server | 
|  | 211 | salt.runSaltProcessStep(saltMaster, 'I@kubernetes:master', 'state.sls', ['etcd.server.setup']) | 
| Tomáš Kukrál | c265e35 | 2017-03-02 11:45:11 +0100 | [diff] [blame] | 212 |  | 
| Tomáš Kukrál | a18de11 | 2017-03-02 13:57:47 +0100 | [diff] [blame] | 213 | // Run k8s without master.setup | 
|  | 214 | salt.runSaltProcessStep(saltMaster, 'I@kubernetes:master', 'state.sls', ['kubernetes', 'exclude=kubernetes.master.setup']) | 
| Tomáš Kukrál | c265e35 | 2017-03-02 11:45:11 +0100 | [diff] [blame] | 215 |  | 
| Tomáš Kukrál | a18de11 | 2017-03-02 13:57:47 +0100 | [diff] [blame] | 216 | // Run k8s master setup | 
|  | 217 | salt.runSaltProcessStep(saltMaster, 'ctl01*', 'state.sls', ['kubernetes.master.setup']) | 
| Tomáš Kukrál | c265e35 | 2017-03-02 11:45:11 +0100 | [diff] [blame] | 218 |  | 
| Tomáš Kukrál | a18de11 | 2017-03-02 13:57:47 +0100 | [diff] [blame] | 219 | // Revert comment nameserver | 
|  | 220 | salt.runSaltProcessStep(saltMaster, 'I@kubernetes:master', 'cmd.run', ["sed -i 's/nameserver 10.254.0.10/#nameserver 10.254.0.10/g' /etc/resolv.conf"]) | 
| Tomáš Kukrál | c265e35 | 2017-03-02 11:45:11 +0100 | [diff] [blame] | 221 |  | 
| Tomáš Kukrál | a18de11 | 2017-03-02 13:57:47 +0100 | [diff] [blame] | 222 | // Set route | 
|  | 223 | salt.runSaltProcessStep(saltMaster, 'I@kubernetes:pool', 'cmd.run', ['ip r a 10.254.0.0/16 dev ens4']) | 
| Tomáš Kukrál | c265e35 | 2017-03-02 11:45:11 +0100 | [diff] [blame] | 224 |  | 
| Tomáš Kukrál | a18de11 | 2017-03-02 13:57:47 +0100 | [diff] [blame] | 225 | // Restart kubelet | 
|  | 226 | salt.runSaltProcessStep(saltMaster, 'I@kubernetes:pool', 'service.restart', ['kubelet']) | 
| Tomáš Kukrál | c265e35 | 2017-03-02 11:45:11 +0100 | [diff] [blame] | 227 | } | 
|  | 228 |  | 
| Tomáš Kukrál | 9e0fb73 | 2017-03-02 10:12:05 +0100 | [diff] [blame] | 229 | } | 
|  | 230 |  | 
| Tomáš Kukrál | a18de11 | 2017-03-02 13:57:47 +0100 | [diff] [blame] | 231 | // install openstack | 
|  | 232 | if (INSTALL.toLowerCase().contains('openstack')) { | 
|  | 233 | // install Infra and control, tests, ... | 
| Tomáš Kukrál | 9e0fb73 | 2017-03-02 10:12:05 +0100 | [diff] [blame] | 234 |  | 
| Tomáš Kukrál | a18de11 | 2017-03-02 13:57:47 +0100 | [diff] [blame] | 235 | stage('Install OpenStack infra') { | 
|  | 236 | //orchestrate.installOpenstackMkInfra(saltMaster, physical) | 
|  | 237 |  | 
|  | 238 | // Install keepaliveds | 
|  | 239 | //runSaltProcessStep(master, 'I@keepalived:cluster', 'state.sls', ['keepalived'], 1) | 
|  | 240 | salt.enforceState(saltMaster, 'ctl01*', 'keepalived', true) | 
|  | 241 | salt.enforceState(saltMaster, 'I@keepalived:cluster', 'keepalived', true) | 
|  | 242 |  | 
|  | 243 | // Check the keepalived VIPs | 
|  | 244 | salt.runSaltProcessStep(saltMaster, 'I@keepalived:cluster', 'cmd.run', ['ip a | grep 172.16.10.2']) | 
|  | 245 |  | 
|  | 246 | // Install glusterfs | 
|  | 247 | salt.enforceState(saltMaster, 'I@glusterfs:server', 'glusterfs.server.service', true) | 
|  | 248 |  | 
|  | 249 | //runSaltProcessStep(saltMaster, 'I@glusterfs:server', 'state.sls', ['glusterfs.server.setup'], 1) | 
|  | 250 | if (INSTALL.toLowerCase().contains('kvm')) { | 
| Tomáš Kukrál | a18de11 | 2017-03-02 13:57:47 +0100 | [diff] [blame] | 251 | salt.enforceState(saltMaster, 'kvm01*', 'glusterfs.server.setup', true) | 
|  | 252 | salt.enforceState(saltMaster, 'kvm02*', 'glusterfs.server.setup', true) | 
|  | 253 | salt.enforceState(saltMaster, 'kvm03*', 'glusterfs.server.setup', true) | 
| Tomáš Kukrál | bad54bb | 2017-03-02 15:46:20 +0100 | [diff] [blame] | 254 | } else { | 
|  | 255 | salt.enforceState(saltMaster, 'ctl01*', 'glusterfs.server.setup', true) | 
|  | 256 | salt.enforceState(saltMaster, 'ctl02*', 'glusterfs.server.setup', true) | 
|  | 257 | salt.enforceState(saltMaster, 'ctl03*', 'glusterfs.server.setup', true) | 
| Tomáš Kukrál | a18de11 | 2017-03-02 13:57:47 +0100 | [diff] [blame] | 258 | } | 
|  | 259 |  | 
| Tomáš Kukrál | cbdb1d0 | 2017-03-02 16:08:51 +0100 | [diff] [blame] | 260 | salt.runSaltProcessStep(saltMaster, 'I@glusterfs:server', 'cmd.run', ['gluster peer status'], null, true) | 
|  | 261 | salt.runSaltProcessStep(saltMaster, 'I@glusterfs:server', 'cmd.run', ['gluster volume status'], null, true) | 
| Tomáš Kukrál | a18de11 | 2017-03-02 13:57:47 +0100 | [diff] [blame] | 262 |  | 
|  | 263 | // Install rabbitmq | 
|  | 264 | salt.enforceState(saltMaster, 'I@rabbitmq:server', 'rabbitmq', true) | 
|  | 265 |  | 
|  | 266 | // Check the rabbitmq status | 
| Ales Komarek | 96ff9ed | 2017-03-02 18:37:51 +0100 | [diff] [blame] | 267 | salt.runSaltProcessStep(saltMaster, 'I@rabbitmq:server', 'cmd.run', ['rabbitmqctl cluster_status']) | 
| Tomáš Kukrál | a18de11 | 2017-03-02 13:57:47 +0100 | [diff] [blame] | 268 |  | 
|  | 269 | // Install galera | 
|  | 270 | salt.enforceState(saltMaster, 'I@galera:master', 'galera', true) | 
|  | 271 | salt.enforceState(saltMaster, 'I@galera:slave', 'galera', true) | 
|  | 272 |  | 
|  | 273 | // Check galera status | 
| Ales Komarek | 96ff9ed | 2017-03-02 18:37:51 +0100 | [diff] [blame] | 274 | salt.runSaltProcessStep(saltMaster, 'I@galera:master', 'mysql.status') | 
|  | 275 | salt.runSaltProcessStep(saltMaster, 'I@galera:slave', 'mysql.status') | 
| Tomáš Kukrál | a18de11 | 2017-03-02 13:57:47 +0100 | [diff] [blame] | 276 |  | 
|  | 277 | // Install haproxy | 
|  | 278 | salt.enforceState(saltMaster, 'I@haproxy:proxy', 'haproxy', true) | 
| Ales Komarek | 96ff9ed | 2017-03-02 18:37:51 +0100 | [diff] [blame] | 279 | salt.runSaltProcessStep(saltMaster, 'I@haproxy:proxy', 'service.status', ['haproxy']) | 
|  | 280 | salt.runSaltProcessStep(saltMaster, 'I@haproxy:proxy', 'service.restart', ['rsyslog']) | 
| Tomáš Kukrál | a18de11 | 2017-03-02 13:57:47 +0100 | [diff] [blame] | 281 |  | 
|  | 282 | // Install memcached | 
|  | 283 | salt.enforceState(saltMaster, 'I@memcached:server', 'memcached', true) | 
|  | 284 |  | 
| Tomáš Kukrál | c265e35 | 2017-03-02 11:45:11 +0100 | [diff] [blame] | 285 | } | 
|  | 286 |  | 
| Tomáš Kukrál | a18de11 | 2017-03-02 13:57:47 +0100 | [diff] [blame] | 287 | stage('Install OpenStack control') { | 
|  | 288 | //orchestrate.installOpenstackMkControl(saltMaster) | 
| Tomáš Kukrál | b9957b3 | 2017-02-28 14:49:00 +0100 | [diff] [blame] | 289 |  | 
| Tomáš Kukrál | a18de11 | 2017-03-02 13:57:47 +0100 | [diff] [blame] | 290 | // setup keystone service | 
|  | 291 | //runSaltProcessStep(saltMaster, 'I@keystone:server', 'state.sls', ['keystone.server'], 1) | 
|  | 292 | salt.enforceState(saltMaster, 'ctl01*', 'keystone.server', true) | 
|  | 293 | salt.enforceState(saltMaster, 'I@keystone:server', 'keystone.server', true) | 
|  | 294 | // populate keystone services/tenants/roles/users | 
| Tomáš Kukrál | 9e0fb73 | 2017-03-02 10:12:05 +0100 | [diff] [blame] | 295 |  | 
| Tomáš Kukrál | a18de11 | 2017-03-02 13:57:47 +0100 | [diff] [blame] | 296 | // keystone:client must be called locally | 
| Tomáš Kukrál | cbdb1d0 | 2017-03-02 16:08:51 +0100 | [diff] [blame] | 297 | salt.runSaltProcessStep(saltMaster, 'I@keystone:client', 'cmd.run', ['salt-call state.sls keystone.client'], null, true) | 
|  | 298 | salt.runSaltProcessStep(saltMaster, 'I@keystone:server', 'cmd.run', ['. /root/keystonerc; keystone service-list'], null, true) | 
| Tomáš Kukrál | a18de11 | 2017-03-02 13:57:47 +0100 | [diff] [blame] | 299 |  | 
|  | 300 | // Install glance and ensure glusterfs clusters | 
|  | 301 | //runSaltProcessStep(saltMaster, 'I@glance:server', 'state.sls', ['glance.server'], 1) | 
|  | 302 | salt.enforceState(saltMaster, 'ctl01*', 'glance.server', true) | 
|  | 303 | salt.enforceState(saltMaster, 'I@glance:server', 'glance.server', true) | 
|  | 304 | salt.enforceState(saltMaster, 'I@glance:server', 'glusterfs.client', true) | 
|  | 305 |  | 
|  | 306 | // Update fernet tokens before doing request on keystone server | 
|  | 307 | salt.enforceState(saltMaster, 'I@keystone:server', 'keystone.server', true) | 
|  | 308 |  | 
|  | 309 | // Check glance service | 
| Tomáš Kukrál | cbdb1d0 | 2017-03-02 16:08:51 +0100 | [diff] [blame] | 310 | salt.runSaltProcessStep(saltMaster, 'I@keystone:server', 'cmd.run', ['. /root/keystonerc; glance image-list'], null, true) | 
| Tomáš Kukrál | a18de11 | 2017-03-02 13:57:47 +0100 | [diff] [blame] | 311 |  | 
|  | 312 | // Install and check nova service | 
|  | 313 | //runSaltProcessStep(saltMaster, 'I@nova:controller', 'state.sls', ['nova'], 1) | 
|  | 314 | salt.enforceState(saltMaster, 'ctl01*', 'nova', true) | 
|  | 315 | salt.enforceState(saltMaster, 'I@nova:controller', 'nova', true) | 
| Tomáš Kukrál | cbdb1d0 | 2017-03-02 16:08:51 +0100 | [diff] [blame] | 316 | salt.runSaltProcessStep(saltMaster, 'I@keystone:server', 'cmd.run', ['. /root/keystonerc; nova service-list'], null, true) | 
| Tomáš Kukrál | a18de11 | 2017-03-02 13:57:47 +0100 | [diff] [blame] | 317 |  | 
|  | 318 | // Install and check cinder service | 
|  | 319 | //runSaltProcessStep(saltMaster, 'I@cinder:controller', 'state.sls', ['cinder'], 1) | 
|  | 320 | salt.enforceState(saltMaster, 'ctl01*', 'cinder', true) | 
|  | 321 | salt.enforceState(saltMaster, 'I@cinder:controller', 'cinder', true) | 
| Tomáš Kukrál | cbdb1d0 | 2017-03-02 16:08:51 +0100 | [diff] [blame] | 322 | salt.runSaltProcessStep(saltMaster, 'I@keystone:server', 'cmd.run', ['. /root/keystonerc; cinder list'], null, true) | 
| Tomáš Kukrál | a18de11 | 2017-03-02 13:57:47 +0100 | [diff] [blame] | 323 |  | 
|  | 324 | // Install neutron service | 
|  | 325 | //runSaltProcessStep(saltMaster, 'I@neutron:server', 'state.sls', ['neutron'], 1) | 
| Tomáš Kukrál | 575e38a | 2017-03-02 17:12:45 +0100 | [diff] [blame] | 326 | if (INSTALL.toLowerCase().contains('kvm')) { | 
|  | 327 | salt.enforceState(saltMaster, 'ntw01*', 'neutron', true) | 
|  | 328 | } else { | 
|  | 329 | salt.enforceState(saltMaster, 'ctl01*', 'neutron', true) | 
|  | 330 | } | 
|  | 331 |  | 
| Tomáš Kukrál | a18de11 | 2017-03-02 13:57:47 +0100 | [diff] [blame] | 332 | salt.enforceState(saltMaster, 'I@neutron:server', 'neutron', true) | 
| Tomáš Kukrál | cbdb1d0 | 2017-03-02 16:08:51 +0100 | [diff] [blame] | 333 | salt.runSaltProcessStep(saltMaster, 'I@keystone:server', 'cmd.run', ['. /root/keystonerc; neutron agent-list'], null, true) | 
| Tomáš Kukrál | a18de11 | 2017-03-02 13:57:47 +0100 | [diff] [blame] | 334 |  | 
|  | 335 | // Install heat service | 
|  | 336 | //runSaltProcessStep(saltMaster, 'I@heat:server', 'state.sls', ['heat'], 1) | 
|  | 337 | salt.enforceState(saltMaster, 'ctl01*', 'heat', true) | 
|  | 338 | salt.enforceState(saltMaster, 'I@heat:server', 'heat', true) | 
| Tomáš Kukrál | cbdb1d0 | 2017-03-02 16:08:51 +0100 | [diff] [blame] | 339 | salt.runSaltProcessStep(saltMaster, 'I@keystone:server', 'cmd.run', ['. /root/keystonerc; heat resource-type-list'], null, true) | 
| Tomáš Kukrál | a18de11 | 2017-03-02 13:57:47 +0100 | [diff] [blame] | 340 |  | 
|  | 341 | // Install horizon dashboard | 
|  | 342 | salt.enforceState(saltMaster, 'I@horizon:server', 'horizon', true) | 
|  | 343 | salt.enforceState(saltMaster, 'I@nginx:server', 'nginx', true) | 
|  | 344 |  | 
|  | 345 | } | 
|  | 346 |  | 
|  | 347 | stage('Install OpenStack network') { | 
|  | 348 | //orchestrate.installOpenstackMkNetwork(saltMaster, physical) | 
|  | 349 |  | 
|  | 350 | // Install opencontrail database services | 
|  | 351 | //runSaltProcessStep(saltMaster, 'I@opencontrail:database', 'state.sls', ['opencontrail.database'], 1) | 
|  | 352 | salt.enforceState(saltMaster, 'ntw01*', 'opencontrail.database', true) | 
|  | 353 | salt.enforceState(saltMaster, 'I@opencontrail:database', 'opencontrail.database', true) | 
|  | 354 |  | 
|  | 355 | // Install opencontrail control services | 
|  | 356 | //runSaltProcessStep(saltMaster, 'I@opencontrail:control', 'state.sls', ['opencontrail'], 1) | 
|  | 357 | salt.enforceState(saltMaster, 'ntw01*', 'opencontrail', true) | 
|  | 358 | salt.enforceState(saltMaster, 'I@opencontrail:control', 'opencontrail', true) | 
| Tomáš Kukrál | 3b8ad5e | 2017-03-02 23:03:27 +0100 | [diff] [blame] | 359 | salt.enforceState(saltMaster, 'I@opencontrail:collector', 'opencontrail', true) | 
| Tomáš Kukrál | a18de11 | 2017-03-02 13:57:47 +0100 | [diff] [blame] | 360 |  | 
|  | 361 | // Provision opencontrail control services | 
|  | 362 | if (INSTALL.toLowerCase().contains('kvm')) { | 
| Tomáš Kukrál | 575e38a | 2017-03-02 17:12:45 +0100 | [diff] [blame] | 363 | salt.runSaltProcessStep(saltMaster, 'I@opencontrail:control:id:1', 'cmd.run', ['/usr/share/contrail-utils/provision_control.py --api_server_ip 10.167.4.20 --api_server_port 8082 --host_name ntw01 --host_ip 10.167.4.21 --router_asn 64512 --admin_password password --admin_user admin --admin_tenant_name admin --oper add'], null, true) | 
|  | 364 | salt.runSaltProcessStep(saltMaster, 'I@opencontrail:control:id:1', 'cmd.run', ['/usr/share/contrail-utils/provision_control.py --api_server_ip 10.167.4.20 --api_server_port 8082 --host_name ntw02 --host_ip 10.167.4.22 --router_asn 64512 --admin_password password --admin_user admin --admin_tenant_name admin --oper add'], null, true) | 
|  | 365 | salt.runSaltProcessStep(saltMaster, 'I@opencontrail:control:id:1', 'cmd.run', ['/usr/share/contrail-utils/provision_control.py --api_server_ip 10.167.4.20 --api_server_port 8082 --host_name ntw03 --host_ip 10.167.4.23 --router_asn 64512 --admin_password password --admin_user admin --admin_tenant_name admin --oper add'], null, true) | 
|  | 366 | } else { | 
| Tomáš Kukrál | cbdb1d0 | 2017-03-02 16:08:51 +0100 | [diff] [blame] | 367 | salt.runSaltProcessStep(saltMaster, 'I@opencontrail:control:id:1', 'cmd.run', ['/usr/share/contrail-utils/provision_control.py --api_server_ip 172.16.10.254 --api_server_port 8082 --host_name ctl01 --host_ip 172.16.10.101 --router_asn 64512 --admin_password workshop --admin_user admin --admin_tenant_name admin --oper add'], null, true) | 
|  | 368 | salt.runSaltProcessStep(saltMaster, 'I@opencontrail:control:id:1', 'cmd.run', ['/usr/share/contrail-utils/provision_control.py --api_server_ip 172.16.10.254 --api_server_port 8082 --host_name ctl02 --host_ip 172.16.10.102 --router_asn 64512 --admin_password workshop --admin_user admin --admin_tenant_name admin --oper add'], null, true) | 
|  | 369 | salt.runSaltProcessStep(saltMaster, 'I@opencontrail:control:id:1', 'cmd.run', ['/usr/share/contrail-utils/provision_control.py --api_server_ip 172.16.10.254 --api_server_port 8082 --host_name ctl03 --host_ip 172.16.10.103 --router_asn 64512 --admin_password workshop --admin_user admin --admin_tenant_name admin --oper add'], null, true) | 
| Tomáš Kukrál | a18de11 | 2017-03-02 13:57:47 +0100 | [diff] [blame] | 370 | } | 
|  | 371 |  | 
|  | 372 | // Test opencontrail | 
| Tomáš Kukrál | cbdb1d0 | 2017-03-02 16:08:51 +0100 | [diff] [blame] | 373 | salt.runSaltProcessStep(saltMaster, 'I@opencontrail:control', 'cmd.run', ['contrail-status'], null, true) | 
|  | 374 | salt.runSaltProcessStep(saltMaster, 'I@keystone:server', 'cmd.run', ['. /root/keystonerc; neutron net-list'], null, true) | 
|  | 375 | salt.runSaltProcessStep(saltMaster, 'I@keystone:server', 'cmd.run', ['. /root/keystonerc; nova net-list'], null, true) | 
| Tomáš Kukrál | a18de11 | 2017-03-02 13:57:47 +0100 | [diff] [blame] | 376 | } | 
|  | 377 |  | 
|  | 378 | stage('Install OpenStack compute') { | 
|  | 379 | //orchestrate.installOpenstackMkCompute(saltMaster, physical) | 
|  | 380 | // Configure compute nodes | 
| Tomáš Kukrál | da26d90 | 2017-03-02 22:19:00 +0100 | [diff] [blame] | 381 | retry(2) { | 
| Tomáš Kukrál | 02cda9f | 2017-03-02 22:32:57 +0100 | [diff] [blame] | 382 | salt.runSaltProcessStep(saltMaster, 'I@nova:compute', 'state.apply', [], null, true) | 
| Tomáš Kukrál | da26d90 | 2017-03-02 22:19:00 +0100 | [diff] [blame] | 383 | } | 
| Tomáš Kukrál | a18de11 | 2017-03-02 13:57:47 +0100 | [diff] [blame] | 384 |  | 
|  | 385 | // Provision opencontrail virtual routers | 
|  | 386 | if (INSTALL.toLowerCase().contains('kvm')) { | 
| Tomáš Kukrál | 834fe21 | 2017-03-02 22:50:49 +0100 | [diff] [blame] | 387 | salt.runSaltProcessStep(saltMaster, 'I@opencontrail:control:id:1', 'cmd.run', ['/usr/share/contrail-utils/provision_vrouter.py --host_name cmp001 --host_ip 10.167.4.101 --api_server_ip 10.167.4.20 --oper add --admin_user admin --admin_password password --admin_tenant_name admin'], null, true) | 
| Tomáš Kukrál | 575e38a | 2017-03-02 17:12:45 +0100 | [diff] [blame] | 388 | } else { | 
| Tomáš Kukrál | cbdb1d0 | 2017-03-02 16:08:51 +0100 | [diff] [blame] | 389 | salt.runSaltProcessStep(saltMaster, 'I@opencontrail:control:id:1', 'cmd.run', ['/usr/share/contrail-utils/provision_vrouter.py --host_name cmp01 --host_ip 172.16.10.105 --api_server_ip 172.16.10.254 --oper add --admin_user admin --admin_password workshop --admin_tenant_name admin'], null, true) | 
| Tomáš Kukrál | a18de11 | 2017-03-02 13:57:47 +0100 | [diff] [blame] | 390 | } | 
|  | 391 |  | 
| Tomáš Kukrál | c39610c | 2017-03-02 22:56:06 +0100 | [diff] [blame] | 392 | salt.runSaltProcessStep(saltMaster, 'I@nova:compute', 'system.reboot', [], null, true) | 
| Tomáš Kukrál | 3b8ad5e | 2017-03-02 23:03:27 +0100 | [diff] [blame] | 393 | sleep(10) | 
| Tomáš Kukrál | a18de11 | 2017-03-02 13:57:47 +0100 | [diff] [blame] | 394 | } | 
| Tomáš Kukrál | 2b4c128 | 2017-03-03 17:25:26 +0100 | [diff] [blame] | 395 |  | 
| Tomáš Kukrál | 00ed130 | 2017-03-03 17:38:40 +0100 | [diff] [blame] | 396 | } | 
| Tomáš Kukrál | 2b4c128 | 2017-03-03 17:25:26 +0100 | [diff] [blame] | 397 |  | 
| Tomáš Kukrál | 00ed130 | 2017-03-03 17:38:40 +0100 | [diff] [blame] | 398 |  | 
|  | 399 | if (INSTALL.toLowerCase().contains('stacklight')) { | 
| Tomáš Kukrál | 2b4c128 | 2017-03-03 17:25:26 +0100 | [diff] [blame] | 400 | stage('Install StackLight') { | 
|  | 401 | // infra install | 
|  | 402 | // Install the StackLight backends | 
|  | 403 | salt.enforceState(saltMaster, '*01* and  I@elasticsearch:server', 'elasticsearch.server', true) | 
|  | 404 | salt.enforceState(saltMaster, 'I@elasticsearch:server', 'elasticsearch.server', true) | 
|  | 405 |  | 
|  | 406 | salt.enforceState(saltMaster, '*01* and I@influxdb:server', 'influxdb', true) | 
|  | 407 | salt.enforceState(saltMaster, 'I@influxdb:server', 'influxdb', true) | 
|  | 408 |  | 
|  | 409 | salt.enforceState(saltMaster, '*01* and I@kibana:server', 'kibana.server', true) | 
|  | 410 | salt.enforceState(saltMaster, 'I@kibana:server', 'kibana.server', true) | 
|  | 411 |  | 
|  | 412 | salt.enforceState(saltMaster, '*01* and I@grafana:server','grafana.server', true) | 
|  | 413 | salt.enforceState(saltMaster, 'I@grafana:server','grafana.server', true) | 
|  | 414 |  | 
|  | 415 | salt.enforceState(saltMaster, 'I@nagios:server', 'nagios.server', true) | 
|  | 416 | salt.enforceState(saltMaster, 'I@elasticsearch:client', 'elasticsearch.client.service', true) | 
|  | 417 | salt.enforceState(saltMaster, 'I@kibana:client', 'kibana.client.service', true) | 
|  | 418 | // nw salt.enforceState('I@kibana:client or I@elasticsearch:client' --async service.restart salt-minion | 
|  | 419 |  | 
|  | 420 | sleep(10) | 
| Tomáš Kukrál | 2b4c128 | 2017-03-03 17:25:26 +0100 | [diff] [blame] | 421 |  | 
| Tomáš Kukrál | 2b4c128 | 2017-03-03 17:25:26 +0100 | [diff] [blame] | 422 | salt.enforceState(saltMaster, 'I@elasticsearch:client', 'elasticsearch.client', true) | 
|  | 423 | salt.enforceState(saltMaster, 'I@kibana:client', 'kibana.client', true) | 
|  | 424 |  | 
|  | 425 | // install monitor | 
|  | 426 | // Restart salt-minion to make sure that it uses the latest Jinja library | 
|  | 427 | // no way: salt '*' --async service.restart salt-minion; sleep 15 | 
|  | 428 |  | 
|  | 429 | // Start by flusing Salt Mine to make sure it is clean | 
|  | 430 | // Also clean-up the grains files to make sure that we start from a clean state | 
|  | 431 | // nw salt "*" mine.flush | 
|  | 432 | // nw salt "*" file.remove /etc/salt/grains.d/collectd | 
|  | 433 | // nw salt "*" file.remove /etc/salt/grains.d/grafana | 
|  | 434 | // nw salt "*" file.remove /etc/salt/grains.d/heka | 
|  | 435 | // nw salt "*" file.remove /etc/salt/grains.d/sensu | 
|  | 436 | // nw salt "*" file.remove /etc/salt/grains | 
|  | 437 |  | 
|  | 438 | // Install collectd, heka and sensu services on the nodes, this will also | 
|  | 439 | // generate the metadata that goes into the grains and eventually into Salt Mine | 
| Tomáš Kukrál | 2aa3c47 | 2017-03-03 17:47:08 +0100 | [diff] [blame] | 440 | salt.enforceState(saltMaster, '*', 'collectd', true) | 
| Tomáš Kukrál | 2b4c128 | 2017-03-03 17:25:26 +0100 | [diff] [blame] | 441 | salt.enforceState(saltMaster, '*', 'heka', true) | 
| Tomáš Kukrál | 2b4c128 | 2017-03-03 17:25:26 +0100 | [diff] [blame] | 442 |  | 
|  | 443 | // Gather the Grafana metadata as grains | 
|  | 444 | salt.enforceState(saltMaster, 'I@grafana:collector', 'grafana.collector', true) | 
|  | 445 |  | 
|  | 446 | // Update Salt Mine | 
|  | 447 | salt.enforceState(saltMaster, '*', 'salt.minion.grains', true) | 
|  | 448 | salt.runSaltProcessStep(saltMaster, '*', 'saltutil.refresh_modules', [], null, true) | 
|  | 449 | salt.runSaltProcessStep(saltMaster, '*', 'mine.update', [], null, true) | 
|  | 450 |  | 
|  | 451 | sleep(5) | 
|  | 452 |  | 
|  | 453 | // Update Heka | 
|  | 454 | salt.enforceState(saltMaster, 'I@heka:aggregator:enabled:True or I@heka:remote_collector:enabled:True', 'heka', true) | 
|  | 455 |  | 
|  | 456 | // Update collectd | 
|  | 457 | salt.enforceState(saltMaster, 'I@collectd:remote_client:enabled:True', 'collectd', true) | 
|  | 458 |  | 
|  | 459 | // Update Nagios | 
|  | 460 | salt.enforceState(saltMaster, 'I@nagios:server', 'nagios', true) | 
|  | 461 | // Stop the Nagios service because the package starts it by default and it will | 
|  | 462 | // started later only on the node holding the VIP address | 
|  | 463 | salt.runSaltProcessStep(saltMaster, 'I@nagios:server', 'service.stop', ['nagios3'], null, true) | 
|  | 464 |  | 
|  | 465 | // Update Sensu | 
|  | 466 | salt.enforceState(saltMaster, 'I@sensu:server', 'sensu', true) | 
|  | 467 |  | 
|  | 468 | // Finalize the configuration of Grafana (add the dashboards...) | 
|  | 469 | salt.enforceState(saltMaster, 'I@grafana:client', 'grafana.client.service', true) | 
|  | 470 | // nw salt -C 'I@grafana:client' --async service.restart salt-minion; sleep 10 | 
|  | 471 | salt.enforceState(saltMaster, 'I@grafana:client', 'grafana.client', true) | 
|  | 472 |  | 
|  | 473 | // Get the StackLight monitoring VIP addres | 
|  | 474 | // TODO | 
|  | 475 | //vip=$(salt-call pillar.data _param:stacklight_monitor_address --out key|grep _param: |awk '{print $2}') | 
|  | 476 | //vip=${vip:=172.16.10.253} | 
| Tomáš Kukrál | 2b4c128 | 2017-03-03 17:25:26 +0100 | [diff] [blame] | 477 | def tmp = salt.pillarGet(saltMaster, 'ctl01*', '_param:stacklight_monitor_address') | 
|  | 478 | print(tmp) | 
|  | 479 |  | 
|  | 480 | // (re)Start manually the services that are bound to the monitoring VIP | 
|  | 481 | //salt.runSaltProcessStep(saltMaster, "ipv4:${stacklight_vip}", 'service.restart', ['remote_collectd'], true) | 
|  | 482 | //salt.runSaltProcessStep(saltMaster, "ipv4:${stacklight_vip}", 'service.restart', ['remote_collector'], true) | 
|  | 483 | //salt.runSaltProcessStep(saltMaster, "ipv4:${stacklight_vip}", 'service.restart', ['aggregator'], true) | 
|  | 484 | //salt.runSaltProcessStep(saltMaster, "ipv4:${stacklight_vip}", 'service.restart', ['nagios3'], true), true) | 
|  | 485 | } | 
| Tomáš Kukrál | 9e0fb73 | 2017-03-02 10:12:05 +0100 | [diff] [blame] | 486 | } | 
|  | 487 |  | 
| Tomáš Kukrál | a18de11 | 2017-03-02 13:57:47 +0100 | [diff] [blame] | 488 | // | 
|  | 489 | // Test | 
|  | 490 | // | 
|  | 491 |  | 
|  | 492 | if (TEST.toLowerCase().contains('k8s')) { | 
|  | 493 | stage('Run k8s bootstrap tests') { | 
|  | 494 | orchestrate.runConformanceTests(saltMaster, K8S_API_SERVER, 'tomkukral/k8s-scripts') | 
|  | 495 | } | 
|  | 496 |  | 
|  | 497 | stage('Run k8s conformance e2e tests') { | 
|  | 498 | orchestrate.runConformanceTests(saltMaster, K8S_API_SERVER, K8S_CONFORMANCE_IMAGE) | 
|  | 499 | } | 
| Tomáš Kukrál | 9e0fb73 | 2017-03-02 10:12:05 +0100 | [diff] [blame] | 500 | } | 
| Tomáš Kukrál | b9957b3 | 2017-02-28 14:49:00 +0100 | [diff] [blame] | 501 |  | 
| Tomáš Kukrál | b9957b3 | 2017-02-28 14:49:00 +0100 | [diff] [blame] | 502 |  | 
| Tomáš Kukrál | a18de11 | 2017-03-02 13:57:47 +0100 | [diff] [blame] | 503 | } catch (Throwable e) { | 
|  | 504 | currentBuild.result = 'FAILURE' | 
|  | 505 | throw e | 
| Tomáš Kukrál | 65fb5fd | 2017-03-02 14:56:49 +0100 | [diff] [blame] | 506 | } finally { | 
| Tomáš Kukrál | b9957b3 | 2017-02-28 14:49:00 +0100 | [diff] [blame] | 507 |  | 
| Tomáš Kukrál | a18de11 | 2017-03-02 13:57:47 +0100 | [diff] [blame] | 508 | // | 
|  | 509 | // Clean | 
|  | 510 | // | 
|  | 511 |  | 
| Filip Pytloun | 794ad95 | 2017-03-03 10:39:26 +0100 | [diff] [blame] | 512 | if (HEAT_STACK_DELETE.toBoolean() == true && STACK_TYPE == 'heat') { | 
| Tomáš Kukrál | a18de11 | 2017-03-02 13:57:47 +0100 | [diff] [blame] | 513 | stage('Trigger cleanup job') { | 
| Tomáš Kukrál | 3fee50a | 2017-03-03 00:46:30 +0100 | [diff] [blame] | 514 | build job: 'deploy-heat-cleanup', parameters: [[$class: 'StringParameterValue', name: 'HEAT_STACK_NAME', value: HEAT_STACK_NAME]] | 
| Tomáš Kukrál | a18de11 | 2017-03-02 13:57:47 +0100 | [diff] [blame] | 515 | } | 
| Tomáš Kukrál | 9e0fb73 | 2017-03-02 10:12:05 +0100 | [diff] [blame] | 516 | } | 
| Tomáš Kukrál | b9957b3 | 2017-02-28 14:49:00 +0100 | [diff] [blame] | 517 | } | 
|  | 518 | } | 
|  | 519 | } |