Hashar has uploaded a new change for review. ( https://gerrit.wikimedia.org/r/307425 )
Change subject: (WIP) Crazy rspec for the role module (WIP) ...................................................................... (WIP) Crazy rspec for the role module (WIP) They should compile. Finished in 8 minutes 6 seconds 291 examples, 0 failures, 25 pending Change-Id: Ibcb7fe8d5c86b7ab1e99e0b5633d89bce3b21cfb --- M .rubocop_todo.yml A modules/role/.gitignore A modules/role/.rspec A modules/role/Rakefile A modules/role/spec/fixtures/hiera.yaml A modules/role/spec/fixtures/hieradata/common.yaml A modules/role/spec/fixtures/hieradata/network.yaml A modules/role/spec/fixtures/hieradata/realm_labs.yaml A modules/role/spec/fixtures/hieradata/role/analytics_cluster/hadoop/worker.yaml A modules/role/spec/fixtures/hieradata/role/analytics_cluster/refinery.yaml A modules/role/spec/fixtures/hieradata/role/backup.yaml A modules/role/spec/fixtures/hieradata/role/cache.yaml A modules/role/spec/fixtures/hieradata/role/cache/2layer.yaml A modules/role/spec/fixtures/hieradata/role/cache/base.yaml A modules/role/spec/fixtures/hieradata/role/cache/kafka.yaml A modules/role/spec/fixtures/hieradata/role/cache/maps.yaml A modules/role/spec/fixtures/hieradata/role/cache/misc.yaml A modules/role/spec/fixtures/hieradata/role/cache/text.yaml A modules/role/spec/fixtures/hieradata/role/cache/upload.yaml A modules/role/spec/fixtures/hieradata/role/ceilometer.yaml A modules/role/spec/fixtures/hieradata/role/dataset.yaml A modules/role/spec/fixtures/hieradata/role/deployment.yaml A modules/role/spec/fixtures/hieradata/role/elasticsearch.yaml A modules/role/spec/fixtures/hieradata/role/ganglia.yaml A modules/role/spec/fixtures/hieradata/role/gerrit/server.yaml A modules/role/spec/fixtures/hieradata/role/grafana/base.yaml A modules/role/spec/fixtures/hieradata/role/kafka/analytics/burrow.yaml A modules/role/spec/fixtures/hieradata/role/labs.yaml A modules/role/spec/fixtures/hieradata/role/labs/dnsrecursor.yaml A modules/role/spec/fixtures/hieradata/role/labs/nfs.yaml A modules/role/spec/fixtures/hieradata/role/labs/ores.yaml A modules/role/spec/fixtures/hieradata/role/labs/tools.yaml A modules/role/spec/fixtures/hieradata/role/labs/tools/mailrelay.yaml A modules/role/spec/fixtures/hieradata/role/lists.yaml A modules/role/spec/fixtures/hieradata/role/maps.yaml A modules/role/spec/fixtures/hieradata/role/maps/master.yaml A modules/role/spec/fixtures/hieradata/role/maps/server.yaml A modules/role/spec/fixtures/hieradata/role/maps/slave.yaml A modules/role/spec/fixtures/hieradata/role/mediawiki.yaml A modules/role/spec/fixtures/hieradata/role/mediawiki/jobrunner.yaml A modules/role/spec/fixtures/hieradata/role/mediawiki/videoscaler.yaml A modules/role/spec/fixtures/hieradata/role/openldap/labs.yaml A modules/role/spec/fixtures/hieradata/role/ores/redis.yaml A modules/role/spec/fixtures/hieradata/role/osm/master.yaml A modules/role/spec/fixtures/hieradata/role/otrs/webserver.yaml A modules/role/spec/fixtures/hieradata/role/phabricator/labs.yaml A modules/role/spec/fixtures/hieradata/role/phabricator/main.yaml A modules/role/spec/fixtures/hieradata/role/programdashboard.yaml A modules/role/spec/fixtures/hieradata/role/prometheus/mysqld_exporter.yaml A modules/role/spec/fixtures/hieradata/role/prometheus/node_exporter.yaml A modules/role/spec/fixtures/hieradata/role/prometheus/tools.yaml A modules/role/spec/fixtures/hieradata/role/puppetmaster.yaml A modules/role/spec/fixtures/hieradata/role/puppetmaster/common.yaml A modules/role/spec/fixtures/hieradata/role/puppetmaster/puppetdb.yaml A modules/role/spec/fixtures/hieradata/role/salt/masters/labs.yaml A modules/role/spec/fixtures/hieradata/role/snapshot.yaml A modules/role/spec/fixtures/hieradata/role/striker/web.yaml A modules/role/spec/fixtures/hieradata/role/swift/proxy.yaml A modules/role/spec/fixtures/hieradata/role/swift/storage.yaml A modules/role/spec/fixtures/hieradata/role/thumbor.yaml A modules/role/spec/fixtures/hieradata/role/toollabs.yaml A modules/role/spec/fixtures/hieradata/role/toollabs/clush.yaml A modules/role/spec/fixtures/hieradata/role/toollabs/docker/builder.yaml A modules/role/spec/fixtures/hieradata/role/toollabs/docker/registry.yaml A modules/role/spec/fixtures/hieradata/role/toollabs/elasticsearch.yaml A modules/role/spec/fixtures/hieradata/role/toollabs/etcd.yaml A modules/role/spec/fixtures/hieradata/role/toollabs/k8s/bastion.yaml A modules/role/spec/fixtures/hieradata/role/toollabs/k8s/master.yaml A modules/role/spec/fixtures/hieradata/role/toollabs/k8s/webproxy.yaml A modules/role/spec/fixtures/hieradata/role/toollabs/k8s/worker.yaml A modules/role/spec/fixtures/hieradata/role/toollabs/logging/sender.yaml A modules/role/spec/fixtures/hieradata/role/yubiauth/server.yaml A modules/role/spec/fixtures/hieradata/role/zuul.yaml A modules/role/spec/fixtures/manifests/site.pp A modules/role/spec/fixtures/modules/grub/manifests/bootparam.pp A modules/role/spec/fixtures/modules/grub/manifests/defaults.pp A modules/role/spec/fixtures/modules/passwords/manifests/init.pp A modules/role/spec/fixtures/modules/standard/manifests/init.pp A modules/role/spec/integration/smoke_compile_roles_spec.rb A modules/role/spec/spec_helper.rb 80 files changed, 786 insertions(+), 2 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/operations/puppet refs/changes/25/307425/33 diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml index f71c886..80bccf5 100644 --- a/.rubocop_todo.yml +++ b/.rubocop_todo.yml @@ -1,6 +1,6 @@ # This configuration was generated by # `rubocop --auto-gen-config` -# on 2015-11-23 13:21:11 +0100 using RuboCop version 0.35.1. +# on 2016-08-31 11:55:20 +0200 using RuboCop version 0.35.1. # The point is for the user to remove these configuration records # one by one as the offenses are removed from the code base. # Note that changes in the inspected code, or installation of new @@ -25,6 +25,13 @@ Lint/RescueException: Exclude: - 'modules/puppetmaster/lib/puppet/reports/logstash.rb' + +# Offense count: 5 +# Cop supports --auto-correct. +# Configuration parameters: IgnoreEmptyBlocks. +Lint/UnusedBlockArgument: + Exclude: + - 'modules/role/spec/unit/they_should_compile_spec.rb' # Offense count: 2 # Cop supports --auto-correct. @@ -275,7 +282,7 @@ - 'modules/puppetmaster/lib/puppet/reports/logstash.rb' - 'modules/wmflib/lib/hiera/backend/proxy_backend.rb' -# Offense count: 23 +# Offense count: 24 # Cop supports --auto-correct. # Configuration parameters: EnforcedStyle, SupportedStyles, AllowInnerSlashes. Style/RegexpLiteral: @@ -285,6 +292,7 @@ - 'modules/bacula/spec/classes/bacula_storage_spec.rb' - 'modules/bacula/spec/defines/fileset_spec.rb' - 'modules/bacula/spec/defines/storage_device_spec.rb' + - 'modules/role/spec/unit/they_should_compile_spec.rb' - 'modules/servermon/spec/classes/servermon_app_spec.rb' - 'modules/trebuchet/lib/puppet/provider/package/trebuchet.rb' - 'modules/wmflib/lib/hiera/backend/nuyaml_backend.rb' diff --git a/modules/role/.gitignore b/modules/role/.gitignore new file mode 100644 index 0000000..cb24b55 --- /dev/null +++ b/modules/role/.gitignore @@ -0,0 +1,2 @@ +# From rspec example_status_persistence_file_path +spec/examples.txt diff --git a/modules/role/.rspec b/modules/role/.rspec new file mode 100644 index 0000000..f449dae --- /dev/null +++ b/modules/role/.rspec @@ -0,0 +1,2 @@ +--format doc +--color diff --git a/modules/role/Rakefile b/modules/role/Rakefile new file mode 100644 index 0000000..cd3d379 --- /dev/null +++ b/modules/role/Rakefile @@ -0,0 +1 @@ +require 'puppetlabs_spec_helper/rake_tasks' diff --git a/modules/role/spec/fixtures/hiera.yaml b/modules/role/spec/fixtures/hiera.yaml new file mode 100644 index 0000000..4da9d29 --- /dev/null +++ b/modules/role/spec/fixtures/hiera.yaml @@ -0,0 +1,12 @@ +:backends: + - yaml +:yaml: + :datadir: 'spec/fixtures/hieradata' +:hierarchy: + - "%{::wmf_hiera_role_dir}" + - "%{::wmf_hiera_role_parent_dir}" + - "%{::wmf_hiera_role_gparent_dir}" + # network::subnet from the 'network' puppet module + - "realm_%{::realm}" + - network + - common diff --git a/modules/role/spec/fixtures/hieradata/common.yaml b/modules/role/spec/fixtures/hieradata/common.yaml new file mode 100644 index 0000000..e467cb5 --- /dev/null +++ b/modules/role/spec/fixtures/hieradata/common.yaml @@ -0,0 +1,59 @@ +puppetmaster: 'puppetmaster_host' +mail_smarthost: + - 'mail_smarthost01' + - 'mail_smarthost02' +statsd: 'statsd-fake.example.org' + +etcd::srv_dns: 'etcd.example.org' +etcd::auth::common::root_password: '' + +# standard/base are mocked. Should not be needed: +base::remote_syslog::enable: false + +labs_tld: "wmflabs.example.org" + +lvs::configuration::lvs_services: + apaches: &lvs_service + class: high-traffic1 + sites: + - eqiad + ip: + eqiad: 127.0.0.1 + monitors: {} + maps: *lvs_service + +lvs::configuration::lvs_service_ips: + apaches: + eqiad: dummy + maps: + eqiad: dummy + misc_web: + eqiad: dummy + text: + eqiad: dummy + upload: + eqiad: dummy + +# FIXME? move below spec/fixtures/hieradata/role/ + +# For analytics cluster +# role::zookeeper::client +# role::analytics_cluster::* +zookeeper_cluster_name: "zookeeper_test_cluster" +zookeeper_clusters: + zookeeper_test_cluster: + hosts: + host_a: '1000' + +namenode_hosts: + - 'namenode_1' +journalnode_hosts: + - 'journalnode_1' +cdh::hadoop::journalnode_hosts: + - 'journalnode_2' +cdh::hadoop::namenode_hosts: + - 'namenode_2' +cdh::hive::metastore_host: + - 'metastore_host' +cdh::oozie::oozie_host: + - 'oozie_host' diff --git a/modules/role/spec/fixtures/hieradata/network.yaml b/modules/role/spec/fixtures/hieradata/network.yaml new file mode 120000 index 0000000..cc48233 --- /dev/null +++ b/modules/role/spec/fixtures/hieradata/network.yaml @@ -0,0 +1 @@ +../../../../../modules/network/spec/fixtures/hieradata/common.yaml \ No newline at end of file diff --git a/modules/role/spec/fixtures/hieradata/realm_labs.yaml b/modules/role/spec/fixtures/hieradata/realm_labs.yaml new file mode 100644 index 0000000..f4c6750 --- /dev/null +++ b/modules/role/spec/fixtures/hieradata/realm_labs.yaml @@ -0,0 +1,2 @@ +saltmaster: "salt_master.wmflabs.example.org" +labs_global_puppet_master: "puppetmaster.wmflabs.example.org" diff --git a/modules/role/spec/fixtures/hieradata/role/analytics_cluster/hadoop/worker.yaml b/modules/role/spec/fixtures/hieradata/role/analytics_cluster/hadoop/worker.yaml new file mode 100644 index 0000000..d4d7e71 --- /dev/null +++ b/modules/role/spec/fixtures/hieradata/role/analytics_cluster/hadoop/worker.yaml @@ -0,0 +1,3 @@ +cdh::hadoop::datanode_mounts: + - /var/lib/hadoop/data/a + - /var/lib/hadoop/data/b diff --git a/modules/role/spec/fixtures/hieradata/role/analytics_cluster/refinery.yaml b/modules/role/spec/fixtures/hieradata/role/analytics_cluster/refinery.yaml new file mode 100644 index 0000000..668a4ed --- /dev/null +++ b/modules/role/spec/fixtures/hieradata/role/analytics_cluster/refinery.yaml @@ -0,0 +1,3 @@ +statistics::servers: + - stats_01 + - stats_02 diff --git a/modules/role/spec/fixtures/hieradata/role/backup.yaml b/modules/role/spec/fixtures/hieradata/role/backup.yaml new file mode 100644 index 0000000..336d17c --- /dev/null +++ b/modules/role/spec/fixtures/hieradata/role/backup.yaml @@ -0,0 +1,3 @@ +role::backup::config::days: ['Sat', 'Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri'] +role::backup::config::days: 7 + diff --git a/modules/role/spec/fixtures/hieradata/role/cache.yaml b/modules/role/spec/fixtures/hieradata/role/cache.yaml new file mode 100644 index 0000000..ed9c4c3 --- /dev/null +++ b/modules/role/spec/fixtures/hieradata/role/cache.yaml @@ -0,0 +1,10 @@ +cache::misc::nodes: + eqiad: ['cache_misc_00'] + codfw: ['cache_misc_00'] + +cache::route_table: + eqiad: direct + +role::cache::2layer::storage_parts: + - sda1 + - sdb1 diff --git a/modules/role/spec/fixtures/hieradata/role/cache/2layer.yaml b/modules/role/spec/fixtures/hieradata/role/cache/2layer.yaml new file mode 100644 index 0000000..680c6dd --- /dev/null +++ b/modules/role/spec/fixtures/hieradata/role/cache/2layer.yaml @@ -0,0 +1 @@ +cache::cluster: 'fake_2layer_cache_cluster' diff --git a/modules/role/spec/fixtures/hieradata/role/cache/base.yaml b/modules/role/spec/fixtures/hieradata/role/cache/base.yaml new file mode 100644 index 0000000..712eef5 --- /dev/null +++ b/modules/role/spec/fixtures/hieradata/role/cache/base.yaml @@ -0,0 +1 @@ +cache::cluster: 'fake_base_cache_cluster' diff --git a/modules/role/spec/fixtures/hieradata/role/cache/kafka.yaml b/modules/role/spec/fixtures/hieradata/role/cache/kafka.yaml new file mode 100644 index 0000000..7dda36c --- /dev/null +++ b/modules/role/spec/fixtures/hieradata/role/cache/kafka.yaml @@ -0,0 +1 @@ +role::cache::kafka::webrequest::topic: '' diff --git a/modules/role/spec/fixtures/hieradata/role/cache/maps.yaml b/modules/role/spec/fixtures/hieradata/role/cache/maps.yaml new file mode 100644 index 0000000..3794b91 --- /dev/null +++ b/modules/role/spec/fixtures/hieradata/role/cache/maps.yaml @@ -0,0 +1,10 @@ +cache::cluster: maps +cache::maps::apps: + kartotherian: + route: eqiad + backends: + eqiad: [127.0.0.1] + codfw: [127.0.0.1] +cache::maps::nodes: + eqiad: [127.0.0.1] + codfw: [127.0.0.1] diff --git a/modules/role/spec/fixtures/hieradata/role/cache/misc.yaml b/modules/role/spec/fixtures/hieradata/role/cache/misc.yaml new file mode 100644 index 0000000..76983ff --- /dev/null +++ b/modules/role/spec/fixtures/hieradata/role/cache/misc.yaml @@ -0,0 +1 @@ +cache::cluster: misc diff --git a/modules/role/spec/fixtures/hieradata/role/cache/text.yaml b/modules/role/spec/fixtures/hieradata/role/cache/text.yaml new file mode 100644 index 0000000..5f397a6 --- /dev/null +++ b/modules/role/spec/fixtures/hieradata/role/cache/text.yaml @@ -0,0 +1,18 @@ +cache::cluster: text +cache::text::apps: + api: &appdef + route: eqiad + backends: + eqiad: [127.0.0.1] + codfw: [127.0.0.1] + appservers: *appdef + appservers_debug: *appdef + rendering: *appdef + security_audit: *appdef + # Services + restbase: *appdef + cxserver: *appdef + citoid: *appdef +cache::text::nodes: + eqiad: [127.0.0.1] + codfw: [127.0.0.1] diff --git a/modules/role/spec/fixtures/hieradata/role/cache/upload.yaml b/modules/role/spec/fixtures/hieradata/role/cache/upload.yaml new file mode 100644 index 0000000..82cb567 --- /dev/null +++ b/modules/role/spec/fixtures/hieradata/role/cache/upload.yaml @@ -0,0 +1,13 @@ +cache::cluster: upload +cache::upload::apps: + swift: + route: eqiad + backends: + eqiad: 127.0.0.1 + swift_thumbs: + route: eqiad + backends: + eqiad: 127.0.0.1 +cache::upload::nodes: + codfw: [127.0.0.1] + eqiad: [127.0.0.1] diff --git a/modules/role/spec/fixtures/hieradata/role/ceilometer.yaml b/modules/role/spec/fixtures/hieradata/role/ceilometer.yaml new file mode 100644 index 0000000..65841a8 --- /dev/null +++ b/modules/role/spec/fixtures/hieradata/role/ceilometer.yaml @@ -0,0 +1,5 @@ +labs_keystone_host: "keystone_host" +labs_nova_controller: "nova_controller" +labs_nova_api_host: "nova_api_host" +labs_nova_network_host: "nova_network_host" +status_wiki_host_master: "status_wiki_host_master" diff --git a/modules/role/spec/fixtures/hieradata/role/dataset.yaml b/modules/role/spec/fixtures/hieradata/role/dataset.yaml new file mode 100644 index 0000000..299c824 --- /dev/null +++ b/modules/role/spec/fixtures/hieradata/role/dataset.yaml @@ -0,0 +1,2 @@ +dataset_clients_snapshots: ['snapshot_01'] +dataset_clients_other: ['snapshot_02'] diff --git a/modules/role/spec/fixtures/hieradata/role/deployment.yaml b/modules/role/spec/fixtures/hieradata/role/deployment.yaml new file mode 100644 index 0000000..a702ad1 --- /dev/null +++ b/modules/role/spec/fixtures/hieradata/role/deployment.yaml @@ -0,0 +1,12 @@ +mediawiki_memcached_servers: ['memcached_01'] +mediawiki::redis_servers::eqiad: + shard01: + host: 127.0.0.1 + port: 6379 + shard02: + host: 127.0.0.1 + port: 6380 +role::deployment::repo_config: + test/gerrit: + upstream: https://gerrit.example.org/r/test/gerrit.git + checkout_submodules: true diff --git a/modules/role/spec/fixtures/hieradata/role/elasticsearch.yaml b/modules/role/spec/fixtures/hieradata/role/elasticsearch.yaml new file mode 100644 index 0000000..c5e3152 --- /dev/null +++ b/modules/role/spec/fixtures/hieradata/role/elasticsearch.yaml @@ -0,0 +1,4 @@ +elasticsearch::cluster_hosts: [] +elasticsearch::cluster_name: 'rspec_unit_cluster' + +elasticsearch::rack: z0 diff --git a/modules/role/spec/fixtures/hieradata/role/ganglia.yaml b/modules/role/spec/fixtures/hieradata/role/ganglia.yaml new file mode 100644 index 0000000..b1223cf --- /dev/null +++ b/modules/role/spec/fixtures/hieradata/role/ganglia.yaml @@ -0,0 +1,12 @@ +ganglia_aggregators: ganglia_aggregator:9649 +ganglia_clusters: + decommissioned: + name: 'Decommissioned servers' + id: 1 + sites: {} + cluster_D: + name: 'Cluster D' + id: 2 + sites: + eqiad: {} + codfw: {} diff --git a/modules/role/spec/fixtures/hieradata/role/gerrit/server.yaml b/modules/role/spec/fixtures/hieradata/role/gerrit/server.yaml new file mode 100644 index 0000000..683a199 --- /dev/null +++ b/modules/role/spec/fixtures/hieradata/role/gerrit/server.yaml @@ -0,0 +1,2 @@ +role::gerrit::server::ipv4: '127.0.0.1' +gerrit::host: 'gerrit.example.org' diff --git a/modules/role/spec/fixtures/hieradata/role/grafana/base.yaml b/modules/role/spec/fixtures/hieradata/role/grafana/base.yaml new file mode 100644 index 0000000..b39ce8b --- /dev/null +++ b/modules/role/spec/fixtures/hieradata/role/grafana/base.yaml @@ -0,0 +1,6 @@ +role::grafana::base::readonly_domain: 'grafana.example.org' +role::grafana::base::admin_domain: 'grafana-admin.example.org' +role::grafana::base::secret_key: 'grafanaSecret' +role::grafana::base::admin_password: 'grafanaAdminPassword' +role::grafana::base::ldap_editor_description: 'Grafana ldap editor description' +role::grafana::base::ldap_editor_groups: [] diff --git a/modules/role/spec/fixtures/hieradata/role/kafka/analytics/burrow.yaml b/modules/role/spec/fixtures/hieradata/role/kafka/analytics/burrow.yaml new file mode 100644 index 0000000..62f87e1 --- /dev/null +++ b/modules/role/spec/fixtures/hieradata/role/kafka/analytics/burrow.yaml @@ -0,0 +1,3 @@ +burrow::consumer_groups: + - eventlogging_00 + - eventlogging_01 diff --git a/modules/role/spec/fixtures/hieradata/role/labs.yaml b/modules/role/spec/fixtures/hieradata/role/labs.yaml new file mode 100644 index 0000000..2055694 --- /dev/null +++ b/modules/role/spec/fixtures/hieradata/role/labs.yaml @@ -0,0 +1,22 @@ +active_labstore_host: 'labstore_01' + +labs_certmanager_hostname: "labscertmanager.example.org" +#labs_global_puppet_master: "puppetmaster.wmflabs.example.org" +labs_nova_controller: "nova_controller" +#labs_tld: "wmflabs.example.org" +labs_private_ips_reverse_dns: "0.10.in-addr.arpa" +labs_horizon_host: 'horizon.example.org' +labs_puppet_master: 'labspuppetmaster.example.org' + +novaconfig: + fixed_range: 10.0.42.0/24 + +role::labs::redirector::default_url: 'http://example.org' +role::labs::redirector::redirects: [] + +role::labs::novaproxy::active_proxy: + - novaproxy_01 +role::labs::novaproxy::all_proxies: + - novaproxy_01 + +#saltmaster: puppetmaster_labs diff --git a/modules/role/spec/fixtures/hieradata/role/labs/dnsrecursor.yaml b/modules/role/spec/fixtures/hieradata/role/labs/dnsrecursor.yaml new file mode 100644 index 0000000..240e7f1 --- /dev/null +++ b/modules/role/spec/fixtures/hieradata/role/labs/dnsrecursor.yaml @@ -0,0 +1,2 @@ +dnsrecursor::labsaliaser::extra_records: + extra1.example.org.: 127.0.0.1 diff --git a/modules/role/spec/fixtures/hieradata/role/labs/nfs.yaml b/modules/role/spec/fixtures/hieradata/role/labs/nfs.yaml new file mode 100644 index 0000000..be098ab --- /dev/null +++ b/modules/role/spec/fixtures/hieradata/role/labs/nfs.yaml @@ -0,0 +1,4 @@ +role::labs::nfs::misc::dump_servers_ips: + - 127.0.0.1 +statistics_servers: + - stats_01 diff --git a/modules/role/spec/fixtures/hieradata/role/labs/ores.yaml b/modules/role/spec/fixtures/hieradata/role/labs/ores.yaml new file mode 100644 index 0000000..93a66c6 --- /dev/null +++ b/modules/role/spec/fixtures/hieradata/role/labs/ores.yaml @@ -0,0 +1,4 @@ +scap::deployment_server: 'ores_deploy_server' + +role::labs::ores::lb::realservers: ['ores_real_1'] +role::labs::ores::redisproxy::server: 'redis_proxy' diff --git a/modules/role/spec/fixtures/hieradata/role/labs/tools.yaml b/modules/role/spec/fixtures/hieradata/role/labs/tools.yaml new file mode 100644 index 0000000..746907a --- /dev/null +++ b/modules/role/spec/fixtures/hieradata/role/labs/tools.yaml @@ -0,0 +1,15 @@ +active_proxy_host: 'active_proxy_host' +active_redis: 'active_redis_host' + +gridengine::gridmaster: 'labs_gridmaster_host' + +# role::labs::tools::proxy at least +k8s_master: 'k8s_master_for_tools' +flannel::etcd_hosts: [] +k8s_infrastructure_users: + - name: 'proxy-infrastructure' + token: 'fake_token' + - name: 'client-infrastructure' + token: 'fake_token' + +active_cronrunner: 'tools_cron_host' diff --git a/modules/role/spec/fixtures/hieradata/role/labs/tools/mailrelay.yaml b/modules/role/spec/fixtures/hieradata/role/labs/tools/mailrelay.yaml new file mode 100644 index 0000000..0ccb0de --- /dev/null +++ b/modules/role/spec/fixtures/hieradata/role/labs/tools/mailrelay.yaml @@ -0,0 +1,2 @@ +toollabs::is_mail_relay: true +toollabs::external_hostname: 'external_hostname' diff --git a/modules/role/spec/fixtures/hieradata/role/lists.yaml b/modules/role/spec/fixtures/hieradata/role/lists.yaml new file mode 100644 index 0000000..51ea448 --- /dev/null +++ b/modules/role/spec/fixtures/hieradata/role/lists.yaml @@ -0,0 +1,3 @@ +mailman::lists_ip: [127.0.0.1] +mailman::server_ip: [127.0.0.1] +mailman::lists_servername: lists.example.org diff --git a/modules/role/spec/fixtures/hieradata/role/maps.yaml b/modules/role/spec/fixtures/hieradata/role/maps.yaml new file mode 100644 index 0000000..3a3c094 --- /dev/null +++ b/modules/role/spec/fixtures/hieradata/role/maps.yaml @@ -0,0 +1,7 @@ +maps::cassandra_kartotherian_pass : '' +maps::cassandra_tilerator_pass: '' +maps::cassandra_tileratorui_pass: '' + +maps::postgresql_kartotherian_pass: '' +maps::postgresql_tilerator_pass: '' +maps::postgresql_tileratorui_pass: '' diff --git a/modules/role/spec/fixtures/hieradata/role/maps/master.yaml b/modules/role/spec/fixtures/hieradata/role/maps/master.yaml new file mode 100644 index 0000000..27fb73a --- /dev/null +++ b/modules/role/spec/fixtures/hieradata/role/maps/master.yaml @@ -0,0 +1,4 @@ +maps::hosts: ['map01', 'map02'] + +maps::postgresql_osmimporter_pass: '' +maps::postgresql_osmupdater_pass: '' diff --git a/modules/role/spec/fixtures/hieradata/role/maps/server.yaml b/modules/role/spec/fixtures/hieradata/role/maps/server.yaml new file mode 100644 index 0000000..f77315c --- /dev/null +++ b/modules/role/spec/fixtures/hieradata/role/maps/server.yaml @@ -0,0 +1,2 @@ +cassandra::seeds: [ 127.0.0.1 ] +maps::redis_server: 'maps_redis_01' diff --git a/modules/role/spec/fixtures/hieradata/role/maps/slave.yaml b/modules/role/spec/fixtures/hieradata/role/maps/slave.yaml new file mode 100644 index 0000000..eecd5f9 --- /dev/null +++ b/modules/role/spec/fixtures/hieradata/role/maps/slave.yaml @@ -0,0 +1,2 @@ +postgresql::slave::master_server: 'maps_master_server' +postgresql::slave::replication_pass: '' diff --git a/modules/role/spec/fixtures/hieradata/role/mediawiki.yaml b/modules/role/spec/fixtures/hieradata/role/mediawiki.yaml new file mode 100644 index 0000000..f8f6201 --- /dev/null +++ b/modules/role/spec/fixtures/hieradata/role/mediawiki.yaml @@ -0,0 +1,12 @@ +mediawiki_memcached_servers: ['memcached_01'] +mediawiki::redis_servers::eqiad: + shard01: + host: 127.0.0.1 + port: 6379 + shard02: + host: 127.0.0.1 + port: 6380 + +# Roles parameters +role::mediawiki::appserver::root_password: '' +role::mediawiki::webserver::pool: apaches diff --git a/modules/role/spec/fixtures/hieradata/role/mediawiki/jobrunner.yaml b/modules/role/spec/fixtures/hieradata/role/mediawiki/jobrunner.yaml new file mode 100644 index 0000000..343c978 --- /dev/null +++ b/modules/role/spec/fixtures/hieradata/role/mediawiki/jobrunner.yaml @@ -0,0 +1,3 @@ +mediawiki::jobrunner::queue_servers: + - job_redisdb_01:6379 + - job_redisdb_02:6380 diff --git a/modules/role/spec/fixtures/hieradata/role/mediawiki/videoscaler.yaml b/modules/role/spec/fixtures/hieradata/role/mediawiki/videoscaler.yaml new file mode 100644 index 0000000..343c978 --- /dev/null +++ b/modules/role/spec/fixtures/hieradata/role/mediawiki/videoscaler.yaml @@ -0,0 +1,3 @@ +mediawiki::jobrunner::queue_servers: + - job_redisdb_01:6379 + - job_redisdb_02:6380 diff --git a/modules/role/spec/fixtures/hieradata/role/openldap/labs.yaml b/modules/role/spec/fixtures/hieradata/role/openldap/labs.yaml new file mode 100644 index 0000000..186bce0 --- /dev/null +++ b/modules/role/spec/fixtures/hieradata/role/openldap/labs.yaml @@ -0,0 +1,4 @@ +openldap::server_id: '' +openldap::suffix: '' +openldap::datadir: '' + diff --git a/modules/role/spec/fixtures/hieradata/role/ores/redis.yaml b/modules/role/spec/fixtures/hieradata/role/ores/redis.yaml new file mode 100644 index 0000000..21e168d --- /dev/null +++ b/modules/role/spec/fixtures/hieradata/role/ores/redis.yaml @@ -0,0 +1,4 @@ +ores::redis::password: '' +ores::redis::queue_maxmemory: '' +ores::redis::cache_maxmemory: '' +ores::redis::client_hosts: [] diff --git a/modules/role/spec/fixtures/hieradata/role/osm/master.yaml b/modules/role/spec/fixtures/hieradata/role/osm/master.yaml new file mode 100644 index 0000000..0129703 --- /dev/null +++ b/modules/role/spec/fixtures/hieradata/role/osm/master.yaml @@ -0,0 +1 @@ +osm::postgresql_osmupdater_pass: '' diff --git a/modules/role/spec/fixtures/hieradata/role/otrs/webserver.yaml b/modules/role/spec/fixtures/hieradata/role/otrs/webserver.yaml new file mode 100644 index 0000000..9e6d108 --- /dev/null +++ b/modules/role/spec/fixtures/hieradata/role/otrs/webserver.yaml @@ -0,0 +1,4 @@ +otrs::otrs_database_host: 'otrsdbhost' +otrs::otrs_database_name: 'otrsdbname' +cache::misc::nodes: + eqiad: ['cache_misc_00'] diff --git a/modules/role/spec/fixtures/hieradata/role/phabricator/labs.yaml b/modules/role/spec/fixtures/hieradata/role/phabricator/labs.yaml new file mode 100644 index 0000000..69ca3c3 --- /dev/null +++ b/modules/role/spec/fixtures/hieradata/role/phabricator/labs.yaml @@ -0,0 +1,2 @@ +phabricator_active_server: '' +scap::deployment_server: 'phabricator_labs_deploy_server' diff --git a/modules/role/spec/fixtures/hieradata/role/phabricator/main.yaml b/modules/role/spec/fixtures/hieradata/role/phabricator/main.yaml new file mode 100644 index 0000000..69a7821 --- /dev/null +++ b/modules/role/spec/fixtures/hieradata/role/phabricator/main.yaml @@ -0,0 +1,6 @@ +phabricator_active_server: 'phabricator_01' +phabricator_servers: + - phabricator_01 + - phabricator_02 +cache::misc::nodes: + eqiad: ['cache_misc_00'] diff --git a/modules/role/spec/fixtures/hieradata/role/programdashboard.yaml b/modules/role/spec/fixtures/hieradata/role/programdashboard.yaml new file mode 100644 index 0000000..cb21b49 --- /dev/null +++ b/modules/role/spec/fixtures/hieradata/role/programdashboard.yaml @@ -0,0 +1,8 @@ +programdashboard::server_name: 'program-dashboard.example.org' +programdashboard::server_admin: 'educat...@example.org' + +programdashboard::app::directory: /srv/programdashboard +programdashboard::app::environment: production +programdashboard::app::owner: programdashboard +programdashboard::app::group: programdashboard +programdashboard::app::dependencies: [] diff --git a/modules/role/spec/fixtures/hieradata/role/prometheus/mysqld_exporter.yaml b/modules/role/spec/fixtures/hieradata/role/prometheus/mysqld_exporter.yaml new file mode 100644 index 0000000..c539068 --- /dev/null +++ b/modules/role/spec/fixtures/hieradata/role/prometheus/mysqld_exporter.yaml @@ -0,0 +1 @@ +prometheus_nodes: [] diff --git a/modules/role/spec/fixtures/hieradata/role/prometheus/node_exporter.yaml b/modules/role/spec/fixtures/hieradata/role/prometheus/node_exporter.yaml new file mode 100644 index 0000000..c539068 --- /dev/null +++ b/modules/role/spec/fixtures/hieradata/role/prometheus/node_exporter.yaml @@ -0,0 +1 @@ +prometheus_nodes: [] diff --git a/modules/role/spec/fixtures/hieradata/role/prometheus/tools.yaml b/modules/role/spec/fixtures/hieradata/role/prometheus/tools.yaml new file mode 100644 index 0000000..19a572a --- /dev/null +++ b/modules/role/spec/fixtures/hieradata/role/prometheus/tools.yaml @@ -0,0 +1,4 @@ +k8s::master_host: 'prometheus_k8s_master_host' +k8s_infrastructure_users: + - name: 'prometheus' + token: 'fake_token_for_prometheus' diff --git a/modules/role/spec/fixtures/hieradata/role/puppetmaster.yaml b/modules/role/spec/fixtures/hieradata/role/puppetmaster.yaml new file mode 100644 index 0000000..3713361 --- /dev/null +++ b/modules/role/spec/fixtures/hieradata/role/puppetmaster.yaml @@ -0,0 +1,5 @@ +base_config: '' +puppetmaster::servers: + puppetmaster.example.org: + - { worker: puppetworker1.example.org, loadfactor: 5} + - { worker: puppetworker2.example.org, loadfactor: 5, offline: true} diff --git a/modules/role/spec/fixtures/hieradata/role/puppetmaster/common.yaml b/modules/role/spec/fixtures/hieradata/role/puppetmaster/common.yaml new file mode 100644 index 0000000..67ee357 --- /dev/null +++ b/modules/role/spec/fixtures/hieradata/role/puppetmaster/common.yaml @@ -0,0 +1 @@ +role::puppetmaster::common::base_config: {} diff --git a/modules/role/spec/fixtures/hieradata/role/puppetmaster/puppetdb.yaml b/modules/role/spec/fixtures/hieradata/role/puppetmaster/puppetdb.yaml new file mode 100644 index 0000000..ccc542b --- /dev/null +++ b/modules/role/spec/fixtures/hieradata/role/puppetmaster/puppetdb.yaml @@ -0,0 +1,4 @@ +puppetmaster::puppetdb::master: 'puppetdb_master' +puppetmaster::puppetdb::slaves: ['puppetdb_slave_01'] +puppetdb::password::replication: '' +puppetdb::password::rw: '' diff --git a/modules/role/spec/fixtures/hieradata/role/salt/masters/labs.yaml b/modules/role/spec/fixtures/hieradata/role/salt/masters/labs.yaml new file mode 100644 index 0000000..21bc0f3 --- /dev/null +++ b/modules/role/spec/fixtures/hieradata/role/salt/masters/labs.yaml @@ -0,0 +1,6 @@ +labs_keystone_host: 'keystone_host' +labs_nova_api_host: 'nova_api_host' +labs_nova_controller: 'nova_controller' +labs_nova_network_host: 'nova_network_host' +labs_puppet_master: 'puppet_master' +status_wiki_host_master: 'wiki_host_master' diff --git a/modules/role/spec/fixtures/hieradata/role/snapshot.yaml b/modules/role/spec/fixtures/hieradata/role/snapshot.yaml new file mode 100644 index 0000000..39873eb --- /dev/null +++ b/modules/role/spec/fixtures/hieradata/role/snapshot.yaml @@ -0,0 +1,8 @@ +mediawiki_memcached_servers: ['memcached_01'] +mediawiki::redis_servers::eqiad: + shard01: + host: 127.0.0.1 + port: 6379 + shard02: + host: 127.0.0.1 + port: 6380 diff --git a/modules/role/spec/fixtures/hieradata/role/striker/web.yaml b/modules/role/spec/fixtures/hieradata/role/striker/web.yaml new file mode 100644 index 0000000..4a6bb00 --- /dev/null +++ b/modules/role/spec/fixtures/hieradata/role/striker/web.yaml @@ -0,0 +1,5 @@ +striker::apache::server_name: 'striker.example.org' +striker::apache::docroot: '' +striker::apache::servers: [] +striker::uwsgi::port: 1234 +striker::uwsgi::config: '' diff --git a/modules/role/spec/fixtures/hieradata/role/swift/proxy.yaml b/modules/role/spec/fixtures/hieradata/role/swift/proxy.yaml new file mode 100644 index 0000000..66e0357 --- /dev/null +++ b/modules/role/spec/fixtures/hieradata/role/swift/proxy.yaml @@ -0,0 +1,10 @@ +swift::hash_path_suffix: '' +swift::proxy::proxy_service_host: '' +swift::proxy::rewrite_thumb_server: '' +swift::proxy::shard_container_list: [] +swift::proxy::rewrite_account: 'rewrite_account' +swift::params::accounts: + rewrite_account: # username + user: 'rewriter' + account_name: '' +swift::proxyhosts: [] diff --git a/modules/role/spec/fixtures/hieradata/role/swift/storage.yaml b/modules/role/spec/fixtures/hieradata/role/swift/storage.yaml new file mode 100644 index 0000000..52dd582 --- /dev/null +++ b/modules/role/spec/fixtures/hieradata/role/swift/storage.yaml @@ -0,0 +1,5 @@ +swift::hash_path_suffix: '' +swift_storage_drives: [] +swift::storagehosts: [] +swift::proxyhosts: [] +swift_aux_partitions: [] diff --git a/modules/role/spec/fixtures/hieradata/role/thumbor.yaml b/modules/role/spec/fixtures/hieradata/role/thumbor.yaml new file mode 100644 index 0000000..43febf3 --- /dev/null +++ b/modules/role/spec/fixtures/hieradata/role/thumbor.yaml @@ -0,0 +1,3 @@ +swift::proxy::shard_container_list: + - global-math-render + - wikipedia-public diff --git a/modules/role/spec/fixtures/hieradata/role/toollabs.yaml b/modules/role/spec/fixtures/hieradata/role/toollabs.yaml new file mode 100644 index 0000000..21ca7ad --- /dev/null +++ b/modules/role/spec/fixtures/hieradata/role/toollabs.yaml @@ -0,0 +1,7 @@ +toollabs::checker_hosts: + - tools_checker_01 + - tools_checker_02 + +toollabs::proxy::proxies: + - tools_proxy_01 + - tools_proxy_02 diff --git a/modules/role/spec/fixtures/hieradata/role/toollabs/clush.yaml b/modules/role/spec/fixtures/hieradata/role/toollabs/clush.yaml new file mode 100644 index 0000000..f5ba5f4 --- /dev/null +++ b/modules/role/spec/fixtures/hieradata/role/toollabs/clush.yaml @@ -0,0 +1 @@ +role::toollabs::clush::target::master: 'toolabs_clush_master' diff --git a/modules/role/spec/fixtures/hieradata/role/toollabs/docker/builder.yaml b/modules/role/spec/fixtures/hieradata/role/toollabs/docker/builder.yaml new file mode 100644 index 0000000..3b60962 --- /dev/null +++ b/modules/role/spec/fixtures/hieradata/role/toollabs/docker/builder.yaml @@ -0,0 +1,3 @@ +docker::registry: 'docker_registry' +docker::username: 'docker_username' +docker::password: 'docker_password' diff --git a/modules/role/spec/fixtures/hieradata/role/toollabs/docker/registry.yaml b/modules/role/spec/fixtures/hieradata/role/toollabs/docker/registry.yaml new file mode 100644 index 0000000..8b8a30e --- /dev/null +++ b/modules/role/spec/fixtures/hieradata/role/toollabs/docker/registry.yaml @@ -0,0 +1,4 @@ +docker::builder_host: 'docker_builder_host' +docker::username: 'docker_username' +docker::password: 'docker_password' +docker::password_hash: 'docker_password_hash' diff --git a/modules/role/spec/fixtures/hieradata/role/toollabs/elasticsearch.yaml b/modules/role/spec/fixtures/hieradata/role/toollabs/elasticsearch.yaml new file mode 100644 index 0000000..15c2ff5 --- /dev/null +++ b/modules/role/spec/fixtures/hieradata/role/toollabs/elasticsearch.yaml @@ -0,0 +1,3 @@ +elasticsearch::cluster_name: 'toollabs_elasticsearch_cluster' +elasticsearch::unicast_hosts: + - tools_es_01 diff --git a/modules/role/spec/fixtures/hieradata/role/toollabs/etcd.yaml b/modules/role/spec/fixtures/hieradata/role/toollabs/etcd.yaml new file mode 100644 index 0000000..8f7e503 --- /dev/null +++ b/modules/role/spec/fixtures/hieradata/role/toollabs/etcd.yaml @@ -0,0 +1,16 @@ +flannel::etcd_hosts: + - tools_flannel_etcd_01 + - tools_flannel_etcd_02 + +k8s::bastion_hosts: + - tools_bastion_01 + - tools_bastion_02 +k8s::etcd_hosts: + - tools_k8s_etcd_01 + - tools_k8s_etcd_02 +k8s::master_hosts: + - tools_k8s_master_01 + - tools_k8s_master_02 +k8s::worker_hosts: + - tools_worker_01 + - tools_worker_02 diff --git a/modules/role/spec/fixtures/hieradata/role/toollabs/k8s/bastion.yaml b/modules/role/spec/fixtures/hieradata/role/toollabs/k8s/bastion.yaml new file mode 100644 index 0000000..effbe74 --- /dev/null +++ b/modules/role/spec/fixtures/hieradata/role/toollabs/k8s/bastion.yaml @@ -0,0 +1,4 @@ +k8s::master_host: 'master' +k8s_infrastructure_users: + - name: 'client-infrastructure' + token: 'fake_token_for-client-infrastructure' diff --git a/modules/role/spec/fixtures/hieradata/role/toollabs/k8s/master.yaml b/modules/role/spec/fixtures/hieradata/role/toollabs/k8s/master.yaml new file mode 100644 index 0000000..8fc3532 --- /dev/null +++ b/modules/role/spec/fixtures/hieradata/role/toollabs/k8s/master.yaml @@ -0,0 +1,3 @@ +k8s::etcd_hosts: [] +docker::registry: '' +k8s_infrastructure_users: [] diff --git a/modules/role/spec/fixtures/hieradata/role/toollabs/k8s/webproxy.yaml b/modules/role/spec/fixtures/hieradata/role/toollabs/k8s/webproxy.yaml new file mode 100644 index 0000000..7b300a4 --- /dev/null +++ b/modules/role/spec/fixtures/hieradata/role/toollabs/k8s/webproxy.yaml @@ -0,0 +1,8 @@ +k8s_master: 'master_for_toollabs_webproxy' +k8s_infrastructure_users: + - name: 'client-infrastructure' + token: 'fake_token_for-client-infrastructure' + - name: 'proxy-infrastructure' + token: 'fake_token_for-proxy-infrastructure' +flannel::etcd_hosts: [] +active_proxy_host: '' diff --git a/modules/role/spec/fixtures/hieradata/role/toollabs/k8s/worker.yaml b/modules/role/spec/fixtures/hieradata/role/toollabs/k8s/worker.yaml new file mode 100644 index 0000000..b8f9398 --- /dev/null +++ b/modules/role/spec/fixtures/hieradata/role/toollabs/k8s/worker.yaml @@ -0,0 +1,6 @@ +docker::builder_host: 'docker_builder_host' +k8s::version: '' +k8s::master_host: 'k8s_master_for_toolslabs_worker' +k8s_infrastructure_users: + - name: 'client-infrastructure' + token: 'fake_token_for_client-infrastructure' diff --git a/modules/role/spec/fixtures/hieradata/role/toollabs/logging/sender.yaml b/modules/role/spec/fixtures/hieradata/role/toollabs/logging/sender.yaml new file mode 100644 index 0000000..84f64e8 --- /dev/null +++ b/modules/role/spec/fixtures/hieradata/role/toollabs/logging/sender.yaml @@ -0,0 +1 @@ +role::toollabs::logging::sender::centralserver_ips: [] diff --git a/modules/role/spec/fixtures/hieradata/role/yubiauth/server.yaml b/modules/role/spec/fixtures/hieradata/role/yubiauth/server.yaml new file mode 100644 index 0000000..e97e402 --- /dev/null +++ b/modules/role/spec/fixtures/hieradata/role/yubiauth/server.yaml @@ -0,0 +1,2 @@ +yubiauth_servers: ['yubi1', 'yubi2'] +yubiauth_server_primary: 'yubi1' diff --git a/modules/role/spec/fixtures/hieradata/role/zuul.yaml b/modules/role/spec/fixtures/hieradata/role/zuul.yaml new file mode 100644 index 0000000..ea205b2 --- /dev/null +++ b/modules/role/spec/fixtures/hieradata/role/zuul.yaml @@ -0,0 +1,23 @@ +zuul::common: + gerrit_server: gerrit.wikimedia.org + gerrit_user: jenkins-bot + url_pattern: 'https://integration.wikimedia.org/ci/job/{job.name}/{build.number}/console' + status_url: 'https://integration.wikimedia.org/zuul/' + +zuul::server: + # ferm defaults to ACCEPT on loopback: + gearman_server: 127.0.0.1 + config_git_branch: master + gearman_server_start: true + jenkins_server: http://127.0.0.1:8080/ci + jenkins_user: zuul-bot + # FIXME use lookup? + statsd_host: statsd.eqiad.wmnet + +zuul::merger: + gearman_server: '208.80.154.135' # gallium.wikimedia.org + gerrit_ssh_key_file: 'ssh/ci/jenkins-bot_gerrit_id_rsa' + git_dir: '/srv/ssd/zuul/git' + git_email: "zuul-merger@%{::hostname}" + git_name: 'Wikimedia Zuul Merger' + zuul_url: "git://%{::fqdn}" diff --git a/modules/role/spec/fixtures/manifests/site.pp b/modules/role/spec/fixtures/manifests/site.pp new file mode 100644 index 0000000..ba62e88 --- /dev/null +++ b/modules/role/spec/fixtures/manifests/site.pp @@ -0,0 +1,36 @@ +## Lot of manifests do not explicitly require ::base and we mock it anyway +require_package('git') +#require_package('openssh-server') + +if $::realm == 'production' { + include standard + + # From base monitoring. Required by role::cache::* + file { '/usr/lib/nagios/plugins/check-fresh-files-in-dir.py': } + file { '/etc/puppet/puppet.conf': } +} else { + include role::labs::instance + mount { '/data/project': } +} + +# Usually comes from base but it is not included on labs +# Exec[apt-get update] +include apt + +# Workaround for puppet on Mac OS X raising: +# +# NoMethodError: undefined method `groups' for nil:NilClass +# https://tickets.puppetlabs.com/browse/PUP-1547 +User { + provider => 'useradd', +} + +# FIXME +class role::statsite { +} + +class privateexim::aliases::private { +} +class privateexim::listserve { + $mailing_lists = [] +} diff --git a/modules/role/spec/fixtures/modules/grub/manifests/bootparam.pp b/modules/role/spec/fixtures/modules/grub/manifests/bootparam.pp new file mode 100644 index 0000000..ec176a8 --- /dev/null +++ b/modules/role/spec/fixtures/modules/grub/manifests/bootparam.pp @@ -0,0 +1,11 @@ +# rspec would fail with: +# error during compilation: not supported on systems running an old augeas +# +# Would be resolved by bumping augeas in Gemfile +define grub::bootparam( + $ensure=present, + $key=$title, + $value=undef, + $glob=true, +) { +} diff --git a/modules/role/spec/fixtures/modules/grub/manifests/defaults.pp b/modules/role/spec/fixtures/modules/grub/manifests/defaults.pp new file mode 100644 index 0000000..a5430c9 --- /dev/null +++ b/modules/role/spec/fixtures/modules/grub/manifests/defaults.pp @@ -0,0 +1,2 @@ +class grub::defaults { +} diff --git a/modules/role/spec/fixtures/modules/passwords/manifests/init.pp b/modules/role/spec/fixtures/modules/passwords/manifests/init.pp new file mode 100644 index 0000000..410ed1d --- /dev/null +++ b/modules/role/spec/fixtures/modules/passwords/manifests/init.pp @@ -0,0 +1,39 @@ +class passwords::bacula {} +class passwords::etherpad_lite {} +class passwords::exim {} +class passwords::geoip {} +class passwords::gerrit {} +class passwords::grafana::labs {} +class passwords::grafana::production {} +class passwords::graphite {} +class passwords::ldap::production {} +class passwords::ldap::wmf_cluster {} +class passwords::misc::contint::jenkins {} +class passwords::misc::private_static_site {} +class passwords::misc::rt {} +class passwords::misc::scripts {} +class passwords::mysql::etherpad_lite {} +class passwords::mysql::iegreview {} +class passwords::mysql::labsdb {} +class passwords::mysql::otrs{} +class passwords::mysql::phabricator {} +class passwords::mysql::research {} +class passwords::nodepool {} +class passwords::openldap::corp {} +class passwords::openldap::labs {} +class passwords::openldap::labtest {} +class passwords::osm {} +class passwords::phabricator {} +class passwords::postgres {} +class passwords::prometheus {} +class passwords::puppet::database {} +class passwords::racktables {} +class passwords::rancid {} +class passwords::redis {} +class passwords::root {} +class passwords::servermon {} +class passwords::statistics::user {} +class passwords::tendril {} +class passwords::testreduce::mysql {} +class passwords::tor {} +class passwords::yubiauth {} diff --git a/modules/role/spec/fixtures/modules/standard/manifests/init.pp b/modules/role/spec/fixtures/modules/standard/manifests/init.pp new file mode 100644 index 0000000..a3fb215 --- /dev/null +++ b/modules/role/spec/fixtures/modules/standard/manifests/init.pp @@ -0,0 +1,3 @@ +class standard { + service { 'ganglia-monitor':} +} diff --git a/modules/role/spec/integration/smoke_compile_roles_spec.rb b/modules/role/spec/integration/smoke_compile_roles_spec.rb new file mode 100644 index 0000000..ffb7f65 --- /dev/null +++ b/modules/role/spec/integration/smoke_compile_roles_spec.rb @@ -0,0 +1,215 @@ +require 'spec_helper' +require 'pathname' + +manifests_dir = Pathname.new(File.expand_path( + File.dirname(__FILE__) + '/../../manifests')) + +# Classes to be used on labs instances +# We default to 'production' realm +labs_roles = [ + 'role::ci::castor::server', + 'role::ci::jenkins_access', + 'role::ci::slave::browsertests', + 'role::ci::slave::labs', + 'role::ci::slave::localbrowser', + 'role::labs::puppetmaster', + 'role::phragile::labs', + 'role::phabricator::labs', + 'role::toollabs::clush::master', +] +labs_roles_start_with = [ + 'role::beta', + 'role::labs::instance', + 'role::labs::ores', + 'role::labs::tools', + 'role::toollabs', +] + +bypass_roles = [ + # Not a class but a define: + 'role::cache::instances', + # pending_deletion + # https://gerrit.wikimedia.org/r/#/c/301076/ + 'role::mha::manager', + 'role::mha::node', + # Deprecated + 'role::deprecated::mediawiki', +] + +pending_reasons = { + 'role::analytics_cluster::rsyncd' => 'Lacks rsync::server (Exec[compile fragments])', + 'role::analytics_cluster::oozie::server' => 'Nrpe depends on cdh::hive::metastore', + + 'role::beta::bastion' => 'Miss Git::clone[operations/mediawiki-config', + + 'role::ceilometer::compute' => 'Miss ceilometer.conf.erb', + 'role::ceilometer::controller' => 'Miss ceilometer.conf.erb', + + 'role::deployment::mediawiki' => 'Should be Trusty. Lacks systemd on Jessie', + 'role::deployment::salt_masters' => 'Miss File[/srv/salt]', + 'role::deployment::server' => 'Should be Trusty. Lacks systemd on Jessie', + + 'role::labs::mediawiki_vagrant' => 'Ubuntu trusty not supported by test suite', + 'role::labs::vagrant_lxc' => 'Ubuntu trusty not supported by test suite', + 'role::striker::web' => 'Ubuntu trusty not supported by test suite', + + 'role::toollabs::docker::builder' => 'Package[docker-engine] not defined!', + + # Pending /manifests/role/mariadb.pp to move to a role module + 'role::labs::db::master' => 'role::mariadb::grants not under modules/', + 'role::labs::db::replica' => 'role::mariadb::grants not under modules/', + 'role::labs::db::slave' => 'role::mariadb::grants not under modules/', + 'role::labs::dns' => 'role::mariadb::grants not under modules/', + + # Classes names are suffixed with '::server' + 'role::labs::openstack::designate' => 'Not in autoloader layout', + 'role::labs::openstack::keystone' => 'Not in autoloader layout', + 'role::labs::openstack::glance' => 'Not in autoloader layout', + 'role::labs::openstack::nova' => 'Not in autoloader layout', + + 'role::puppetmaster::backend' => 'Miss Exec[compile puppet.conf]', + 'role::puppetmaster::frontend' => 'Miss Exec[compile puppet.conf]', + + 'role::salt::masters::labs' => 'Class default to "juno" version"', + 'role::snapshot::deployment' => 'Miss datasets user/groups T113467', + 'role::swift::stats_reporter' => 'Miss package[python-swiftclient]', +} + +def fixtures_fact(role_name) + # mediawiki/appserver/api.yaml + hiera_role_dir = role_name.gsub(/::/, '/') + # mediawiki/appserver.yaml + hiera_parent_dir = Pathname.new(hiera_role_dir).parent.to_s + # mediawiki.yaml + hiera_gparent_dir = Pathname.new(hiera_role_dir).parent.parent.to_s + facts = { + # Paths for hiera lookup + :wmf_hiera_role_dir => hiera_role_dir, + :wmf_hiera_role_parent_dir => hiera_parent_dir, + :wmf_hiera_role_gparent_dir => hiera_gparent_dir, + + :initsystem => 'systemd', + :interfaces => 'eth0,lo', + :ipaddress => '127.0.0.1', + :ipv4 => '127.0.0.1', + + # Debian jessie + :lsbdistcodename => 'jessie', + :lsbdistid => 'Debian', + :lsbdistrelease => '8.5', + :operatingsystem => 'Debian', + +# # Ubuntu trusty +# :lsbdistcodename => 'trusty', +# :lsbdistid => 'Ubuntu', +# :lsbdistrelease => '14.04', +# :operatingsystem => 'Ubuntu', +# + :mail_smarthost => ['smtp1.example.org'], + :memorysize_mb => 1024, + :memoryfree => '512 MB', + :nameservers => ['127.0.0.1'], + :processorcount => 1, + :realm => 'production', + :site => 'eqiad', + :uniqueid => '00000000', + } + return facts +end + +Dir.glob(File.join(manifests_dir, '**/*.pp')).sort.each do |role_file| + relative = Pathname.new(role_file).relative_path_from(manifests_dir) + role_name = 'role::' + relative.to_s.gsub(/(\/|\.pp$)/, {'/' => '::', '\.pp' => ''}) + + next if bypass_roles.include?(role_name) + + describe role_name, :type => :class do + + facts = fixtures_fact(role_name) + + before(:each) { + if pending_reasons.keys.include?(role_name) + pending(pending_reasons[role_name]) + end + # Per doc, accepting |args| is mandatory + Puppet::Parser::Functions.newfunction(:secret, :type => :rvalue) { |args| + return 'stub_secret' + } + Puppet::Parser::Functions.newfunction(:ipresolve, :type => :rvalue) { |args| + return '127.0.0.1' + } + Puppet::Parser::Functions.newfunction(:generate, :type => :rvalue) { |args| + return '' + } + Puppet::Parser::Functions.newfunction(:kafka_config, :type => :rvalue) { |args| + return { + 'name' => 'fake_kafka_cluster', + 'brokers' => { + 'string' => '', + 'array' => [], + }, + 'zookeeper' => { + 'url' => '', + 'hosts' => [], + } + } + } + } + + let(:pre_condition) { + # This is terrible. Antoine "hashar" Musso + conds = [] + case role_name + + # role::analytics_cluster + # Most are apparently not entry points + when /^role::analytics_cluster::(druid::hadoop|hadoop::(balancer|logstash)|mysql_password|refinery.*)$/ + conds << 'include role::analytics_cluster::hadoop::client' + + when 'role::analytics_cluster::rsyncd' + conds << 'include role::analytics_cluster::client' + + when 'role::bastionhost::twofa', 'role::phabricator::main' + conds << 'package { "openssh-server": }' + + # role::cache + when /^role::cache::(2layer|base|kafka::webrequest)$/ + conds << "service { 'varnish-frontend': }" + when /^role::cache::kafka::(eventlogging|statsv)$/ + conds << 'service { "varnish": }' + when 'role::cache::kafka' + conds << 'include varnishkafka' + + when 'role::dataset::primary' + conds << 'user { "root": }' + + end + + } + + if labs_roles.include?(role_name) || role_name.start_with?(*labs_roles_start_with) + context "When applied on a labs instance" do + let(:facts) do + facts.merge({ :realm => 'labs' }) + end + it { is_expected.to compile } + end + elsif role_name == 'role::lvs::balancer' + context 'When hostname is lvs1010' do + let(:facts) do + facts.merge({ :hostname => 'lvs1010' }) + end + it { is_expected.to compile } + end + elsif role_name == 'role::puppetmaster::frontend' + context 'When hostname is puppetmaster.example.org' + let(:facts) do + facts.merge({ :fqdn => 'puppetmaster.example.org' }) + end + it { is_expected.to compile } + else + let(:facts) { facts } + it { is_expected.to compile } + end + end +end diff --git a/modules/role/spec/spec_helper.rb b/modules/role/spec/spec_helper.rb new file mode 100644 index 0000000..1ddefe4 --- /dev/null +++ b/modules/role/spec/spec_helper.rb @@ -0,0 +1,33 @@ +require 'rspec-puppet' +require 'puppetlabs_spec_helper/module_spec_helper' + +fixture_path = File.expand_path(File.join(__FILE__, '..', 'fixtures')) +root_path = File.expand_path(File.join(__FILE__, '..', '..', '..', '..')) + +RSpec.configure do |c| + c.module_path = [ + File.join(fixture_path, 'modules'), + File.join(root_path, 'modules'), + ].join(':') + # Do not add c.manifest_dir which would boot manifests/site.pp + c.template_dir = File.join(root_path, 'templates') + c.environmentpath = File.join(Dir.pwd, 'spec') + c.hiera_config = File.join(fixture_path, 'hiera.yaml') + + # For --next-failure + c.example_status_persistence_file_path = File.join( + File.dirname(__FILE__), 'examples.txt') + + c.before(:each) do + # From Max Lincoln: https://gist.github.com/maxlinc/6382696 + ENV['PUPPET_LOG'] = 'debug' if ENV['PUPPET_DEBUG'] + if ENV['PUPPET_LOG'] + levels = %w(debug info notice warning err alert emerg crit) + if !levels.include?(ENV['PUPPET_LOG']) + raise "Unknown log level for PUPPET_LOG. Must be one of: #{levels}" + end + Puppet::Util::Log.level = :"#{ENV['PUPPET_LOG']}" + Puppet::Util::Log.newdestination(:console) + end + end +end -- To view, visit https://gerrit.wikimedia.org/r/307425 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ibcb7fe8d5c86b7ab1e99e0b5633d89bce3b21cfb Gerrit-PatchSet: 33 Gerrit-Project: operations/puppet Gerrit-Branch: production Gerrit-Owner: Hashar <has...@free.fr> Gerrit-Reviewer: Hashar <has...@free.fr> Gerrit-Reviewer: jenkins-bot <> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits