понедельник, 27 января 2020 г.

Jenkins: более гибкие возможности с freestyle configuration

При работе с freestyle configuration часто встают вопросы переноса конфигураций, их архивирования, контроле версий и прочем. Они конечно доступны в xml формате, но работа "напрямую" крайне неудобна. Плюс нет механизмов контроля подключённых плагинов, нужно отдельно получать их список с версиями и носить в отдельных файлах. Но если нет возможности перейти на pipeline, есть плагины, облегчающие жизнь.

воскресенье, 26 января 2020 г.

Jenkins, HTML documentation and security

Jenkins может сам генерировать документацию, но доступ к ней будет ограничен по CSP
Jenkins 1.641 / Jenkins 1.625.3 introduce the Content-Security-Policy header to static files served by Jenkins (specifically DirectoryBrowserSupport). This header is set to a very restrictive default set of permissions to protect Jenkins users from malicious HTML/JS files in workspaces, /userContent, or archived artifacts.

Unfortunately, several popular, useful plugins are affected by this and lose part of their functionality unless the default rules are relaxed.
https://wiki.jenkins.io/display/JENKINS/Configuring+Content+Security+Policy

Сначала для обхода надо было выставлять hudson.model.DirectoryBrowserSupport.CSP, например через консоль
System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "default-src 'self' 'unsafe-inline' 'unsafe-eval'; img-src 'self' 'unsafe-inline' data:;")

Или через конфиг файлы
https://kb.froglogic.com/squish/integrations/jenkins/content-security-policy-csp-web-report/
https://stackoverflow.com/questions/37618892/jenkins-content-security-policy

Но с версии 2.200 введено улучшение - отдельный путь для документации, зовётся Resource root URL. По встроенной справке много подробностей.

https://issues.jenkins-ci.org/browse/JENKINS-41891

четверг, 16 января 2020 г.

Amazon RDS for PostgreSQL Supports User Authentication with Kerberos and Microsoft Active Directory

https://aws.amazon.com/ru/about-aws/whats-new/2019/10/amazon-rds-for-postgresql-supports-user-authentication-with-kerberos-and-microsoft-active-directory/
Posted On: Oct 29, 2019

PostgreSQL versions 11.4, 10.9 and above are supported with Active Directory integration.
Требуется именно Microsoft Active Directory, и тогда в настройках датасета можно будет включить AD. Но тут есть нюанс, ИЛИ IAM, ИЛИ AD.

amazon VPC - общение между подсетями

A VPC peering connection is a networking connection between two VPCs that enables you to route traffic between them privately. Instances in either VPC can communicate with each other as if they are within the same network. You can create a VPC peering connection between your own VPCs, with a VPC in another AWS account, or with a VPC in a different AWS Region.

Если есть несколько VPC, например на разных аккаунтах или в разных регионах, и нужна их связность - есть такая штука как VPC peering.

https://docs.aws.amazon.com/vpc/latest/peering/what-is-vpc-peering.html (и далее)
https://docs.aws.amazon.com/vpc/latest/peering/vpc-peering-basics.html

Вкратце - сначала нужно установить VPC Peering (доверенную связь) - в одноимённом разделе сначала на первом аккаунте/регионе отправляем запрос, потом на втором аккаунте/регионе подтверждаем связь.
Далее в routing tables с обоих сторон добавляем новые сети. При разделении на приватные и публичные сети - добавлять нужно в обе сети. Приватные - для нормального обмена, публичные - чтобы получать доступ к серверам из публичной сети, а так же при подключении к впн (который должен быть в публичной сети) чтобы через него были доступны связанные регионы.

Обращаем внимание на ограничения, в том числе - сети в пиринге не должны пересекаться.

Также, если много связей, имеет смысл посмотреть на
https://aws.amazon.com/ru/about-aws/whats-new/2019/12/aws-transit-gateway-supports-inter-region-peering/
Что-то достаточно свежее: Posted On: Dec 3, 2019

Отдельно настраивается резолвинг днс между зонами.

Автоматический переключатель входов, Блок распределения питания

Обновление к https://dragonflybsd.blogspot.com/2011/03/blog-post.html

PDU, ATS.. все называют по разному, и вкладывая разный смысл. Тот же PDU это в том числе "сетевой фильтр", только промышленного класса.

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

Самая известная фирма это APC, у них такие устройства зовутся Rack ATS (Automatic Transfer Switch)
пример модели
AP4434

Вроде как RP серия у Cisco тоже то что нужно, но искать что-то по их продукции это боль.

Ну и есть много производителей типа CyberPower, у них дешевле, но зависит от того что подключать собираемся. Например
https://www.cyberpower.com/ru/ru/product/sku/pdu20swhviec10atnet#specification
И тут есть заявленное время переключения 8~12мс.

CloudFormation и установка ПО после настройки инфраструктуры


Все действия производятся в блоке UserData, так или иначе. А теперь по порядку, что там может быть

Обязательно начинаем с док
https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/user-data.html
https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance.html#cfn-ec2-instance-userdata

1) Простой баш скрипт где всё нужное. Быстро, но со своими особенностями вроде сложности обработки ошибок.
https://github.com/hashicorp/consul-ec2-auto-join-example/blob/master/templates/consul.sh.tpl#L5

понедельник, 13 января 2020 г.

Setup Consul via CloudFormation in aws

Во-первых, у консула есть автонастройка кластера на базе тэгов, подробнее тут
https://www.consul.io/docs/agent/cloud-auto-join.html#amazon-ec2

Во-вторых, информации как это лучше сделать вроде и море, но кусочек тут, кусочек там, а чуть что не так - надо долго гуглить что не так..
Некоторые действия нельзя сделать напрямую, нужно через некие промежуточные шаги, например у IAM (role, policy как часть role или отдельными блоками, profile)
https://aws.amazon.com/ru/premiumsupport/knowledge-center/cloudformation-attach-managed-policy/

aws cloudformation syntax

Несколько слов про синтаксис. cfn умеет yaml и json, и отличия там не такие и большие. Я бы сказал так: json больше подходит тем кто программировал(ует) на С(++) и/или пишет json руками, а для большинства удобнее будет yaml. Но это моё имхо. Или так: одним больше нравится считать пачки скобочек, другим - пробелы. Но без вменяемого IDE можно в обоих вариантах долго искать проблему.

Очень быстрое введение в CloudFormation

CloudFormation, он же cfn - система для быстрой настройки инфрастуктуры, более убогая версия TerraForm'a который умеет не только амазон. Но иногда нужен именно он.
Вариант первый: настройка через веб
https://docs.aws.amazon.com/en_us/AWSCloudFormation/latest/UserGuide/working-with-templates-cfn-designer-walkthrough-createbasicwebserver.html
Без инструкции будет тоже непонятно - есть какая-то форма, куда можно перетягивать квадратики, стрелочки... Поэтому читать.

Вариант второй - писать конфиг с нуля, руками.
Конфиг файл - файл yaml или json формата и состоит из 3 типовых частей:

  • Parameters
  • Resources
  • Output
(это основные, вообще их чуть больше: Description, Metadata, Mappings, Conditions, Transform)

Terraform vs CloudFormation

Очень вкратце - это платформы для настройки инфраструктуры. Создать VPC, сети, гейты, виртуалки, и связать это всё воедино.
Вообще, советую как минимум начинать с terraform - для амазона оно работает поверх cloudformation, но при этом позволяет достаточно просто перейти например на google cloud. Также по cfn очень мало где можно получить помощь, например есть чат https://t.me/aws_ru, так из 1290 человек что-то про cfn может сказать от силы человек 5. В IRC (freenode) мне пока вообще не довелось увидеть людей кто использует cfn. По терраформу народа гораздо больше.
Причём cfn хорошо работает в связке с ansible, в частности - можно настроить виртуалки через UserData, но любое изменение в этих скриптах и машины надо передеплоить, в этом плане ansible гораздо гибче. Но для задач вида "подключить репу, сформировать пару конфигов, запустить сервис" и подобное - сгодится.

А теперь что можно почитать:
https://technology.amis.nl/2019/05/27/differences-between-cloudformation-terraform-and-ansible-in-deployment-of-objects-in-aws/
https://blog.gruntwork.io/why-we-use-terraform-and-not-chef-puppet-ansible-saltstack-or-cloudformation-7989dad2865c
https://stuartsandine.com/terraform-vs-cloudformation-aws-resource-support/

https://www.youtube.com/watch?v=ALsSaPQI504
https://www.youtube.com/watch?v=sYoaOw7yGIc