You are browsing a read-only backup copy of Wikitech. The live site can be found at wikitech.wikimedia.org
Help:Puppet-compiler: Difference between revisions
imported>Arturo Borrero Gonzalez (Create page with basic content) |
imported>Arturo Borrero Gonzalez (→Troubleshooting: remove link to Cloud VPS) |
||
Line 5: | Line 5: | ||
This page gives some instructions on doing so. | This page gives some instructions on doing so. | ||
== Integration Jenkins == | |||
== | There is a jenkins job that takes a gerrit change and runs the compiler. | ||
Steps: | |||
# Push your change to [[gerrit]] using [[git-review]] | |||
# Go to https://integration.wikimedia.org/ci/job/operations-puppet-catalog-compiler/ | |||
# Go to "Build with parameters" https://integration.wikimedia.org/ci/job/operations-puppet-catalog-compiler/build | |||
# In the form, fill '''change number''' (from gerrit) and '''list of nodes''' | |||
# Hit the '''Build''' button | |||
# Wait for the jenkins job to end | |||
# You can check for results in the jenkins '''Console output''' | |||
# You can see the compiled catalogs in a web frontend, something like: https://puppet-compiler.wmflabs.org/compiler02/8755/ | |||
== Local run (of jenkins job)== | |||
You can do a local run of the integration jenkins job. This is usually done in an instance VM on CloudVPS. | |||
Steps are: | |||
* Push your patch to [[gerrit]] using [[git-review]]. You will get a '''change''' number. | |||
* Choose a puppet master server <master> | |||
* Build <worker> as a large Jessie instance (probably anywhere, but ideally in the same project as <master> if <master> is a VM | |||
* On <worker>, apply the classes "role::puppet_compiler" and "profile::puppetmaster::labsenc" (via Horizon, for example) | |||
* On <worker>, apply the following hiera (via Horizon, for example): | |||
<pre> | |||
discovery::app_routes: {} | |||
etcd::cluster_name: <something arbitrary and distinctive> | |||
etcd::cluster_state: new | |||
etcd::host: '%{::fqdn}' | |||
etcd::peers_list: <worker hostname>=http://<worker fqdn>:2380 | |||
etcd::port: 2739 | |||
etcd::ssl::puppet_cert_name: '%{::fqdn}' | |||
etcd::use_ssl: true | |||
labsdnsconfig: {} | |||
</pre> | |||
* Gather facts of target host. On a local (not a VM) with keys installed to access all the necessary hosts, run this script from the puppet repo: | |||
<pre> | |||
$ PUPPET_MASTERS=<master> PUPPET_COMPILER=<worker> modules/puppet_compiler/files/compiler-update-facts | |||
</pre> | |||
* In order to see results in HTML for a web browser, you will need to set up a web proxy (ideally named puppet-compiler.wmflabs.org) pointing to <worker> | |||
Make sure port 80 is open on <worker> so the proxy can reach it. You can do this via Horizon. | |||
* Once all that is done, you can invoke a compiler test on <worker> like this: | |||
<pre> | |||
CHANGE=<patch of interest> NODES=<node of interest> BUILD_NUMBER=8 puppet-compiler | |||
</pre> | |||
The source of this information is: | |||
* Andrew's comment in https://phabricator.wikimedia.org/T97081#3681225 | |||
== Local run (pcc utility) == | |||
There is a | There is a also a tool called '''pcc''' under the ''operations/puppet/utils'' repo. You'll need your Jenkins API token to make it work, retrievable under https://integration.wikimedia.org/ci/user/$YOURUSERNAME/configure. | ||
Example: | |||
<pre> | |||
./utils/pcc GERRIT_CHANGE_NUMBER LIST_OF_NODES --username YOUR_USERNAME --api-token 12312312312312313 | |||
./utils/pcc 282936 oxygen.eqiad.wmnet --username batman --api-token 12312312312312313 | |||
</pre> | |||
== Troubleshooting == | |||
Some common errors and mistakes. | |||
* Catalog for Cloud VPS instances doesn't get any labs classes/roles | |||
This happens because '''$::realm''' is not set to '''labs'''. | |||
There are patches in place to fix this, but the puppet-compiler software needs to be released with these patches. | |||
== See also == | |||
* [[Puppet coding]] | |||
* [[Help:Standalone puppetmaster]] | |||
* [[Puppet migration#Puppet Catalogs compiler]] | |||
* [[Puppet coding/Testing#Puppet Compiler Jenkins Job]] | |||
* Phabricator related tickets: https://phabricator.wikimedia.org/T97081 | |||
[[Category:Puppet]] | |||
[[Category:Documentation]] | |||
[[Category:Cloud Services]] | |||
[[Category:Cloud VPS]] |
Revision as of 17:58, 14 November 2017
![]() | This page is currently a draft. More information and discussion about changes to this draft on the talk page. |
You can run puppet-compiler by hand to get the results of a given puppet configuration without having to deploy it to servers.
This page gives some instructions on doing so.
Integration Jenkins
There is a jenkins job that takes a gerrit change and runs the compiler.
Steps:
- Push your change to gerrit using git-review
- Go to https://integration.wikimedia.org/ci/job/operations-puppet-catalog-compiler/
- Go to "Build with parameters" https://integration.wikimedia.org/ci/job/operations-puppet-catalog-compiler/build
- In the form, fill change number (from gerrit) and list of nodes
- Hit the Build button
- Wait for the jenkins job to end
- You can check for results in the jenkins Console output
- You can see the compiled catalogs in a web frontend, something like: https://puppet-compiler.wmflabs.org/compiler02/8755/
Local run (of jenkins job)
You can do a local run of the integration jenkins job. This is usually done in an instance VM on CloudVPS.
Steps are:
- Push your patch to gerrit using git-review. You will get a change number.
- Choose a puppet master server <master>
- Build <worker> as a large Jessie instance (probably anywhere, but ideally in the same project as <master> if <master> is a VM
- On <worker>, apply the classes "role::puppet_compiler" and "profile::puppetmaster::labsenc" (via Horizon, for example)
- On <worker>, apply the following hiera (via Horizon, for example):
discovery::app_routes: {} etcd::cluster_name: <something arbitrary and distinctive> etcd::cluster_state: new etcd::host: '%{::fqdn}' etcd::peers_list: <worker hostname>=http://<worker fqdn>:2380 etcd::port: 2739 etcd::ssl::puppet_cert_name: '%{::fqdn}' etcd::use_ssl: true labsdnsconfig: {}
- Gather facts of target host. On a local (not a VM) with keys installed to access all the necessary hosts, run this script from the puppet repo:
$ PUPPET_MASTERS=<master> PUPPET_COMPILER=<worker> modules/puppet_compiler/files/compiler-update-facts
- In order to see results in HTML for a web browser, you will need to set up a web proxy (ideally named puppet-compiler.wmflabs.org) pointing to <worker>
Make sure port 80 is open on <worker> so the proxy can reach it. You can do this via Horizon.
- Once all that is done, you can invoke a compiler test on <worker> like this:
CHANGE=<patch of interest> NODES=<node of interest> BUILD_NUMBER=8 puppet-compiler
The source of this information is:
- Andrew's comment in https://phabricator.wikimedia.org/T97081#3681225
Local run (pcc utility)
There is a also a tool called pcc under the operations/puppet/utils repo. You'll need your Jenkins API token to make it work, retrievable under https://integration.wikimedia.org/ci/user/$YOURUSERNAME/configure.
Example:
./utils/pcc GERRIT_CHANGE_NUMBER LIST_OF_NODES --username YOUR_USERNAME --api-token 12312312312312313 ./utils/pcc 282936 oxygen.eqiad.wmnet --username batman --api-token 12312312312312313
Troubleshooting
Some common errors and mistakes.
- Catalog for Cloud VPS instances doesn't get any labs classes/roles
This happens because $::realm is not set to labs. There are patches in place to fix this, but the puppet-compiler software needs to be released with these patches.