[CiCd2] Puppet-based cicd-environment

Change-Id: I6d477c44c8cb1727e2af249f3a1b4128f47c6912
This commit is contained in:
Alexey Khivin 2016-08-01 18:12:01 +03:00
parent 655f9d3ca4
commit 7ebfcacac7
13 changed files with 900 additions and 6 deletions

View File

@ -0,0 +1,181 @@
Namespaces:
=: org.openstack.ci_cd_pipeline_murano_app.v2
std: io.murano
res: io.murano.resources
sys: io.murano.system
cicd: org.openstack.ci_cd_pipeline_murano_app
puppet: org.openstack.ci_cd_pipeline_murano_app.puppet
net: org.openstack.ci_cd_pipeline_murano_app.utils.net
conf: io.murano.configuration
Name: CiCd2
Extends: std:Application
Properties:
nodes:
Default: ['review', 'jenkins', 'openldap']
Contract: [$.string().notNull()]
Usage: Const
server:
Contract: $.class(puppet:PuppetInstance)
Usage: InOut
clients:
Contract:
- $.class(puppet:PuppetClient)
Usage: InOut
name:
Contract: $.string().notNull()
Default: 'CiCd2'
puppetfileLink:
Contract: $.string().notNull()
Default: 'https://raw.githubusercontent.com/akhivin/cicd-dependencies/master/Puppetfile'
master:
Contract: $.class(puppet:PuppetServer)
Usage: InOut
clientsByName:
Contract: {}
Usage: InOut
mainManifestPath:
Default: '/etc/puppet/environments/production/manifests/site.pp'
Usage: Const
Contract: $.string().notNull()
flavor:
Contract: $.string().notNull()
osImage:
Contract: $.string().notNull()
keyPair:
Contract: $.string().notNull()
availabilityZone:
Contract: $.string().notNull()
Methods:
.init:
Body:
- $._environment: $.find(std:Environment).require()
deploy:
Body:
- $._environment.reporter.report($this,
'Using Puppetfile to install dependencies={0}'.format(
$this.puppetfileLink))
- $._environment.reporter.report($this, 'Nodes list={0}'.format($this.nodes))
- $rules:
- FromPort: 1
ToPort: 65535
IpProtocol: tcp
External: false
- FromPort: 1
ToPort: 65535
IpProtocol: tcp
External: true
- $this._environment.securityGroupManager.addGroupIngress(
rules => $rules)
# Deploy node for master and slave nodes in pararallel
- Parallel:
- If: $.server = null
Then:
- $this.server: new(puppet:PuppetInstance, $this._environment,
name => 'master',
flavor => $this.flavor,
image => $this.osImage,
keyname => $this.keyPair,
availabilityZone => $this.availabilityZone,
assignFloatingIp => true)
- $this.server.deploy()
- If: len($this.clients) = 0
Then:
- $this.clients: $this.nodes.select(
new(puppet:PuppetClient,
$this._environment,
instance => new(
puppet:PuppetInstance,
$this._environment,
name => concat('puppet_', $),
flavor => $this.flavor,
image => $this.osImage,
keyname => $this.keyPair,
availabilityZone => $this.availabilityZone,
assignFloatingIp => true),
role => $))
- $this.clients.pselect($.instance.deploy())
- $this.clientsByName: dict($this.clients.select([$.role, $]))
- $this.master: new(puppet:PuppetServer,
masterInstance => $this.server,
environment => $this._environment,
manifest => $this.mainManifestPath)
# add every node with the role assigned to it
- $this.clients.select(
$this.master.addClient($))
- $this.master.configure()
- $._environment.reporter.report($this, 'Preparing data for Gerrit')
- $gerritConfigurator: new(GerritConfigurator)
- $gerritConfigurator.configure($this.master.masterInstance)
- $._environment.reporter.report($this, 'Preparing data for Jenkins')
- $jenkinsConfigurator: new(JenkinsConfigurator)
- $jenkinsConfigurator.configure($this.master.masterInstance)
- $._environment.reporter.report($this, 'Preparing data for LDAP')
- $ldapConfigurator: new(LdapConfigurator)
- $ldapConfigurator.configure($this.master.masterInstance)
- $this._environment.reporter.report($this, 'Installing dependencies')
- $this.master.installDependencies(
environment => 'production',
puppetfileLink => $this.puppetfileLink)
- $resources: new(sys:Resources)
- $mainManifestContent: $resources.string('scripts/site.pp')
- new(conf:Linux).putFile(
$this.server.agent,
$mainManifestContent,
$this.mainManifestPath)
- $this._environment.reporter.report($this, 'Running manifests')
- $this.applyManifests()
applyManifests:
Usage: Action
Body:
- $this.master.runPuppetAgents()
- $this.printInfo()
printInfo:
Usage: Action
Body:
# Murano does not guarantee an order the lines to be printed
# at the same time it's impossible to print multiline messages.
# See LP#1611019
- $this._environment.reporter.report($this,
"Dependencies={0}".format($this.puppetfileLink))
- $this.clients.select($this._environment.reporter.report($this,
'{0} can be accessed on {1}'.format(
$.role,
$.instance.floatingIpAddress)))

View File

@ -0,0 +1,22 @@
Namespaces:
=: org.openstack.ci_cd_pipeline_murano_app.v2
std: io.murano
sys: io.murano.system
ci_cd_pipeline_murano_app: org.openstack.ci_cd_pipeline_murano_app
puppet: org.openstack.ci_cd_pipeline_murano_app.puppet
conf: io.murano.configuration
Name: Configurator
Properties:
config:
Contract: {}
Usage: InOut
Methods:
configure:
Arguments:
instance:
Contract: $.class(puppet:PuppetInstance).notNull()
Body:
- $instance.putHieraData($this.config)

View File

@ -0,0 +1,252 @@
Namespaces:
=: org.openstack.ci_cd_pipeline_murano_app.v2
std: io.murano
sys: io.murano.system
ci_cd_pipeline_murano_app: org.openstack.ci_cd_pipeline_murano_app
puppet: org.openstack.ci_cd_pipeline_murano_app.puppet
conf: io.murano.configuration
Name: GerritConfigurator
Extends: Configurator
Methods:
.init:
Body:
- $this.config:
gerrit_acls_dir: /etc/project-config/gerrit/acls
gerrit_db_password: P@ssw0rd
gerrit_db_root_password: P@ssw0rd
gerrit_db_user: gerrit2
gerrit_mysql_host: localhost
gerrit_contactstore_appsec: dummy content. to be done
gerrit_contactstore_pubkey: dummy content. to be done
gerrit_email_private_key: dummy content. to be done
gerrit_github_token: ''
gerrit_lp_access_secret: dummy content. to be done
gerrit_lp_access_token: dummy content. to be done
gerrit_lp_consumer_key: dummy content. to be done
gerrit_notify_impact_file: /etc/project-config/gerrit/notify_impact.yaml
gerrit_replication_ssh_rsa_pubkey_contents: dummy content. to be done
gerrit_rest_token_private_key: dummy content. to be done
gerrit_ssh_dsa_key_contents: |
-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEA1llEntYbWCti+IxYKV7SyPhrkRwhubl0to70knBrZgzVSnUu
ofupwd7wlTXzVOlvd7/2mEIEqKHBXTN4tdMbH8Sjx1SxefjNQRHAaBwtCOG0jFB4
K1uMnT9u46xy9mKGqoPt96XqNjPsJ+Tq9q2wbUYAfAOZlPeoB1D7tH3S3LzYbSNi
SH3cDp2ALO9iAdILzD9a0qm8PyE7PErqeesIwctQUHyXlM9f9pOlOecjMPB6iUhb
/IIUKca+Nrn0lVmPSo+kk/vQE9lLq7VX3aqitH6HIhD+ndcRMyngkV+sOsgMCOkK
ct9PTOVjVtNqsh69NIAnP66eiYTS3F1EAIfeqQIDAQABAoIBAQDON8Xf9mcKVXt7
WjJ7YsHyHaYHToRX1UenVzOPK174KEKPxttddexlG6JkOypmt8rI78NDysgGoNCS
ZTGt5HMFBj73R9ETYr2962EsCGd/Uv5LvCNQu1w18NAzdDaKOlIK/LBWAKarDRsX
apJvTr0c9CsFJMV+XyGmIFB43lCekcHokvnVZBWUa6LmqBHN+ACIuSK0GSBGulzl
3vZnRQfusi+R0OMXY4Fg1Dyyk5Ji0mOrWWAOyD7yhRc7LsOvw59cwE0ii4ryn4Yp
JQ/r8LqpjvFWO2r5HnfCs7vqIWqDcRNoSY4v6iQeLyYyRypkO0HBV4TFPcaOQeMU
cE6BZuqBAoGBAO7QXVqhiALm7gJ53J1RYdfL2X8d0MkRYuWHftT7IgmiTpHA0SoI
vQNe8oneHb53oBK6hpZWtSw1E0a6+m6qu+zSpvA9fhVtsnrdRPoNjHhRBaOdrLjl
EVzxsEw3IjvMHjl8JWk6ILIpxGQlGHeMA0ZP9Kd6KbMNmTnf9hieFg1ZAoGBAOXG
Lx5X2w8kOrnwiGLzqOsIXH1WlAv1bg7UkaHTwmj8X8gnzLOhFb2gM7ThNT+3svPr
E6DSKkBUzD48yVuCcRsZgaxS2bYHILGY0acblyD62sGgO8dye/mwSsqPk9uoqC2+
obu2bD+UpaeGSmsiafbomZZqko0AwZjzv8eU8qHRAoGAH2V1YHzsDLWfhOPQhT41
xtEd/wBEeqq2fcaafhWmG+4itjbLSONtNgw9hrKU5n2DpfKvzwQHPZCcwCfE1NfN
bQ0ktWDgOqD5Xf3JG7a8SPUd8KzCEGzNI5MCwoJdFc94CcawhG0H72ReVWwrE0xt
AclxOLNu2ANpqZowGHxwGcECgYAdfwR7c7HGTtNPHUaU1Uyg51DgMiYNJvN66eTM
DmANlCBDlIBdqtccoZ0hoitww4cwcsPxSCluWrRhZPJAUg1s+ihAU95o1J9ozQJU
3mDXNfyxEH28C8FIe04OlMHZV9xHCwq+Cxv4SX++cqnI+QD7Vj6pJYMsoKU5mkjL
OR6wkQKBgBDb3tFexviFbOgc/zrauvbBid2tPBT6rZSNIeiHYA5F6POZqyxhkOBB
0HA8ALlhb3WphJjSmz39m/5xXRG+JItHnRQ2Pwguq7TkC6O+Dxz2McX+bTkqf/hw
avC69UgihdlJmz+r8ztklEn9fR+I56gWwt6R8YIKOCvKSvDwsJ7g
-----END RSA PRIVATE KEY-----
gerrit_ssh_dsa_pubkey_contents: |
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDWWUSe1htYK2L4jFgpXtLI+GuRH
CG5uXS2jvSScGtmDNVKdS6h+6nB3vCVNfNU6W93v/aYQgSoocFdM3i10xsfxKPHVL
F5+M1BEcBoHC0I4bSMUHgrW4ydP27jrHL2Yoaqg+33peo2M+wn5Or2rbBtRgB8A5m
U96gHUPu0fdLcvNhtI2JIfdwOnYAs72IB0gvMP1rSqbw/ITs8Sup56wjBy1BQfJeU
z1/2k6U55yMw8HqJSFv8ghQpxr42ufSVWY9Kj6ST+9AT2UurtVfdqqK0fociEP6d1
xEzKeCRX6w6yAwI6Qpy309M5WNW02qyHr00gCc/rp6JhNLcXUQAh96p
root@murano-mfgoqiqtst28ql-ggg-gerrit-wtowtwnqoz76
gerrit_ssh_rsa_key_contents: |
-----BEGIN RSA PRIVATE KEY-----
MIIEpQIBAAKCAQEAw3S1FFrPx6IWCtJBpxxXx0/LPGOOcqBMEf6AhAhcgV8Pbon0
xeT2che4Xe7l651KHgM2KbjwlmpQcXB98q5edyk8i/Q6o2u7cLM0rgq3XvNil4ao
V3yz2zKyPhx4YqBRxl7g+qA+EXo9RJxXuZSlyeiw2GJgmWYST/nD7MeBOOh+htmj
FgTSnkvVJgElNh+LgDMLmRI5IGmqG/Y+BNpW6yawXHJJepOtz52Fee8xEQTKyJhZ
TPoRRRyR9bcIXTOsYVaqQ/D2HutTOtgh/txFyAzYKfoa2DKFPXF1P2Y0bHnAfDsv
v3AOSKZ40ZfXujjFDi+GEqywZR1B80EEaPxnpQIDAQABAoIBAHgr+2Gma/XL/E1u
9JqwXG/Y6ZYZh+2GDP9LQOzszyNjtPM7stkxayy+1MY8KfTxYi6NvvFsGdABUbBN
f8KD3uTY37cU1DDB/h7Or+cKA7BHaCjNzBbuPw7YXqq9im7pLx4OG7k8aK0KQT07
+tvJPx2jCYghBE+MaFnvsLyV9SdtBTuvUsaL/zTQPwua3DDsbIiTztyOtiJuHJXX
iRiJ70r9q0HwB5FKvCi1t0u2QuevSt6vzp1TQ1TE0y9hGcf1O38KtsF5kUBWBZcZ
FO59fATTuBCMihDCGEbxd3NAbUBYGG3hT5NrMzZ0LKwRw0ADWxJfa+np5oBvtnVp
gHA1ugECgYEA//+0/Eh28JpKN4w+Xmnqr3A3hMYELUI5HD86GMNTJP2qmZrkE0Fr
21Juo4QXShzQ2sdn5Bo6LkxYfyRfGtdgdynn1k5RGR1kP0fE76N3kVBbLcEnHsAB
PpFnlWgfjI1ifB6O2jlXMmpb9iFOuUTdyxd50KD7Wsu1kI89ZnH6KcECgYEAw3Tu
WnMkTiTK9yUgpDyxtJogZ6CcwzeNvOpERzUh8ynzCKq9LbbSbLMsnu/FvZGfr57S
ucGCUaVlmaVwuUd3n0OeAkYbJqDvx+SzFXCCVWHNXEMba9QCADuS82ROsiIsV6ea
FAEA0F78yiynthZ4pvQDSyHVNxaqWJo7xLwMjuUCgYEA+dy865hW7tPJKJprrX83
nvCqX59eKEaAs39K1yyeFHa6cp5pihnKihDVCCg/CwlBGKiUUGEA9HtzzPTVFr+s
2eI+9D8QjLDRTaphH3yvkVebBveFlU/WZxlIvt0YHflJbNfumjRpVT3WcE9mJRKA
YF+Td/wIGUDHAEeuqDUK9IECgYEAqedWXqfick9HY6kRg9MCwrSL4KjcPFJpUkPu
UFvehCr+CZWp1zgqGLVz30EcihoxTo9oLHMLHoABHpuSrmxyjq5Phzh714tkhEXI
aqWflirrQf1Ps97aUmt25T5Xrj9IfnXB2Qu6MmevpOtGamGERdStnDzvw/Be6aBA
vladMAUCgYEAqBuQnwblpRU0Z9PKy7ZvbX0fVUQEcRMb3kfFnRcgDDe+w+2tRg+w
55sX+SDEV0awiZO/aAecMyrrCjq0LPeu+zqb/09RkCN8MvbABCCeu0RgvWxRBJ0K
KqjD5fkzBytJ3VrBtlaJnYAP+g+96dSCYnfhujCeU2/lrt3tsyUOeC4=
-----END RSA PRIVATE KEY-----
gerrit_ssh_project_rsa_pubkey_contents: "\
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDDdLUUWs/HohYK0kGnHFfHT8s8Y\
45yoEwR/oCECFyBXw9uifTF5PZyF7hd7uXrnUoeAzYpuPCWalBxcH3yrl53KTyL9D\
qja7twszSuCrde82KXhqhXfLPbMrI+HHhioFHGXuD6oD4Rej1EnFe5lKXJ6LDYYmC\
ZZhJP+cPsx4E46H6G2aMWBNKeS9UmASU2H4uAMwuZEjkgaaob9j4E2lbrJrBcckl6\
k63PnYV57zERBMrImFlM+hFFHJH1twhdM6xhVqpD8PYe61M62CH+3EXIDNgp+hrYM\
oU9cXU/ZjRsecB8Oy+/cA5IpnjRl9e6OMUOL4YSrLBlHUHzQQRo/Gel \
root@murano-mfgoqiqtst28ql-ggg-gerrit-wtowtwnqoz76"
gerrit_project_ssh_rsa_key_contents: |
-----BEGIN RSA PRIVATE KEY-----
MIIEogIBAAKCAQEAvfqOmY3HI9tX43ihF0C0l7acXirbOEE+THX/IUV0XT/ArPPM
5l0G71f6mzUxAIhHBw1X0yQqJgrM8cGSe8bTg8J6ciakQHt2SG4wghxr7nZFEqAS
NNoaFtE0hPguA1ZU36kkPuoxXWFKuhxnrkvo6Spj488JZ7mmUyVSUQ2tnYBAqQNH
3D7bqJ8hBTDRhk+RKEt6GXiT+O1f65eSqmS/eDFh9k7Pkd2DfhrSefGTMEwYTapQ
9CX+GZImkERXbUaeTwSqbEVrw6QMknnhKVAj5qk7+ao35ICCeKbFnuKpUfSkO2+4
fgPyMtjoiwCQ7/T87tQjxMszNQJxHlvT7dAkiwIDAQABAoIBADnwNxsnfQs3ctdh
y6c+yZTXUVr6sP64DxrchaGNAA8MSWO1utCqoFnQOBKrpzUlWpwQ+q7fAae2dYhp
Y5YyLgGqBxPXKxKrVIiEanDT4CrKkQg8HzFVLs20odLHqajE5H+Nows4+zMiX9rg
nNIwPmkVz38DfjfPC6Wh5Tfo9wDoPMWSTgljn9Ugl/5kW3fgT/2/hENupP/xyPyh
qKuxU4d8LlMvp7Q9ySGSriRouDTq8LYYsrQ+KeruUyRHYR/z44m45gHfB4id+Qtl
iDJ6MDrGFds/+07CkIxUMMDmzq1heXYb+Ct+DZWbRk+ztQVwEGzQdu+CSYUo9YeY
QJ9mF0kCgYEA4Owy5I2EwbR/+Pbcm4+u7UJIRB1Repp+pZPVTbQwIto3xJD9dC7O
+lVIHnPQSE3hQiAYxqNGwv60Qk9A0b0rx0B+L7U1mGliqiUNfVZB+gDYVTGodxJI
pZkPjO/WxTD4fSJ3/BU62ZSpXWKvYFu8BC+l+OJ626l86M3hNoDbMr8CgYEA2DpY
8UdnqgZa9P1GzWFjQGpavinrBcO8gD0pFztEno22UoN7Tj82euzBIkOZVknbAP7q
VIWN6KTL6GVoiUussermVx+qvLL8KOnPevgNu2AKtc+NkxYAYs+5e44Lhmu08MHT
wPnZioOPG4iB50MlDnVeDFltrDPKj34kuDMRHTUCgYBqJQ2fbmnIQDZkd5uEjjov
Haic/HkHMwGxgiKXmQFecT0ANqxlt/FVkgmG1YDlnls/qYYHt+Yc/7Zx1JTyZiPS
1Ey4lvvEAXfec735+EsKgHuXOOgXyTkfbSw5hrYEOSgLZcjZ3er344BJ4diB0MjZ
8OKSoc74+vNHqmEuJ4FKYQKBgEN4oXxYja5uYT+FMOyxcOkOxtYD+oRH+bACZaoM
InNfQP8qa/WUoAlnizSH53cXgLEk2jYZnphzo/UWf7In3PF/nPSeuwY6y5hwrP9w
G8jWRUFKTKETAnfS3cwCHPKK9WES+mKDFDC2sJck13Q0bYG/eeNcnG5ZkuGHuSmJ
NdPpAoGAL4pU3AuxtiV/25jiOHiTar/s16q9k/lL2qMYesG2Ur7AyCK6NoZm6yx+
9222HL//J1xrdA9EZKdFJ7Z0slI3pAHkqH2y4hjF35OgilHkEuQoFHcKxtxAnIHj
mEjbeTfSZBv1K40wz7h/0lBrTOONC6xqzR75f5W5W/SBAs7nJ8w=
-----END RSA PRIVATE KEY-----
gerrit_project_ssh_rsa_pubkey_contents: "\
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC9+o6Zjccj21fjeKEXQLSXtpxeK\
ts4QT5Mdf8hRXRdP8Cs88zmXQbvV/qbNTEAiEcHDVfTJComCszxwZJ7xtODwnpyJq\
RAe3ZIbjCCHGvudkUSoBI02hoW0TSE+C4DVlTfqSQ+6jFdYUq6HGeuS+jpKmPjzwl\
nuaZTJVJRDa2dgECpA0fcPtuonyEFMNGGT5EoS3oZeJP47V/rl5KqZL94MWH2Ts+R\
3YN+GtJ58ZMwTBhNqlD0Jf4ZkiaQRFdtRp5PBKpsRWvDpAySeeEpUCPmqTv5qjfkg\
IJ4psWe4qlR9KQ7b7h+A/Iy2OiLAJDv9Pzu1CPEyzM1AnEeW9Pt0CSL \
root@murano-mfgoqiqtst28ql-ggg-gerrit-wtowtwnqoz76"
gerrit_ssh_rsa_pubkey_contents: "\
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC9+o6Zjccj21fjeKEXQLSXtpxeK\
ts4QT5Mdf8hRXRdP8Cs88zmXQbvV/qbNTEAiEcHDVfTJComCszxwZJ7xtODwnpyJq\
RAe3ZIbjCCHGvudkUSoBI02hoW0TSE+C4DVlTfqSQ+6jFdYUq6HGeuS+jpKmPjzwl\
nuaZTJVJRDa2dgECpA0fcPtuonyEFMNGGT5EoS3oZeJP47V/rl5KqZL94MWH2Ts+R\
3YN+GtJ58ZMwTBhNqlD0Jf4ZkiaQRFdtRp5PBKpsRWvDpAySeeEpUCPmqTv5qjfkg\
IJ4psWe4qlR9KQ7b7h+A/Iy2OiLAJDv9Pzu1CPEyzM1AnEeW9Pt0CSL \
root@murano-mfgoqiqtst28ql-ggg-gerrit-wtowtwnqoz76"
gerrit_ssl_chain_file_contents: ''
gerrit_ssl_cert_file_contents: |
-----BEGIN CERTIFICATE-----
MIIF2TCCA8GgAwIBAgIJAKT56AcRAOjoMA0GCSqGSIb3DQEBCwUAMIGCMQswCQYD
VQQGEwJVUzEPMA0GA1UECAwGRGVuaWFsMRQwEgYDVQQHDAtTcHJpbmdmaWVsZDEM
MAoGA1UECgwDRGlzMT4wPAYDVQQDDDVtdS10bHRvamlyZGMzNDgyMmMtdW5qYXdp
cmRjMzA2NTItZ2Vycml0LXpmbGg0ZWVnc2JjcTAeFw0xNjA4MDIxMTEwMDBaFw0x
NzA4MDIxMTEwMDBaMIGCMQswCQYDVQQGEwJVUzEPMA0GA1UECAwGRGVuaWFsMRQw
EgYDVQQHDAtTcHJpbmdmaWVsZDEMMAoGA1UECgwDRGlzMT4wPAYDVQQDDDVtdS10
bHRvamlyZGMzNDgyMmMtdW5qYXdpcmRjMzA2NTItZ2Vycml0LXpmbGg0ZWVnc2Jj
cTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMeqpOPOTALPmXK8FdrR
JAUDu/q5q8oPSfuCh5XTApLjchf+z1+UNFm6beYALJAyKYEWmjKwfQGc3Inga3CF
03/JIVes87DxR6ajy2eGRQbhfniocAs9h5Mkuh9/yVrBiSRK2V1CBUD7mf6xuMU0
FujOUlMFvqmP3yyow7n3HbulQoVXajVd1dHej41t9Da1kUfEqDLEbKaJmvDZ/ghZ
I59fU48WftEtV3KtzwGXuLRpnyge0/SFEp6BizQVruFmRdm44wV0vyus5HW1/aVO
rFZalUNSB52CM8iJLdS5PxDK0yPMtGYXaf2lfwFiqA49WfJqdnOOeEeLl5YC6J43
1G2gaiVCvwKDUpwGH1iPLE2H2Ge3czNMUOBMEgxY8FVdduw2xH7Tu+c4rRH5e6iY
1OqthdYLrW7dg3rCMqMWFxsNkT28iFCKGbkOCQht7I2Ye9479yOVyWhanLB1q1ln
9wRqq2UvQNSD2vFAlcfVZDQLoEQNorAGUeB9JHEUezK53+b/vuBOfGr9zYsV5sAM
zth9x58bRoUbqD5KDyeSFS7kgYUnFRxvwMgxXK8PFU09HwTD/mT5sLPLRLCVdmei
g6pthjWyMMicM/lKt4iTfVOUomrzWpbtFClj03wNRfRCcgEROllbK6YLeJYv4X+U
mASWuNWmq934NtIuUq8K7WOpAgMBAAGjUDBOMB0GA1UdDgQWBBTE82EgNWmfetQ3
elvD1VuojPjP0DAfBgNVHSMEGDAWgBTE82EgNWmfetQ3elvD1VuojPjP0DAMBgNV
HRMEBTADAQH/MA0GCSqGSIb3DQEBCwUAA4ICAQCEMHpKdKOafk0w6stw8gKjGzOE
BzvFcM9dIL5cfC7az7xeAoFnUVyrk/KR1m+Xx0BPoLgqc/Z53H6eVtFh8DP9mVeI
BYBj5lfCwxr+lkkU/la5ZrkS1izv/TJIP/Jx1rPwv0ttapWpDoeLATJeCs2iYFr0
JUjXf/SahYn6p4zxs3KUoECYKd/WeCJd77rn4JMKkjPidCxlHicvGwrzJCc8KyxX
P1n1mbqBH0TBcBGd8p7iwY8c+sZWKnSJwvcAGL1aG7++GxAkmjUkkANWUZsAQ1fo
n5BOzRj5qRax0Vfcj46vcHzhGobtWXwMqpHhqNa55pqAEF1/cOLkvOxBW/QDOhxK
u2QNUj30kq4uh/HfPLPchO1Y5JN/5D/YTcDaSHNOlsALYnJz/79IQLeghfkbNVLm
gwiZaNfmmIl7vCpxPzmaJD+IKX8CYen2I3uA8O/EqRYKZL4+YQ6/Sk5GKsygK296
uJ7CG6DvrQirRyPFLOIJSfkCdWGGkGubLHyd8WByACx8BB4pzmjANldcCeC1GuZo
xDymezysHusnPcHwAMKw5Hnl/FTQNe14CxGxN6QF8GcxBIX0fc7L52GLu5nWgXJi
1fZY52bgTKvKvFYsuoKiRw6az1fL77aoQgYFZ53d5i0qtNLuFnbIPeOpPq3BmjlD
PeTnL3b75F2lCXpl3g==
-----END CERTIFICATE-----
gerrit_ssl_key_file_contents: |
-----BEGIN RSA PRIVATE KEY-----
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
-----END RSA PRIVATE KEY-----'
gerrit_war_url: https://gerrit-releases.storage.googleapis.com/gerrit-2.12.3.war
gerrit_gerritbot_password: P@ssw0rd
gerritbot_ssh_rsa_pubkey_contents: dummy content. to be done
gerritbot_ssh_rsa_key_contents: dummy content. to be done
gerrit_mysql_password: P@ssw0rd
github_project_password: dummy content. to be done
github_project_username: mirademo
jeepyb_project_file: /etc/project-config/gerrit/projects.yaml
project_config_config_dir: /etc/project-config/
project_config_repo: https://review.fuel-infra.org/open-paas/project-config
ssh_replication_rsa_key_contents: dummy content. to be done
gerrit_replication_ssh_rsa_key_contents: dummy content. to be done
swift_store_key: dummy content. to be done
swift_store_user: dummy content. to be done
welcome_message_gerrit_ssh_private_key: dummy content. to be done
welcome_message_gerrit_ssh_public_key: dummy content. to be done
gerrit_host: gerrit

View File

@ -0,0 +1,97 @@
Namespaces:
=: org.openstack.ci_cd_pipeline_murano_app.v2
std: io.murano
sys: io.murano.system
ci_cd_pipeline_murano_app: org.openstack.ci_cd_pipeline_murano_app
puppet: org.openstack.ci_cd_pipeline_murano_app.puppet
conf: io.murano.configuration
Name: JenkinsConfigurator
Extends: Configurator
Methods:
.init:
Body:
- $this.config:
git_user: user
git_user_email: email@example.com
jenkins_ssh_private_key_contents: '-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEAxqtDb4g3BAzWe+NyF5NdHagTa/H3s3beMl8x6vZNv1FcXpnX
Ub+WfohdOc+josFmzuFZ+M+tNAw6YW7i2BKaVb/WC4brFZER5CAao365XfQWbfPK
YHmKqhiOuBDBs2N3TGz717th3r1uzpXd8IoIgogTEwi0QFLWls1MlqIakT7NTEJ3
lOw6GfKVli4PjUxHx/+P/ippMnHrU/HWln3tUM6BXoUoqttiEEPmNzp+q/lKJmFB
ddBENzBvFcGHqQ10oSxyrNLwnwjgV3vf2kflW8I2wE0vcBHUYI5OGHkdL17O4adj
bzSvDh3pqQfLRNYfB/PBxAPtauZyQ3Q0LtK63QIDAQABAoIBAGoRmil8AlOJPyJZ
5tordXWV/PiO8X7BohQmuxIFerEAkV54qHse3QylZZCuCWGl/GvL6StsRb8aIDlQ
6JAQLpJFn9P7rpuPHow7j71mtTUyUp9Vn+EuQxhZkCk52REbs9/79+HQS4qOfRCS
9zGroKuAVx68cPA+yg8tgQyTc7fDbCTJ5mnOgwUxcyHTpsyIz+Z/0eitWa4OsFNj
iYwvRw0vdnlPkQPO1ti4hjOh8LvJZseSVXWR/VfPKBQRes8V7hpLsHK9EzDDNUhz
tc103fXWLY3z+LG8wK+kbjbbhISOKhPg0DbcTUe92s708cRPI5c/fDCYOb8CAbJo
PiPrg8kCgYEA9189kS+Hk7ayocakzfQ2voFjpb2FjQ5SXNP940/tbWec5MFkX7zW
t8EB+CEc8lz6HgRrxsK6neeShx02SvbVIkwoXYDjcEzqgCv7ltbJT8gb0hTqnDgN
ja28Flm29TxdFxcHQU5ZZhBNSnEl9PdB3+a3NFwSge7Lm/fuoQG9s78CgYEAzZko
lJnjgoZk7U3tmmNewV5B8yzDdFN430WkdVVlYezN6Bz1oWlJHMyqMj6eKtPCPMrQ
DklDuLSyO1qdpz9rsEIRbB3GSAPf2X4YggOqSC3R0+ReU6vATc6hPjQSN2ahNdZ0
90z4djiSXsUL0C1o4DgORejpv/NdEwwTGVA3yGMCgYA78n6vEn+ekmXTwpnpt0cU
/7IwVi9pMZFQIaejUJlPLA7feOZkNRUrzsA1a4DiUxnh8FxV/JbQ8W+XAsNHg22/
NAmML1HuwxUJHp+HvGFoziu/y4XXedX/AZ1VJUSrRYehstj1QJF1pHm2kpkKNmlm
Yzj+nVl213HMSFcx+YQJbQKBgQCU6qOfBtvoVcnSrIg2NFWUv94K8dhccH1zUvEs
337AcBIwVpF/qVAAoSmBnSNZJ+pfuBL81gpMRe122kqosmIg16ng4qwUy2GfGhtM
SLVU9IMv9BBykEuIz+qwsGylXhvUcBJmcYThtFYoeJb24X0+Mrv73Rk6JF69Bhjr
U9QjuwKBgArBLvnkM2SoryzW1aGDqltFEV6vaRIm7Q396QuEBAGR/+XYqtuwMhvv
pjw6gGkQc+qSlt/ruGY9LQXuLCw4NH/L0RFcHjsaM8a7lQegf77bzmIapHHfcxmC
gschAFtpRuctLGt+2QlZi7Fc9ZTM59XComT8Moi3rFzGNOfKWksR
-----END RSA PRIVATE KEY-----'
jenkins_ssh_pubkey_contents: list(
"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDGq0NviDcEDNZ743IXk10dqBNr",
"8fezdt4yXzHq9k2/UVxemddRv5Z+iF05z6OiwWbO4Vn4z600DDphbuLYEppVv9YL",
"husVkRHkIBqjfrld9BZt88pgeYqqGI64EMGzY3dMbPvXu2HevW7Old3wigiCiBMT",
"CLRAUtaWzUyWohqRPs1MQneU7DoZ8pWWLg+NTEfH/4/+KmkycetT8daWfe1QzoFe",
"hSiq22IQQ+Y3On6r+UomYUF10EQ3MG8VwYepDXShLHKs0vCfCOBXe9/aR+VbwjbA",
"TS9wEdRgjk4YeR0vXs7hp2NvNK8OHempB8tE1h8H88HEA+1q5nJDdDQu0rrd ",
"root@murano-mfgoqiqtst28ql-ggg-jenkins-mjkge7nxw5f3").join('')
jenkins_jobs_password: ''
#
# Project-config local repo
#
getProjectConfigRepo:
Body:
- Return: format(
'https://{0}/open-paas/project-config',
$this.instance.ipAddresses[0])
#
# Switch to newly created project-config repo
#
_switchProjectConfig:
Body:
- $.instance.setHieraValue(
'project_config_repo', $.getProjectConfigRepo())

View File

@ -0,0 +1,26 @@
Namespaces:
=: org.openstack.ci_cd_pipeline_murano_app.v2
std: io.murano
sys: io.murano.system
ci_cd_pipeline_murano_app: org.openstack.ci_cd_pipeline_murano_app
puppet: org.openstack.ci_cd_pipeline_murano_app.puppet
conf: io.murano.configuration
Name: LdapConfigurator
Extends: Configurator
Methods:
.init:
Body:
- $this.config:
ldap::client::ssl_cert: ''
ldap::client::uri: localhost
ldap::server::rootpw: Openst@ck0
ldap_dc: infra
ldap_domain: infra.local
ldap_password: P@ssw0rd
ldap_root_password: Openst@ck0
ldap_root_user: root
ldap_user: user
ldap_ip: openldap

View File

@ -0,0 +1,202 @@
#
# Top-level variables
#
# There must not be any whitespace between this comment and the variables or
# in between any two variables in order for them to be correctly parsed and
# passed around in test.sh
#
#
# Default: should at least behave like an openstack server
#
node default {
# class { 'openstack_project::server':
# # TODO: 8140 should be only open on the puppet master
# iptables_public_tcp_ports => [8140],
# sysadmins => hiera('sysadmins', []),
# }
}
#
# Long lived servers:
#
# Node-OS: trusty
node 'review' {
$project_config_repo = hiera('project_config_repo')
class { 'openstack_project::server':
iptables_public_tcp_ports => [80, 443, 8081, 29418],
sysadmins => hiera('sysadmins', []),
certname => 'review',
ca_server => 'puppet',
puppetmaster_server => 'puppet',
enable_unbound => false,
manage_exim => false,
}
class { '::mysql::server':
root_password => hiera('gerrit_db_root_password'),
remove_default_accounts => true,
}
mysql::db { 'reviewdb':
user => hiera('gerrit_db_user'),
password => hiera('gerrit_db_password'),
host => 'localhost',
grant => ['all'],
}
class { 'openstack_project::review':
project_config_repo => $project_config_repo,
projects_config => 'openstack_project/review.projects.ini.erb',
# projects_file => hiera('jeepyb_project_file'),
github_oauth_token => hiera('gerrit_github_token'),
github_project_username => hiera('github_project_username', 'username'),
github_project_password => hiera('github_project_password'),
mysql_host => hiera('gerrit_mysql_host', 'localhost'),
mysql_password => hiera('gerrit_mysql_password'),
email_private_key => hiera('gerrit_email_private_key'),
token_private_key => hiera('gerrit_rest_token_private_key'),
# gerritbot_password => hiera('gerrit_gerritbot_password'),
# gerritbot_ssh_rsa_key_contents => hiera('gerritbot_ssh_rsa_key_contents'),
# gerritbot_ssh_rsa_pubkey_contents => hiera('gerritbot_ssh_rsa_pubkey_contents'),
ssl_cert_file_contents => hiera('gerrit_ssl_cert_file_contents'),
ssl_key_file_contents => hiera('gerrit_ssl_key_file_contents'),
# ssl_chain_file_contents => hiera('gerrit_ssl_chain_file_contents'),
ssl_chain_file => '',
ssl_chain_file_contents => '',
ssh_dsa_key_contents => hiera('gerrit_ssh_dsa_key_contents'),
ssh_dsa_pubkey_contents => hiera('gerrit_ssh_dsa_pubkey_contents'),
ssh_rsa_key_contents => hiera('gerrit_ssh_rsa_key_contents'),
ssh_rsa_pubkey_contents => hiera('gerrit_ssh_rsa_pubkey_contents'),
ssh_project_rsa_key_contents => hiera('gerrit_project_ssh_rsa_key_contents'),
ssh_project_rsa_pubkey_contents => hiera('gerrit_project_ssh_rsa_pubkey_contents'),
ssh_welcome_rsa_key_contents => hiera('welcome_message_gerrit_ssh_private_key'),
ssh_welcome_rsa_pubkey_contents => hiera('welcome_message_gerrit_ssh_public_key'),
ssh_replication_rsa_key_contents => hiera('gerrit_replication_ssh_rsa_key_contents'),
ssh_replication_rsa_pubkey_contents => hiera('gerrit_replication_ssh_rsa_pubkey_contents'),
lp_sync_consumer_key => hiera('gerrit_lp_consumer_key'),
lp_sync_token => hiera('gerrit_lp_access_token'),
lp_sync_secret => hiera('gerrit_lp_access_secret'),
contactstore_appsec => hiera('gerrit_contactstore_appsec'),
contactstore_pubkey => hiera('gerrit_contactstore_pubkey'),
swift_username => hiera('swift_store_user', 'username'),
swift_password => hiera('swift_store_key'),
require => [
# Package['build-essential'],
# Package['libssl-dev'],
# Package['libffi-dev'],
# Package['python-dev'],
Class['::mysql::server'],
]
}
exec { 'openstack_project::gerrit':
command => "/usr/bin/git remote set-url origin $project_config_repo",
cwd => "/etc/project-config/",
require => [
Class['project_config'],
],
}
}
# Node-OS: precise
node jenkins {
package { 'unzip':
ensure => present
}
class { 'openstack_project::server':
iptables_public_tcp_ports => [80, 443, 8080],
sysadmins => hiera('sysadmins', []),
certname => 'jenkins',
ca_server => 'puppet',
puppetmaster_server => 'puppet',
}
class { 'openstack_project::jenkins':
vhost_name => 'jenkins',
jenkins_password => hiera('jenkins_jobs_password'),
jenkins_ssh_private_key => hiera('jenkins_ssh_private_key_contents'),
ssl_cert_file => '/etc/ssl/certs/ssl-cert-snakeoil.pem',
ssl_key_file => '/etc/ssl/private/ssl-cert-snakeoil.key',
ssl_chain_file => '',
jenkins_username => 'gerrit',
serveradmin => 'jenkins@example.com',
project_config_repo => hiera('project_config_repo'),
project_config_base => '',
}
}
node openldap {
$dc = hiera("ldap_dc")
$dn = domain2dn(hiera("ldap_domain"))
$user = hiera('ldap_root_user')
class { 'ldap::server':
suffix => $dn,
rootdn => "cn=$user,$dn",
rootpw => hiera('ldap_root_password'),
log_level => 1,
}
class { 'ldap::client':
uri => 'ldap://openldap',
base => "$dn",
}
$ldap_defaults = {
ensure => present,
host => 'openldap',
base => "$dn",
port => 389,
ssl => false,
username => "cn=root,${dn}",
password => hiera('ldap_root_password')
}
$ldap_entries = {
"$dn" =>{
attributes => {
dc => "$dc",
objectClass => ['top','domain'],
description => 'Tree root'
},
},
"ou=users,$dn" =>{
attributes => {
ou => "users",
objectClass=>['top', 'organizationalUnit'],
description=> "Users for ${dn}",
}
},
"uid=user,ou=users,$dn" =>{
attributes => {
cn => "user",
uid => "user",
sn => "user",
uidNumber => 1001,
gidNumber => 1001,
objectClass=> [
'top',
'posixAccount',
'shadowAccount',
'iNetOrgPerson',
'organizationalPerson'],
description=> "User",
gecos => "user@$dn",
homeDirectory => "/home/user",
userPassword=> sha1digest(hiera('ldap_password')),
shadowLastChange=> "0",
shadowMax => "0",
shadowWarning=> "0",
mail => "mail@example.com"
}
},
}
create_resources('ldap_entry', $ldap_entries,$ldap_defaults)
}

View File

@ -0,0 +1,56 @@
Version: 2
Application:
?:
type: org.openstack.ci_cd_pipeline_murano_app.v2.CiCdEnvironment
systemConfigUrl: $.appConfiguration.systemConfigUrl
flavor: $.instanceConfiguration.flavor
osImage: $.instanceConfiguration.osImage
keyPair: $.instanceConfiguration.keyPair
availabilityZone: $.instanceConfiguration.availabilityZone
Forms:
- appConfiguration:
fields:
- name: name
type: string
initial: CICD2
label: Application name
descriptionTitle:
description:
- instanceConfiguration:
fields:
- name: title
type: string
required: false
hidden: true
description: Specify some instance parameters on which the application would be created
- name: flavor
type: flavor
label: Instance flavor
description: >-
Select registered in Openstack flavor. Consider that application performance
depends on this parameter.
initial: m1.medium
required: false
- name: osImage
type: image
imageType: linux
label: Instance image
description: >-
Select a valid image for the application. Image should already be prepared and
registered in glance.
- name: keyPair
type: keypair
label: Key Pair
description: >-
Select a Key Pair to control access to instances. You can login to
instances using this KeyPair after the deployment of application.
required: false
- name: availabilityZone
type: azone
label: Availability zone
description: Select availability zone where the application would be installed.
required: false

Binary file not shown.

After

Width:  |  Height:  |  Size: 159 KiB

View File

@ -0,0 +1,23 @@
Format: 1.2
Type: Application
FullName: org.openstack.ci_cd_pipeline_murano_app.v2.CiCd2
Name: CiCd2
Description: |
The One-click CI/CD installer. This application uses Puppet master to deploy
applications set
Author: 'Mirantis, Inc'
Tags: [Server, Puppet, CI]
UI: ui.yaml
Logo: logo.png
Classes:
org.openstack.ci_cd_pipeline_murano_app.v2.CiCdEnvironment: CiCd2.yaml
org.openstack.ci_cd_pipeline_murano_app.v2.Configurator: Configurator.yaml
org.openstack.ci_cd_pipeline_murano_app.v2.GerritConfigurator: GerritConfigurator.yaml
org.openstack.ci_cd_pipeline_murano_app.v2.JenkinsConfigurator: JenkinsConfigurator.yaml
org.openstack.ci_cd_pipeline_murano_app.v2.NodepoolConfigurator: NodepoolConfigurator.yaml
org.openstack.ci_cd_pipeline_murano_app.v2.LdapConfigurator: LdapConfigurator.yaml
Require:
org.openstack.ci_cd_pipeline_murano_app.utils.CiCdUtils:
org.openstack.ci_cd_pipeline_murano_app.puppet.Puppet:
org.openstack.ci_cd_pipeline_murano_app.puppet.SystemConfig:

View File

@ -19,7 +19,7 @@ Name: PuppetClient
Properties:
instance:
Contract: $.class('org.openstack.ci_cd_pipeline_murano_app.puppet.PuppetInstance').notNull()
Contract: $.class(PuppetInstance).notNull()
role:
Contract: $.string().notNull()
@ -42,6 +42,27 @@ Methods:
- $res: new(conf:Linux).runCommand(
agent => $this.instance.agent,
command => 'puppet agent --test',
ignoreErrors => true).stdout
ignoreErrors => true,
captureStdout => false,
captureStderr => false).stdout
- Return: $res
#
# Run puppet agent.
# Get manifest from the server and apply it
#
runPuppetAgent:
Body:
- $command: >
puppet agent --config /etc/puppet/puppet.conf
--onetime --no-daemonize --verbose --no-splay
- $res: new(conf:Linux).runCommand(
agent => $this.instance.agent,
command => $command,
ignoreErrors => false,
captureStdout => false,
captureStderr => true).stdout
- Return: $res

View File

@ -47,7 +47,8 @@ Methods:
installPuppet:
Body:
- $._environment.reporter.report($this,
'Install puppet on instance "{0}" with id {1}'.format($.name, $.openstackId))
'Install puppet on instance "{0}" with id {1}'.format(
$.name, $.openstackId))
- $resources: new(sys:Resources)
- $template: $resources.yaml('InstallPuppet.template')
- $.agent.call($template, $resources)
@ -180,3 +181,7 @@ Methods:
- $template: $resources.yaml('ApplyManifest.template').bind($parameters)
- Return: $this.agent.call($template, $resources, $timeout)
runPuppetAgents:
Body:
- $this.clients.pselect( $.agentRun())

View File

@ -63,7 +63,8 @@ Methods:
Body:
- $this._hosts: new(net:Hosts)
- $this._hosts.addHostByInstance($this.masterInstance, 'puppet')
- $this.clients.pselect($this._hosts.addHostByInstance($.instance, $.role))
- $this.clients.pselect(
$this._hosts.addHostByInstance($.instance, $.role))
- $this._hosts.applyTo($this.masterInstance)
- $this.clients.pselect($this._hosts.applyTo($.instance))
@ -118,3 +119,7 @@ Methods:
environment => $environment,
puppetfile => $puppetfileLink))
- Return: $this.masterInstance.agent.call($template, $resources)
runPuppetAgents:
Body:
- $this.clients.select($.runPuppetAgent())

View File

@ -16,6 +16,10 @@ Scripts:
EntryPoint: 'server/install_dependencies.sh'
Files: []
Options:
captureStdout: true
captureStderr: true
# The amout of information printed by script can be huge.
# More than Murano allows to collect.
# Thus we are forced to set "captureStdout" to false
captureStdout: false
# the same
captureStderr: false
verifyExitcode: true