Rush has uploaded a new change for review. ( https://gerrit.wikimedia.org/r/383909 )
Change subject: openstack: pdns recursor module/profile/role ...................................................................... openstack: pdns recursor module/profile/role * This deprecates the needed per host values for labservices1002 * use 'secondary' for primary/secondary active/active pairs and 'standby' for primary/standby active/standby pairs * couple recursor monitoring with recursor profile Bug: T171494 Change-Id: I1055766185d5381a666bbd97976e80eb7a681837 --- M hieradata/codfw/profile/openstack/labtest/pdns.yaml A hieradata/common/profile/openstack/base/pdns/labsdb.yaml M hieradata/eqiad/profile/openstack/main/pdns.yaml D hieradata/hosts/labservices1002.yaml R hieradata/role/eqiad/wmcs/openstack/main/net_standby.yaml R hieradata/role/eqiad/wmcs/openstack/main/services_primary.yaml C hieradata/role/eqiad/wmcs/openstack/main/services_secondary.yaml M modules/profile/manifests/openstack/base/pdns/auth/monitor/pdns_control.pp M modules/profile/manifests/openstack/base/pdns/auth/service.pp A modules/profile/manifests/openstack/base/pdns/recursor/monitor/rec_control.pp A modules/profile/manifests/openstack/base/pdns/recursor/service.pp A modules/profile/manifests/openstack/labtest/pdns/recursor/service.pp M modules/role/manifests/wmcs/openstack/labtest/services.pp R modules/role/manifests/wmcs/openstack/main/net_standby.pp R modules/role/manifests/wmcs/openstack/main/services_primary.pp C modules/role/manifests/wmcs/openstack/main/services_secondary.pp 16 files changed, 1,061 insertions(+), 27 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/operations/puppet refs/changes/09/383909/1 diff --git a/hieradata/codfw/profile/openstack/labtest/pdns.yaml b/hieradata/codfw/profile/openstack/labtest/pdns.yaml index 91206e6..1de72f5 100644 --- a/hieradata/codfw/profile/openstack/labtest/pdns.yaml +++ b/hieradata/codfw/profile/openstack/labtest/pdns.yaml @@ -1,3 +1,5 @@ +profile::openstack::labtest::pdns::tld: 'labtest' +profile::openstack::labtest::pdns::private_reverse: '196.10.in-addr.arpa' profile::openstack::labtest::pdns::host: 'labtest-ns0.wikimedia.org' profile::openstack::labtest::pdns::host_secondary: 'labtest-ns0.wikimedia.org' profile::openstack::labtest::pdns::recursor: 'labtest-recursor0.wikimedia.org' diff --git a/hieradata/common/profile/openstack/base/pdns/labsdb.yaml b/hieradata/common/profile/openstack/base/pdns/labsdb.yaml new file mode 100644 index 0000000..c7377da --- /dev/null +++ b/hieradata/common/profile/openstack/base/pdns/labsdb.yaml @@ -0,0 +1,897 @@ +# There are two old school replica servers (c1, c3 -- c2 is dead now). The mapping of +# "shards" (s1, etc.) and databases (enwiki, etc.) to these is +# arbitrary in so much as all replicas have all the same data +# and can be adjusted to depool a server or redistribute load. + +profile::openstack::base::pdns::labsdb::c1: + - bgwiki + - bgwiktionary + - c1 + - commonswiki + - cswiki + - enwiki + - enwikiquote + - enwiktionary + - eowiki + - fiwiki + - idwiki + - itwiki + - nlwiki + - nowiki + - plwiki + - ptwiki + - s1 + - s2 + - s4 + - svwiki + - thwiki + - trwiki + - zhwiki + +profile::openstack::base::pdns::labsdb::c2: + - c2 + +profile::openstack::base::pdns::labsdb::c3: + - aawiki + - aawikibooks + - aawiktionary + - abwiki + - abwiktionary + - acewiki + - advisorywiki + - adywiki + - afwiki + - afwikibooks + - afwikiquote + - afwiktionary + - akwiki + - akwikibooks + - akwiktionary + - alswiki + - alswikibooks + - alswikiquote + - alswiktionary + - amwiki + - amwikiquote + - amwiktionary + - angwiki + - angwikibooks + - angwikiquote + - angwikisource + - angwiktionary + - anwiki + - anwiktionary + - arcwiki + - arwiki + - arwikibooks + - arwikimedia + - arwikinews + - arwikiquote + - arwikisource + - arwikiversity + - arwiktionary + - arzwiki + - astwiki + - astwikibooks + - astwikiquote + - astwiktionary + - aswiki + - aswikibooks + - aswikisource + - aswiktionary + - atjwiki + - avwiki + - avwiktionary + - aywiki + - aywikibooks + - aywiktionary + - azbwiki + - azwiki + - azwikibooks + - azwikiquote + - azwikisource + - azwiktionary + - barwiki + - bat_smgwiki + - bawiki + - bawikibooks + - bclwiki + - bdwikimedia + - be_x_oldwiki + - betawikiversity + - bewiki + - bewikibooks + - bewikimedia + - bewikiquote + - bewikisource + - bewiktionary + - bgwikibooks + - bgwikinews + - bgwikiquote + - bgwikisource + - bhwiki + - bhwiktionary + - biwiki + - biwikibooks + - biwiktionary + - bjnwiki + - bmwiki + - bmwikibooks + - bmwikiquote + - bmwiktionary + - bnwiki + - bnwikibooks + - bnwikisource + - bnwiktionary + - bowiki + - bowikibooks + - bowiktionary + - bpywiki + - brwiki + - brwikimedia + - brwikiquote + - brwikisource + - brwiktionary + - bswiki + - bswikibooks + - bswikinews + - bswikiquote + - bswikisource + - bswiktionary + - bugwiki + - bxrwiki + - c3 + - cawiki + - cawikibooks + - cawikimedia + - cawikinews + - cawikiquote + - cawikisource + - cawiktionary + - cbk_zamwiki + - cdowiki + - cebwiki + - centralauth + - cewiki + - chowiki + - chrwiki + - chrwiktionary + - chwiki + - chwikibooks + - chwiktionary + - chywiki + - ckbwiki + - cnwikimedia + - cowiki + - cowikibooks + - cowikimedia + - cowikiquote + - cowiktionary + - crhwiki + - crwiki + - crwikiquote + - crwiktionary + - csbwiki + - csbwiktionary + - cswikibooks + - cswikinews + - cswikiquote + - cswikisource + - cswikiversity + - cswiktionary + - cuwiki + - cvwiki + - cvwikibooks + - cywiki + - cywikibooks + - cywikiquote + - cywikisource + - cywiktionary + - dawiki + - dawikibooks + - dawikiquote + - dawikisource + - dawiktionary + - dewiki + - dewikibooks + - dewikinews + - dewikiquote + - dewikisource + - dewikiversity + - dewikivoyage + - dewiktionary + - diqwiki + - dkwikimedia + - donatewiki + - dsbwiki + - dtywiki + - dvwiki + - dvwiktionary + - dzwiki + - dzwiktionary + - eewiki + - elwiki + - elwikibooks + - elwikinews + - elwikiquote + - elwikisource + - elwikiversity + - elwikivoyage + - elwiktionary + - emlwiki + - enwikibooks + - enwikinews + - enwikisource + - enwikiversity + - enwikivoyage + - eowikibooks + - eowikinews + - eowikiquote + - eowikisource + - eowiktionary + - eswiki + - eswikibooks + - eswikinews + - eswikiquote + - eswikisource + - eswikiversity + - eswikivoyage + - eswiktionary + - etwiki + - etwikibooks + - etwikimedia + - etwikiquote + - etwikisource + - etwiktionary + - euwiki + - euwikibooks + - euwikiquote + - euwiktionary + - extwiki + - fawiki + - fawikibooks + - fawikinews + - fawikiquote + - fawikisource + - fawikivoyage + - fawiktionary + - ffwiki + - fiu_vrowiki + - fiwikibooks + - fiwikimedia + - fiwikinews + - fiwikiquote + - fiwikisource + - fiwikiversity + - fiwikivoyage + - fiwiktionary + - fjwiki + - fjwiktionary + - foundationwiki + - fowiki + - fowikisource + - fowiktionary + - frpwiki + - frrwiki + - frwiki + - frwikibooks + - frwikinews + - frwikiquote + - frwikisource + - frwikiversity + - frwikivoyage + - frwiktionary + - furwiki + - fywiki + - fywikibooks + - fywiktionary + - gagwiki + - ganwiki + - gawiki + - gawikibooks + - gawikiquote + - gawiktionary + - gdwiki + - gdwiktionary + - glkwiki + - glwiki + - glwikibooks + - glwikiquote + - glwikisource + - glwiktionary + - gnwiki + - gnwikibooks + - gnwiktionary + - gomwiki + - gotwiki + - gotwikibooks + - guwiki + - guwikibooks + - guwikiquote + - guwikisource + - guwiktionary + - gvwiki + - gvwiktionary + - hakwiki + - hawiki + - hawiktionary + - hawwiki + - hewiki + - hewikibooks + - hewikinews + - hewikiquote + - hewikisource + - hewikivoyage + - hewiktionary + - hifwiki + - hiwiki + - hiwikibooks + - hiwikiquote + - hiwikiversity + - hiwikivoyage + - hiwiktionary + - howiki + - hrwiki + - hrwikibooks + - hrwikiquote + - hrwikisource + - hrwiktionary + - hsbwiki + - hsbwiktionary + - htwiki + - htwikisource + - huwiki + - huwikibooks + - huwikinews + - huwikiquote + - huwikisource + - huwiktionary + - hywiki + - hywikibooks + - hywikiquote + - hywikisource + - hywiktionary + - hzwiki + - iawiki + - iawikibooks + - iawiktionary + - idwikibooks + - idwikiquote + - idwikisource + - idwiktionary + - iewiki + - iewikibooks + - iewiktionary + - igwiki + - iiwiki + - ikwiki + - ikwiktionary + - ilowiki + - incubatorwiki + - iowiki + - iowiktionary + - iswiki + - iswikibooks + - iswikiquote + - iswikisource + - iswiktionary + - itwikibooks + - itwikinews + - itwikiquote + - itwikisource + - itwikiversity + - itwikivoyage + - itwiktionary + - iuwiki + - iuwiktionary + - jamwiki + - jawiki + - jawikibooks + - jawikinews + - jawikiquote + - jawikisource + - jawikiversity + - jawiktionary + - jbowiki + - jbowiktionary + - jvwiki + - jvwiktionary + - kaawiki + - kabwiki + - kawiki + - kawikibooks + - kawikiquote + - kawiktionary + - kbdwiki + - kgwiki + - kiwiki + - kjwiki + - kkwiki + - kkwikibooks + - kkwikiquote + - kkwiktionary + - klwiki + - klwiktionary + - kmwiki + - kmwikibooks + - kmwiktionary + - knwiki + - knwikibooks + - knwikiquote + - knwikisource + - knwiktionary + - koiwiki + - kowiki + - kowikibooks + - kowikinews + - kowikiquote + - kowikisource + - kowikiversity + - kowiktionary + - krcwiki + - krwiki + - krwikiquote + - kshwiki + - kswiki + - kswikibooks + - kswikiquote + - kswiktionary + - kuwiki + - kuwikibooks + - kuwikiquote + - kuwiktionary + - kvwiki + - kwwiki + - kwwikiquote + - kwwiktionary + - kywiki + - kywikibooks + - kywikiquote + - kywiktionary + - ladwiki + - lawiki + - lawikibooks + - lawikiquote + - lawikisource + - lawiktionary + - lbewiki + - lbwiki + - lbwikibooks + - lbwikiquote + - lbwiktionary + - lezwiki + - lgwiki + - lijwiki + - liwiki + - liwikibooks + - liwikiquote + - liwikisource + - liwiktionary + - lmowiki + - lnwiki + - lnwikibooks + - lnwiktionary + - loginwiki + - lowiki + - lowiktionary + - lrcwiki + - ltgwiki + - ltwiki + - ltwikibooks + - ltwikiquote + - ltwikisource + - ltwiktionary + - lvwiki + - lvwikibooks + - lvwiktionary + - maiwiki + - map_bmswiki + - mdfwiki + - mediawikiwiki + - metawiki + - mgwiki + - mgwikibooks + - mgwiktionary + - mhrwiki + - mhwiki + - mhwiktionary + - minwiki + - miwiki + - miwikibooks + - miwiktionary + - mkwiki + - mkwikibooks + - mkwikimedia + - mkwikisource + - mkwiktionary + - mlwiki + - mlwikibooks + - mlwikiquote + - mlwikisource + - mlwiktionary + - mnwiki + - mnwikibooks + - mnwiktionary + - mowiki + - mowiktionary + - mrjwiki + - mrwiki + - mrwikibooks + - mrwikiquote + - mrwikisource + - mrwiktionary + - mswiki + - mswikibooks + - mswiktionary + - mtwiki + - mtwiktionary + - muswiki + - mwlwiki + - mxwikimedia + - myvwiki + - mywiki + - mywikibooks + - mywiktionary + - mznwiki + - nahwiki + - nahwikibooks + - nahwiktionary + - napwiki + - nawiki + - nawikibooks + - nawikiquote + - nawiktionary + - nds_nlwiki + - ndswiki + - ndswikibooks + - ndswikiquote + - ndswiktionary + - newiki + - newikibooks + - newiktionary + - newwiki + - ngwiki + - nlwikibooks + - nlwikimedia + - nlwikinews + - nlwikiquote + - nlwikisource + - nlwikivoyage + - nlwiktionary + - nnwiki + - nnwikiquote + - nnwiktionary + - nostalgiawiki + - novwiki + - nowikibooks + - nowikimedia + - nowikinews + - nowikiquote + - nowikisource + - nowiktionary + - nrmwiki + - nsowiki + - nvwiki + - nycwikimedia + - nywiki + - nzwikimedia + - ocwiki + - ocwikibooks + - ocwiktionary + - olowiki + - omwiki + - omwiktionary + - orwiki + - orwikisource + - orwiktionary + - oswiki + - outreachwiki + - pa_uswikimedia + - pagwiki + - pamwiki + - papwiki + - pawiki + - pawikibooks + - pawikisource + - pawiktionary + - pcdwiki + - pdcwiki + - pflwiki + - pihwiki + - piwiki + - piwiktionary + - plwikibooks + - plwikimedia + - plwikinews + - plwikiquote + - plwikisource + - plwikivoyage + - plwiktionary + - pmswiki + - pnbwiki + - pnbwiktionary + - pntwiki + - pswiki + - pswikibooks + - pswiktionary + - ptwikibooks + - ptwikimedia + - ptwikinews + - ptwikiquote + - ptwikisource + - ptwikiversity + - ptwikivoyage + - ptwiktionary + - qualitywiki + - quwiki + - quwikibooks + - quwikiquote + - quwiktionary + - rmwiki + - rmwikibooks + - rmwiktionary + - rmywiki + - rnwiki + - rnwiktionary + - roa_rupwiki + - roa_rupwiktionary + - roa_tarawiki + - rowiki + - rowikibooks + - rowikinews + - rowikiquote + - rowikisource + - rowikivoyage + - rowiktionary + - rswikimedia + - ruewiki + - ruwiki + - ruwikibooks + - ruwikimedia + - ruwikinews + - ruwikiquote + - ruwikisource + - ruwikiversity + - ruwikivoyage + - ruwiktionary + - rwwiki + - rwwiktionary + - s3 + - s5 + - s6 + - s7 + - sahwiki + - sahwikisource + - sawiki + - sawikibooks + - sawikiquote + - sawikisource + - sawiktionary + - scnwiki + - scnwiktionary + - scowiki + - scwiki + - scwiktionary + - sdwiki + - sdwikinews + - sdwiktionary + - sewiki + - sewikibooks + - sewikimedia + - sgwiki + - sgwiktionary + - shwiki + - shwiktionary + - simplewiki + - simplewikibooks + - simplewikiquote + - simplewiktionary + - siwiki + - siwikibooks + - siwiktionary + - skwiki + - skwikibooks + - skwikiquote + - skwikisource + - skwiktionary + - slwiki + - slwikibooks + - slwikiquote + - slwikisource + - slwikiversity + - slwiktionary + - smwiki + - smwiktionary + - snwiki + - snwiktionary + - sourceswiki + - sowiki + - sowiktionary + - specieswiki + - sqwiki + - sqwikibooks + - sqwikinews + - sqwikiquote + - sqwiktionary + - srnwiki + - srwiki + - srwikibooks + - srwikinews + - srwikiquote + - srwikisource + - srwiktionary + - sswiki + - sswiktionary + - stqwiki + - strategywiki + - stwiki + - stwiktionary + - suwiki + - suwikibooks + - suwikiquote + - suwiktionary + - svwikibooks + - svwikinews + - svwikiquote + - svwikisource + - svwikiversity + - svwikivoyage + - svwiktionary + - swwiki + - swwikibooks + - swwiktionary + - szlwiki + - tawiki + - tawikibooks + - tawikinews + - tawikiquote + - tawikisource + - tawiktionary + - tcywiki + - tenwiki + - test2wiki + - testwiki + - testwikidatawiki + - tetwiki + - tewiki + - tewikibooks + - tewikiquote + - tewikisource + - tewiktionary + - tgwiki + - tgwikibooks + - tgwiktionary + - thwikibooks + - thwikinews + - thwikiquote + - thwikisource + - thwiktionary + - tiwiki + - tiwiktionary + - tkwiki + - tkwikibooks + - tkwikiquote + - tkwiktionary + - tlwiki + - tlwikibooks + - tlwiktionary + - tnwiki + - tnwiktionary + - towiki + - towiktionary + - tpiwiki + - tpiwiktionary + - trwikibooks + - trwikimedia + - trwikinews + - trwikiquote + - trwikisource + - trwiktionary + - tswiki + - tswiktionary + - ttwiki + - ttwikibooks + - ttwikiquote + - ttwiktionary + - tumwiki + - twwiki + - twwiktionary + - tyvwiki + - tywiki + - uawikimedia + - udmwiki + - ugwiki + - ugwikibooks + - ugwikiquote + - ugwiktionary + - ukwiki + - ukwikibooks + - ukwikimedia + - ukwikinews + - ukwikiquote + - ukwikisource + - ukwikivoyage + - ukwiktionary + - urwiki + - urwikibooks + - urwikiquote + - urwiktionary + - usabilitywiki + - uzwiki + - uzwikibooks + - uzwikiquote + - uzwiktionary + - vecwiki + - vecwikisource + - vecwiktionary + - vepwiki + - vewiki + - vewikimedia + - viwiki + - viwikibooks + - viwikiquote + - viwikisource + - viwikivoyage + - viwiktionary + - vlswiki + - votewiki + - vowiki + - vowikibooks + - vowikiquote + - vowiktionary + - warwiki + - wawiki + - wawikibooks + - wawiktionary + - wbwikimedia + - wikidatawiki + - wikimania2005wiki + - wikimania2006wiki + - wikimania2007wiki + - wikimania2008wiki + - wikimania2009wiki + - wikimania2010wiki + - wikimania2011wiki + - wikimania2012wiki + - wikimania2013wiki + - wikimania2014wiki + - wikimania2015wiki + - wikimania2016wiki + - wikimania2017wiki + - wikimania2018wiki + - wowiki + - wowikiquote + - wowiktionary + - wuuwiki + - xalwiki + - xhwiki + - xhwikibooks + - xhwiktionary + - xmfwiki + - yiwiki + - yiwikisource + - yiwiktionary + - yowiki + - yowikibooks + - yowiktionary + - zawiki + - zawikibooks + - zawikiquote + - zawiktionary + - zeawiki + - zh_classicalwiki + - zh_min_nanwiki + - zh_min_nanwikibooks + - zh_min_nanwikiquote + - zh_min_nanwikisource + - zh_min_nanwiktionary + - zh_yuewiki + - zhwikibooks + - zhwikinews + - zhwikiquote + - zhwikisource + - zhwikivoyage + - zhwiktionary + - zuwiki + - zuwikibooks + - zuwiktionary diff --git a/hieradata/eqiad/profile/openstack/main/pdns.yaml b/hieradata/eqiad/profile/openstack/main/pdns.yaml index ab73ff2..040957e 100644 --- a/hieradata/eqiad/profile/openstack/main/pdns.yaml +++ b/hieradata/eqiad/profile/openstack/main/pdns.yaml @@ -1,3 +1,5 @@ +profile::openstack::main::pdns::tld: 'wmflabs' +profile::openstack::main::pdns::private_reverse: '68.10.in-addr.arpa' profile::openstack::main::pdns::host: 'labs-ns0.wikimedia.org' profile::openstack::main::pdns::host_secondary: 'labs-ns1.wikimedia.org' profile::openstack::main::pdns::recursor: 'labs-recursor0.wikimedia.org' diff --git a/hieradata/hosts/labservices1002.yaml b/hieradata/hosts/labservices1002.yaml deleted file mode 100644 index 898054e..0000000 --- a/hieradata/hosts/labservices1002.yaml +++ /dev/null @@ -1,5 +0,0 @@ -labsdnsconfig: - host: 'labs-ns1.wikimedia.org' - host_secondary: 'labs-ns0.wikimedia.org' - recursor: 'labs-recursor1.wikimedia.org' - recursor_secondary: 'labs-recursor0.wikimedia.org' diff --git a/hieradata/role/eqiad/wmcs/openstack/main/net_secondary.yaml b/hieradata/role/eqiad/wmcs/openstack/main/net_standby.yaml similarity index 100% rename from hieradata/role/eqiad/wmcs/openstack/main/net_secondary.yaml rename to hieradata/role/eqiad/wmcs/openstack/main/net_standby.yaml diff --git a/hieradata/role/eqiad/wmcs/openstack/main/services.yaml b/hieradata/role/eqiad/wmcs/openstack/main/services_primary.yaml similarity index 100% rename from hieradata/role/eqiad/wmcs/openstack/main/services.yaml rename to hieradata/role/eqiad/wmcs/openstack/main/services_primary.yaml diff --git a/hieradata/role/eqiad/wmcs/openstack/main/services.yaml b/hieradata/role/eqiad/wmcs/openstack/main/services_secondary.yaml similarity index 100% copy from hieradata/role/eqiad/wmcs/openstack/main/services.yaml copy to hieradata/role/eqiad/wmcs/openstack/main/services_secondary.yaml diff --git a/modules/profile/manifests/openstack/base/pdns/auth/monitor/pdns_control.pp b/modules/profile/manifests/openstack/base/pdns/auth/monitor/pdns_control.pp index 50ff498..9a56c54 100644 --- a/modules/profile/manifests/openstack/base/pdns/auth/monitor/pdns_control.pp +++ b/modules/profile/manifests/openstack/base/pdns/auth/monitor/pdns_control.pp @@ -16,22 +16,4 @@ }, require => Sudo::User['diamond_sudo_for_pdns'], } - - # TODO: move to recursor profile - sudo::user { 'diamond_sudo_for_pdns_recursor': - user => 'diamond', - privileges => ['ALL=(root) NOPASSWD: /usr/bin/rec_control get-all'], - } - - # For the recursor - diamond::collector { 'PowerDNSRecursor': - source => 'puppet:///modules/diamond/collector/powerdns_recursor.py', - settings => { - # lint:ignore:quoted_booleans - # This is jammed straight into a config file, needs quoting. - use_sudo => 'true', - # lint:endignore - }, - require => Sudo::User['diamond_sudo_for_pdns_recursor'], - } } diff --git a/modules/profile/manifests/openstack/base/pdns/auth/service.pp b/modules/profile/manifests/openstack/base/pdns/auth/service.pp index 5941d9a..926fe4c 100644 --- a/modules/profile/manifests/openstack/base/pdns/auth/service.pp +++ b/modules/profile/manifests/openstack/base/pdns/auth/service.pp @@ -5,9 +5,11 @@ $db_pass = hiera('profile::openstack::base::pdns::db_pass'), ) { + # dns_auth_ipaddress => $facts['ipaddress'], + # dns_auth_query_address => $facts['ipaddress'], class { '::pdns_server': - dns_auth_ipaddress => $facts['ipaddress'], - dns_auth_query_address => $facts['ipaddress'], + dns_auth_ipaddress => $::ipaddress, + dns_auth_query_address => $::ipaddress, dns_auth_soa_name => $host, pdns_db_host => $db_host, pdns_db_password => $db_pass, diff --git a/modules/profile/manifests/openstack/base/pdns/recursor/monitor/rec_control.pp b/modules/profile/manifests/openstack/base/pdns/recursor/monitor/rec_control.pp new file mode 100644 index 0000000..73fb9db --- /dev/null +++ b/modules/profile/manifests/openstack/base/pdns/recursor/monitor/rec_control.pp @@ -0,0 +1,21 @@ +class profile::openstack::base::pdns::recursor::monitor::rec_control { + + ::dnsrecursor::monitor { $pdns_recursor_ip: } + + sudo::user { 'diamond_sudo_for_pdns_recursor': + user => 'diamond', + privileges => ['ALL=(root) NOPASSWD: /usr/bin/rec_control get-all'], + } + + # For the recursor + diamond::collector { 'PowerDNSRecursor': + source => 'puppet:///modules/diamond/collector/powerdns_recursor.py', + settings => { + # lint:ignore:quoted_booleans + # This is jammed straight into a config file, needs quoting. + use_sudo => 'true', + # lint:endignore + }, + require => Sudo::User['diamond_sudo_for_pdns_recursor'], + } +} diff --git a/modules/profile/manifests/openstack/base/pdns/recursor/service.pp b/modules/profile/manifests/openstack/base/pdns/recursor/service.pp new file mode 100644 index 0000000..a80ef42 --- /dev/null +++ b/modules/profile/manifests/openstack/base/pdns/recursor/service.pp @@ -0,0 +1,114 @@ +# Class: profile::openstack::pdns::recursor::service +# +# Instances can't communicate directly with other instances +# via floating IP, but they often want to do DNS lookups for the +# public IP of other instances (e.g. beta.wmflabs.org). +# +# This recursor does two useful things: +# +# - It maintains a mapping between floating and private IPs +# for select instances. Anytime the upstream DNS server returns +# a public IP in that mapping, we return the corresponding private +# IP instead. +# +# - It relays requests for *.wmflabs to the auth server that knows +# about such things (defined as $labs_forward) +# +# Other than that it should act like any other WMF recursor. +# + +class profile::openstack::base::pdns::recursor::service( + $nova_controller = hiera('profile::openstack::base::nova_controller'), + $observer_user = hiera('profile::openstack::base::observer_user'), + $observer_password = hiera('profile::openstack::base::observer_password'), + $observer_project = hiera('profile::openstack::base::observer_project'), + $pdns_host = hiera('profile::openstack::base::pdns::host'), + $pdns_recursor = hiera('profile::openstack::base::pdns::recursor'), + $tld = hiera('profile::openstack::base::pdns::tld'), + $private_reverse = hiera('profile::openstack::base::pdns::private_reverse'), + $c1_dbs = hiera('profile::openstack::base::pdns::labsdb::c1'), + $c2_dbs = hiera('profile::openstack::base::pdns::labsdb::c2'), + $c3_dbs = hiera('profile::openstack::base::pdns::labsdb::c3'), + ) { + + include ::network::constants + $all_networks = $::network::constants::all_networks + + $pdns_host_ip = ipresolve($pdns_host,4) + $pdns_recursor_ip = ipresolve($pdns_recursor,4) + + interface::alias { $title: + ipv4 => $pdns_recursor_ip, + } + + # We need to alias some public IPs to their corresponding private IPs. + $alias_file = '/etc/powerdns/labs-ip-alias.lua' + $metal_resolver = '/etc/powerdns/metaldns.lua' + $lua_hooks = [$alias_file, $metal_resolver] + + file { '/var/zones': + ensure => directory, + owner => 'root', + group => 'root', + mode => '0444' + } + + file { '/var/zones/labsdb': + ensure => present, + owner => 'root', + group => 'root', + mode => '0444', + notify => Service['pdns-recursor'], + content => template('role/labs/dns/db_aliases.erb'), + require => File['/var/zones'] + } + + class { '::dnsrecursor': + listen_addresses => $pdns_recursor_ip, + allow_from => $all_networks, + additional_forward_zones => "${tld}=${pdns_host_ip}, ${private_reverse}=${pdns_host_ip}", + auth_zones => 'labsdb=/var/zones/labsdb', + lua_hooks => $lua_hooks, + max_negative_ttl => 900, + max_tcp_per_client => 10, + max_cache_entries => 3000000, + client_tcp_timeout => 1, + } + + class { '::dnsrecursor::labsaliaser': + username => $observer_user, + password => $observer_password, + nova_api_url => "http://${nova_controller}:35357/v3", + alias_file => $alias_file, + observer_project_name => $observer_project, + } + + class { '::dnsrecursor::metalresolver': + metal_resolver => $metal_resolver, + tld => $tld + } + + ferm::service { 'recursor_udp_dns_rec': + proto => 'udp', + port => '53', + } + + ferm::service { 'recursor_tcp_dns_rec': + proto => 'tcp', + port => '53', + } + + ferm::rule { 'recursor_skip_dns_conntrack-out': + desc => 'Skip DNS outgoing connection tracking', + table => 'raw', + chain => 'OUTPUT', + rule => 'proto udp sport 53 NOTRACK;', + } + + ferm::rule { 'recursor_skip_dns_conntrack-in': + desc => 'Skip DNS incoming connection tracking', + table => 'raw', + chain => 'PREROUTING', + rule => 'proto udp dport 53 NOTRACK;', + } +} diff --git a/modules/profile/manifests/openstack/labtest/pdns/recursor/service.pp b/modules/profile/manifests/openstack/labtest/pdns/recursor/service.pp new file mode 100644 index 0000000..53967e5 --- /dev/null +++ b/modules/profile/manifests/openstack/labtest/pdns/recursor/service.pp @@ -0,0 +1,18 @@ +class profile::openstack::labtest::pdns::recursor::service( + $nova_controller = hiera('profile::openstack::labtest::nova_controller'), + $observer_password = hiera('profile::openstack::labtest::observer_password'), + $pdns_host = hiera('profile::openstack::labtest::pdns::host'), + $pdns_recursor = hiera('profile::openstack::labtest::pdns::recursor'), + $tld = hiera('profile::openstack::labtest::pdns::tld'), + $private_reverse = hiera('profile::openstack::labtest::pdns::private_reverse'), + ) { + + class {'::profile::openstack::base::pdns::recursor::service': + nova_controller => $nova_controller, + observer_password => $observer_password, + pdns_host => $pdns_host, + pdns_recursor => $pdns_recursor, + tld => $tld, + private_reverse => $private_reverse, + } +} diff --git a/modules/role/manifests/wmcs/openstack/labtest/services.pp b/modules/role/manifests/wmcs/openstack/labtest/services.pp index 1282eab..9027bdd 100644 --- a/modules/role/manifests/wmcs/openstack/labtest/services.pp +++ b/modules/role/manifests/wmcs/openstack/labtest/services.pp @@ -2,5 +2,6 @@ include ::profile::openstack::labtest::cloudrepo include ::profile::openstack::labtest::pdns::auth::db include ::profile::openstack::labtest::pdns::auth::service + include ::profile::openstack::labtest::pdns::recursor::service include ::profile::openstack::labtest::designate::service } diff --git a/modules/role/manifests/wmcs/openstack/main/net_secondary.pp b/modules/role/manifests/wmcs/openstack/main/net_standby.pp similarity index 100% rename from modules/role/manifests/wmcs/openstack/main/net_secondary.pp rename to modules/role/manifests/wmcs/openstack/main/net_standby.pp diff --git a/modules/role/manifests/wmcs/openstack/main/services.pp b/modules/role/manifests/wmcs/openstack/main/services_primary.pp similarity index 80% rename from modules/role/manifests/wmcs/openstack/main/services.pp rename to modules/role/manifests/wmcs/openstack/main/services_primary.pp index 69807ff..aecc5ec 100644 --- a/modules/role/manifests/wmcs/openstack/main/services.pp +++ b/modules/role/manifests/wmcs/openstack/main/services_primary.pp @@ -1,4 +1,4 @@ -class role::wmcs::openstack::main::services { +class role::wmcs::openstack::main::services_primary { include ::profile::openstack::main::cloudrepo include ::profile::openstack::main::pdns::auth::db include ::profile::openstack::main::pdns::auth::service diff --git a/modules/role/manifests/wmcs/openstack/main/services.pp b/modules/role/manifests/wmcs/openstack/main/services_secondary.pp similarity index 79% copy from modules/role/manifests/wmcs/openstack/main/services.pp copy to modules/role/manifests/wmcs/openstack/main/services_secondary.pp index 69807ff..90817e4 100644 --- a/modules/role/manifests/wmcs/openstack/main/services.pp +++ b/modules/role/manifests/wmcs/openstack/main/services_secondary.pp @@ -1,4 +1,4 @@ -class role::wmcs::openstack::main::services { +class role::wmcs::openstack::main::services_secondary { include ::profile::openstack::main::cloudrepo include ::profile::openstack::main::pdns::auth::db include ::profile::openstack::main::pdns::auth::service -- To view, visit https://gerrit.wikimedia.org/r/383909 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I1055766185d5381a666bbd97976e80eb7a681837 Gerrit-PatchSet: 1 Gerrit-Project: operations/puppet Gerrit-Branch: production Gerrit-Owner: Rush <r...@wikimedia.org> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits