blob: f2af8947d8aa1b547a04d7d31128b9aed89d2cf8 [file] [log] [blame]
Jiri Broulik2c00f4c2017-10-26 13:23:11 +02001/**
2 *
3 * Add Ceph node to existing cluster
4 *
5 * Requred parameters:
6 * SALT_MASTER_URL URL of Salt master
7 * SALT_MASTER_CREDENTIALS Credentials to the Salt API
8 * HOST Host (minion id) to be added
9 * HOST_TYPE Type of Ceph node to be added. Valid values are mon/osd/rgw
10 *
11 */
12
13common = new com.mirantis.mk.Common()
14salt = new com.mirantis.mk.Salt()
15orchestrate = new com.mirantis.mk.Orchestrate()
16def python = new com.mirantis.mk.Python()
17
18def pepperEnv = "pepperEnv"
Jakub Josefa63f9862018-01-11 17:58:38 +010019timeout(time: 12, unit: 'HOURS') {
20 node("python") {
Jiri Broulik2c00f4c2017-10-26 13:23:11 +020021
Jakub Josefa63f9862018-01-11 17:58:38 +010022 // create connection to salt master
23 python.setupPepperVirtualenv(pepperEnv, SALT_MASTER_URL, SALT_MASTER_CREDENTIALS)
Jiri Broulik2c00f4c2017-10-26 13:23:11 +020024
Jakub Josefa63f9862018-01-11 17:58:38 +010025 matches = ["osd", "mon", "rgw"]
26 def found = false
27 for (s in matches) {
28 if (HOST_TYPE.toLowerCase() == s) {
29 found = true
Jiri Broulik2c00f4c2017-10-26 13:23:11 +020030 }
31 }
Jakub Josefa63f9862018-01-11 17:58:38 +010032
33 if (!found) {
34 common.errorMsg("No such HOST_TYPE was found. Please insert one of the following types: mon/osd/rgw")
35 throw new InterruptedException()
36 }
37
38 if (HOST_TYPE.toLowerCase() != 'osd') {
39
40 // launch VMs
41 stage('Launch VMs') {
42 salt.enforceState(pepperEnv, 'I@salt:control', 'salt.control', true)
43
44 // wait till the HOST appears in salt-key on salt-master
45 salt.minionPresent(pepperEnv, 'I@salt:master', HOST)
46 }
47 }
48
49 // run basic states
50 stage('Install infra') {
51 orchestrate.installFoundationInfraOnTarget(pepperEnv, HOST)
52 }
53
54 if (HOST_TYPE.toLowerCase() == 'osd') {
55
56 // Install Ceph osd
57 stage('Install Ceph OSD') {
58 orchestrate.installCephOsd(pepperEnv, HOST)
59 }
60 } else if (HOST_TYPE.toLowerCase() == 'mon') {
61 // Install Ceph mon
62 stage('Install Ceph MON') {
63 salt.enforceState(pepperEnv, 'I@ceph:common', 'ceph.common', true)
64 // install Ceph Mons
65 salt.enforceState(pepperEnv, 'I@ceph:mon', 'ceph.mon', true)
66 if (salt.testTarget(pepperEnv, 'I@ceph:mgr')) {
67 salt.enforceState(pepperEnv, 'I@ceph:mgr', 'ceph.mgr', true)
68 }
69 }
70 } else if (HOST_TYPE.toLowerCase() == 'rgw') {
71 // Install Ceph rgw
72 stage('Install Ceph RGW') {
73 salt.enforceState(pepperEnv, 'I@ceph:radosgw', ['keepalived', 'haproxy', 'ceph.radosgw'], true)
74 }
Jiri Broulik2c00f4c2017-10-26 13:23:11 +020075 }
76 }
77}