{"id":20811331,"url":"https://github.com/express42/mc-puppet","last_synced_at":"2025-03-12T04:43:33.768Z","repository":{"id":66323612,"uuid":"151001589","full_name":"express42/mc-puppet","owner":"express42","description":null,"archived":false,"fork":false,"pushed_at":"2018-10-01T10:05:00.000Z","size":4695,"stargazers_count":5,"open_issues_count":0,"forks_count":1,"subscribers_count":7,"default_branch":"master","last_synced_at":"2025-01-18T14:46:42.034Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/express42.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-09-30T19:57:11.000Z","updated_at":"2022-02-24T07:35:10.000Z","dependencies_parsed_at":"2023-02-25T08:15:19.758Z","dependency_job_id":null,"html_url":"https://github.com/express42/mc-puppet","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/express42%2Fmc-puppet","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/express42%2Fmc-puppet/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/express42%2Fmc-puppet/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/express42%2Fmc-puppet/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/express42","download_url":"https://codeload.github.com/express42/mc-puppet/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243158972,"owners_count":20245669,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-17T20:40:18.093Z","updated_at":"2025-03-12T04:43:33.752Z","avatar_url":"https://github.com/express42.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# Мастер класс DevOpsConf\n## Современные подходы к разработке инфраструктурного кода на Puppet \n\nУстановливаем Puppet DK. \nСсылка на доступные пакеты https://puppet.com/download-puppet-development-kit, варианты установки перечислены по ссылке https://puppet.com/docs/pdk/1.x/pdk_install.html\nСоздаем новый модуль:\n```\npdk new module pdk_module\n```\nПереходим в директорию модуля и выводим структуру:\n```\ncd pdk_module/\nls -la\n```\nПросматриваем сгенерированую метадату модуля:\n```\ncat metadata.json\n```\nИнициализируем git репозиторий и делаем первый коммит:\n```\ngit init\ngit add .\ngit commit -m \"Create new module pdk_module from template\"\n```\nСоздаем init класс:\n```\npdk new class pdk_module\n```\nСоздаем еще классы:\n```\npdk new class package\npdk new class service\n```\nСоздаем task:\n```\npdk new task restart\n```\nСоздаем defined_type:\n```\npdk new defined_type defined_type\n```\nПробуем создать новый provider:\n```\npdk new provider provider\n```\nПолучаем ошибку, переходим по ссылке в ошибке и подключаем gem puppet-resource_api по инструкции.\n\nПроверяем, что поменялось после выполнения pdk update:\n```\ncat update_report.txt\n```\nПробуем создать provider еще раз:\n```\npdk new provider provider\n```\nВсе, структура модуля готова. Комитим изменения:\n```\ngit add .\ngit commit -m \"Add new classes, task, provider and defined_type\"\n```\nДалее переходим к тестированию модуля.\n\nВыводим список доступных валидаторов кода:\n```\npdk validate --list\n```\nВыполняем валидацию кода:\n```\npdk validate\n```\nПопробуем выполнить валидацию кода с другой версией Puppet:\n```\npdk validate --puppet-version=4\n```\nУдаляем дефолтные настройки .rubocop.yml\n```\nrm .rubocop.yml\n```\nПробуем провалидировать код:\n```\npdk validate\n```\nВосстанавливаем удаленные настройки:\n```\npdk update\n```\nВыполняем юнит тестирование модуля:\n```\npdk test unit\n```\nПробуем выполнить rubocop через pdk bundle exec:\n```\npdk bundle exec rubocop\n```\nВыводим список всех rake задач:\n```\npdk bundle exec rake\n```\nУвеличиваем версию модуля:\n```\npdk bundle exec rake module:bump\n```\nСобираем пакет:\n```\npdk build\n```\nВыводим список собранных пакетов:\n```\nls -la pkg/\n```\nПробуем добавить модуль на Puppet Forge:\n```\npdk bundle exec rake module:push\n```\nРегистрируемся на Puppet Forge и указаваем параметры для входа:\n```\nvi ~/.puppetforge.yml\n```\nПробуем еще раз:\n```\npdk bundle exec rake module:push\n```\nСоздаем репозиторий на GitHub и подключаем его к нашему репозиторию:\n```\ngit remote add origin ...\ngit push -u origin master\n```\nВыполняем релиз модуля:\n```\npdk bundle exec rake module:release\n```\nПробуем сгененировать CHANGELOG:\n```\npdk bundle exec rake changelog\n```\nГенерируем GitHub токен и экспортируем токен как переменную:\n```\nexport CHANGELOG_GITHUB_TOKEN=valid_token_here\n```\nГенерируем CHANGELOG:\n```\npdk bundle exec rake changelog\n```\n\n## Домашнее задание\n- Попробовать pdk convert на своих модулях;\n\n- Протестировать модуль в Beaker https://github.com/puppetlabs/beaker-rspec;\n\n- Выполнить тестирование модуля через Gitlab или Travis CI;\n\n- Склонировать control repo https://github.com/puppetlabs/control-repo.git, подключить модули через Puppetfile, установить R10k и залить изменения на Puppet Master.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fexpress42%2Fmc-puppet","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fexpress42%2Fmc-puppet","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fexpress42%2Fmc-puppet/lists"}