@puppet_ru

Страница 60 из 112
Max
13.04.2018
20:01:15
не могу порнять как назначить ноде роль арбитра (чтобы только выборами занималась и не учавствовала в синхронизации данных)

ptchol
13.04.2018
20:17:04
там mongodb_replset

там есть arbiter

Max
13.04.2018
20:29:02
@ptchol спс - нашел. А нету примера как с данными в хаира ?

Google
Max
13.04.2018
20:39:18
mongodb::server::replset: 'rs0' mongodb::replset::rs0: members: - '10.10.10.183:27017' - '10.10.10.84:27017' - '10.10.10.215:27017' arbiter: '10.10.10.215:27017' так не конает. Может нужно класс новый дернуть из профайла? Я просто пытаюсь обойтись только хаирой

dk
13.04.2018
21:12:31
А кто лукапит mongodb::replset::rs0?

https://github.com/voxpupuli/puppet-mongodb#provider-mongodb_replset Судя по доке - надо патчить :3

Max
13.04.2018
21:33:45
это мой фейл

mongodb::server::replset: 'rs0' mongodb::server::replica_sets: rs0: members: - '10.10.10.183:27017' - '10.10.10.84:27017' - '10.10.10.215:27017' arbiter: '10.10.10.215:27017' C тестов класса вижу: context 'when setting up replicasets' do describe 'should fail if providing both replica_sets and replset_members' do let(:params) do { replset: 'rsTest', replset_members: [ 'mongo1:27017', 'mongo2:27017', 'mongo3:27017' ], replica_sets: {} } end it { expect { is_expected.to raise_error(%r{Puppet::Error: You can provide either replset_members or replica_sets, not both}) } } end describe 'should setup using replica_sets hash' do let(:rsConf) do { 'rsTest' => { 'members' => [ 'mongo1:27017', 'mongo2:27017', 'mongo3:27017' ], 'arbiter' => 'mongo3:27017' } } end Но не могу описать структуру правильно для хаиры 'rsTest' => { 'members' => [ 'mongo1:27017', 'mongo2:27017', 'mongo3:27017' ], 'arbiter' => 'mongo3:27017' }

dk
13.04.2018
21:41:07
mongodb::server::replset_config: rs0: ...

Max
15.04.2018
09:15:56
нет. Не было пока поддержки этого всего (арбитров). Есть пулл-реквест, так что в след версии возможно добавлят. Пока что создание кластера из нод.

dk
15.04.2018
09:17:32
Вообще, судя по наличию params.pp - модуль довольно древний, его давно отрефакторить пора

Max
15.04.2018
09:18:36
ну после создания кластра нету арбитра (ноды сами решают кто из них мастер или слейв).

Древний - но рабочий) Думал что есть уже все из коробкы (наделся). Но пока этого достаточно. Рефактором там занимаются, но пока не выкотили новую версию

а самому писать - времени нету )))

dk
15.04.2018
09:21:01
Можно собирать статусы кластера в факты и управлять кластером в зависимости от того, что было получено в этих самых фактах (экспортируемые ресурсы подсобят). Правда, оно будет работать только при запущенных с ранинтервалом агентами

Google
dk
15.04.2018
09:21:43
а самому писать - времени нету )))
Но это же и есть - основная работа сре :)

Max
15.04.2018
09:23:44
@dkguest угу. Мне пока достаточно развертвывания кластера. Арбитра я и сам добавить могу. Пока нужно автоматизировать бутстрап кластера. Вылизывать буду немного позже. Буде держать в курсе.

ptchol
15.04.2018
09:44:50
есть всё в модуле.

ну после создания кластра нету арбитра (ноды сами решают кто из них мастер или слейв).
вобще непонятно о чём речь. Арбитр это нода кластера участвующая в голосвании тока без данных

Max
15.04.2018
09:47:44
@ptchol да. я в курсе. Не получилось добавить ее использую паппет - монгодб модуль. Модуль подымает кластер с 3 нодами (нету ArbiterOnly true)

Пытался через хаиру сделать кластер с 3 нодами (1 М, 1 С, 1 Арбитр)

ptchol
15.04.2018
09:48:40
и как ты делал и каким моуделм ?

Max
15.04.2018
09:49:02
https://forge.puppet.com/puppet/mongodb/readme

mongodb::server::replset: 'rs0' mongodb::server::replset::members: - '10.10.10.183:27017' - '10.10.10.84:27017' - '10.10.10.215:27017'

mongodb::server::replset: 'rs0' mongodb::replset::rs0: members: - '10.10.10.183:27017' - '10.10.10.84:27017' - '10.10.10.215:27017' arbiter: '10.10.10.215:27017'

eplset_members так же - создаются только 1 М 2 С

раньше был признак Master: true - можно было сказать, что одна нода мастер - все остальные слейвы. Но уже деприкейтер - значит нету смысла сетить в тру

ща сброшу что из тестов было

ptchol
15.04.2018
09:52:03
class mongodb::server { replset => 'rsmain', replset_config => { 'rsmain' => { ensure => present, members => ['host1:27017', 'host2:27017', 'host3:27017'] } } } там пример вот такой. если не веришь примеру https://github.com/voxpupuli/puppet-mongodb/blob/master/manifests/server.pp

откуда ты все эти параметры вытащил ?

Max
15.04.2018
09:52:38
context 'when setting up replicasets' do describe 'should fail if providing both replica_sets and replset_members' do let(:params) do { replset: 'rsTest', replset_members: [ 'mongo1:27017', 'mongo2:27017', 'mongo3:27017' ], replica_sets: {} } end it { expect { is_expected.to raise_error(%r{Puppet::Error: You can provide either replset_members or replica_sets, not both}) } } end describe 'should setup using replica_sets hash' do let(:rsConf) do { 'rsTest' => { 'members' => [ 'mongo1:27017', 'mongo2:27017', 'mongo3:27017' ], 'arbiter' => 'mongo3:27017' } } end

из тестов )

хотя - не факт что тесты просто не забыли переписать или выпилить

вот есть этот replica_sets: {}

ptchol
15.04.2018
09:53:57
горе от ума

Google
Max
15.04.2018
09:54:05
от туда же master Set to true to configure the current instance to act as master instance in a replication configuration. Default: False Note: deprecated – use replica sets

почему) ?

ptchol
15.04.2018
09:54:41
да хз. Я буквально неделю назад выпиливал этот модуль, всё там ок работает

Max
15.04.2018
09:54:56
а есть примеры с арбитром?

у меня ситуация какая - кластр работает - при падении свич делается. Но когда старый мастер возвращается - свич обратно не происходит

ptchol
15.04.2018
09:56:51
и не должен

у нас через врапер было сделано но как то примерно так ::services::mongodb::server::rs: drm: members: - drmdb1-dl.:27017 - drmdb2-sd.:27017 - meta1-dl.:27017 arbiter: meta1-dl.:27017и внутри класса это пробрасывалось целиком mongodb_replset { $server['replset']: * => $rs[$server['replset']] } }

dk
15.04.2018
10:27:51
А у вас точно ванильный модуль с форджа? Может кто-то там уже сделал его локальным и накатил патчи с пулреквестов (а может и своих правок внес)

ptchol
15.04.2018
10:29:59
ваниальный.

я его еще апдейтил перед тем как снести, когда мучался с той проблемой хиеровой

и обнаружил что у нас изначально был модуль паппетлабсовый который депрекейтнули

и я накатил этот, от вокспопули

dk
15.04.2018
10:33:36
https://github.com/voxpupuli/puppet-mongodb/blob/master/lib/puppet/type/mongodb_replset.rb Вообще, да, тут есть такое

Но фиговая документация, что приходится по исходникам лазать в поисках параметров :)

Max
15.04.2018
10:35:29
да я перепробывал кучу этих самых параметров ) к примеру : ongodb::server::repl_set -> выругается что стринг надо эму (ожидает стрингЩ, а получает структуру) и так далее

но сейчас попробую этот вариант

у меня в коде: class { 'mongodb::server': replset => 'rs0', } class {'mongodb::replset': sets => { 'rs0' => { ensure => present, members => [ '10.10.10.183:27017', '10.10.10.84:27017', '10.10.10.215:27017'], arbiter => '10.10.10.215:27017' } }, }

в ноды признак Арбитра появляется?

ptchol
15.04.2018
10:38:57
ща посмотрю в с тарых репортах если осталось

"arbiters" : [ "meta1-dl.:27017" ], "setName" : "drm", "setVersion" : 2, "ismaster" : false, "secondary" : false, "primary" : "drmdb1-dl.:27017", "arbiterOnly" : true, "me" : "meta1-dl.:27017",

Google
ptchol
15.04.2018
10:42:19
там кривой вывод фактера в репорте, но суть понятна

У меня ещё кстати есть фидбек по опенстековскому свифту.

мы 2 года с ним живём где то, храним всякие картинки пользователей \ плейлистов \ аватарки и всяккую такую мелочь

Max
15.04.2018
10:47:36
угу - похоже на правду

@ptchol по ходу у тебя версия модуля не 2.1.2 В 2.1.2 replset имет стринг значение - не структуру. Optional[String] $replset = undef, Мой вариант class { 'mongodb::server': replset => 'rs0', } class {'mongodb::replset': sets => { 'rs0' => { ensure => present, members => [ '10.10.10.183:27017', '10.10.10.84:27017', '10.10.10.215:27017'], arbiter => '10.10.10.215:27017' } }, } делает тоже самое, но : ` rs0:SECONDARY> rs.status() { "set" : "rs0", "date" : ISODate("2018-04-15T11:07:21.407Z"), "myState" : 2, "term" : NumberLong(7), "syncingTo" : "10.10.10.215:27017", "heartbeatIntervalMillis" : NumberLong(2000), "optimes" : { "lastCommittedOpTime" : { "ts" : Timestamp(1523790439, 1), "t" : NumberLong(7) }, "readConcernMajorityOpTime" : { "ts" : Timestamp(1523790439, 1), "t" : NumberLong(7) }, "appliedOpTime" : { "ts" : Timestamp(1523790439, 1), "t" : NumberLong(7) }, "durableOpTime" : { "ts" : Timestamp(1523790439, 1), "t" : NumberLong(7) } }, "members" : [ { "_id" : 0, "name" : "10.10.10.10.183:27017", "health" : 1, "state" : 2, "stateStr" : "SECONDARY", "uptime" : 90415, "optime" : { "ts" : Timestamp(1523790439, 1), "t" : NumberLong(7) }, "optimeDate" : ISODate("2018-04-15T11:07:19Z"), "syncingTo" : "10.10.10.10.215:27017", "configVersion" : 1, "self" : true }, { "_id" : 1, "name" : "10.10.10.10.84:27017", "health" : 1, "state" : 1, "stateStr" : "PRIMARY", "uptime" : 90413, "optime" : { "ts" : Timestamp(1523790439, 1), "t" : NumberLong(7) }, "optimeDurable" : { "ts" : Timestamp(1523790439, 1), "t" : NumberLong(7) }, "optimeDate" : ISODate("2018-04-15T11:07:19Z"), "optimeDurableDate" : ISODate("2018-04-15T11:07:19Z"), "lastHeartbeat" : ISODate("2018-04-15T11:07:20.758Z"), "lastHeartbeatRecv" : ISODate("2018-04-15T11:07:20.762Z"), "pingMs" : NumberLong(0), "electionTime" : Timestamp(1523699975, 1), "electionDate" : ISODate("2018-04-14T09:59:35Z"), "configVersion" : 1 }, { "_id" : 2, "name" : "10.10.10.10.215:27017", "health" : 1, "state" : 2, "stateStr" : "SECONDARY", "uptime" : 90413, "optime" : { "ts" : Timestamp(1523790439, 1), "t" : NumberLong(7) }, "optimeDurable" : { "ts" : Timestamp(1523790439, 1), "t" : NumberLong(7) }, "optimeDate" : ISODate("2018-04-15T11:07:19Z"), "optimeDurableDate" : ISODate("2018-04-15T11:07:19Z"), "lastHeartbeat" : ISODate("2018-04-15T11:07:20.256Z"), "lastHeartbeatRecv" : ISODate("2018-04-15T11:07:19.974Z"), "pingMs" : NumberLong(0), "syncingTo" : "10.10.10.84:27017", "configVersion" : 1 } ], "ok" : 1, "operationTime" : Timestamp(1523790439, 1), "$clusterTime" : { "clusterTime" : Timestamp(1523790439, 1), "signature" : { "hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="), "keyId" : NumberLong(0) } } } rs0:SECONDARY> rs.conf() { "_id" : "rs0", "version" : 1, "protocolVersion" : NumberLong(1), "members" : [ { "_id" : 0, "host" : "10.10.10.10.183:27017", "arbiterOnly" : false, "buildIndexes" : true, "hidden" : false, "priority" : 1, "tags" : { }, "slaveDelay" : NumberLong(0), "votes" : 1 }, { "_id" : 1, "host" : "10.10.10.84:27017", "arbiterOnly" : false, "buildIndexes" : true, "hidden" : false, "priority" : 1, "tags" : { }, "slaveDelay" : NumberLong(0), "votes" : 1 }, { "_id" : 2, "host" : "10.10.10.215:27017", "arbiterOnly" : false, "buildIndexes" : true, "hidden" : false, "priority" : 1, "tags" : { }, "slaveDelay" : NumberLong(0), "votes" : 1 } ], "settings" : { "chainingAllowed" : true, "heartbeatIntervalMillis" : 2000, "heartbeatTimeoutSecs" : 10, "electionTimeoutMillis" : 10000, "catchUpTimeoutMillis" : -1, "catchUpTakeoverDelayMillis" : 30000, "getLastErrorModes" : { }, "getLastErrorDefaults" : { "w" : 1, "wtimeout" : 0 },

"replicaSetId" : ObjectId("5ad1c978b6ca3fb1484db3c8") } } `

ptchol
15.04.2018
11:14:16
ты серьезно ?

а я в примере где то этому параметру структуру передавал ?

туда передаётся имя реплики, а ресурсу mongodb_replset уже структура

и для этого ресурса есть какие то обертки там вроде аля mongodb::replset

Max
15.04.2018
11:15:31
ну в реплсет имя не попадает?

я сам врапер не могу понять

# Wrapper class useful for hiera based deployments class mongodb::replset( $sets = undef ) { if $sets { create_resources(mongodb_replset, $sets) } # Order replset before any DB's and shard config Mongodb_replset <| |> -> Mongodb_database <| |> Mongodb_replset <| |> -> Mongodb_shard <| |> Mongodb_replset <| |> -> Mongodb_user <| |> } sets этот для меня не очевиден

dk
15.04.2018
11:18:19
Не читай это, это - "приватный" класс для класса mongodb::server

:)

Max
15.04.2018
11:19:46
@dkguest )) ну тогда все понятно

я то думал я погу накотить используя по дефу 1 кластер

ptchol
15.04.2018
11:20:35
mongodb::replset::set: здесь должна лежать структура, которая подходит по формату для mongodb_replset

dk
15.04.2018
11:20:43
В ::server есть условие if $replset { ... } где он накатывает это класс и готовит для него данные для $sets

Вот за это я и не люблю модули с форджа для многих сервисов (особенно, которые нашпигованы всяким хламом типа подключения сторонних реп, попыток настроить фаервол или слазать в sysctl/pam и пр)

Google
dk
15.04.2018
11:27:03
Пока их раскуришь, поубираешь ненужное, поправишь застарелые корявости и согласуешь с имеющейся паппетовой конфигурацией... Можно три раза этот модуль переписать с нуля

ptchol
15.04.2018
13:08:51
а почему ? потому что паппет уныл. и не умеет в индивидуальные зависимости модуля

а шеф к примеру умеет

а с докерами, так вобще можно не думать об этом )

dk
15.04.2018
13:55:30
Умеет же, поди-объяви несуществующий ресурс или коллекцию ресурсов :) Другое дело, что паппет "из коробки" оперирует базовыми понятиями (файл, программа, сервис, пакет) и ничего не знает про сорта дистрибутивов, особенности их конфигураций и оптимальной реализации этих самых конфигураций (вообще-то кое-что он знает про редхат-подобные, но этого мало) У разных разработчиков разное видение того, как надо конфигурировать, что при этом использовать и как согласовывать с прочими разработками. В совокупности все это порождает зоопарк несовместимых модулей, боль и страдания.

ptchol
15.04.2018
14:50:54
вобще это как бы плюсом было когда то

паппет это DSL позволяющий реализовать ещё более высокоуровневый DSL оперирующий сущностями твоей конкретной инфраструктуры

в зависимости от бизнеса эти сущности могут быть разные, и это как бы круто что паппет нам четко не ограничивает объявление того что такое "приложение", "окружение", а даёт лишь базовую либу + пару тройку примтивов аля класс, дефайн, функция.

это как раз та гибкость которая нужно в больших инфраструктурах.

но технологии ушли вперед, и часть задач при скейлинге, решается лучше уже другими инструментами)

dk
18.04.2018
08:03:55
Хм, а можно как-то в манифесте узнать, какие ямл-файлы были заинклюжены из хиеры?

Max
18.04.2018
11:07:18
@dk idea ide может помочь. Или нужно по депенденсах смотреть.

Айтуар
24.04.2018
09:11:16
Здравствуйте. Подскажите как через паппет ставить модули pip, желательно в виртуальное окружение? Вроде есть в package provider pip, но как-то мало по нему информации и примеров не нашёл.

dk
24.04.2018
09:12:15
Это скорее всего будет очень больно

dk
24.04.2018
09:13:05
Само по себе использовать более одного провайдера пакетов - уже больновато, а с виртуальными окружениями - очень больно

Айтуар
24.04.2018
09:15:07
Да я уже подумывал сделать rpm на всё это.

Страница 60 из 112