Естественно, это упрощенные примеры. Ansible позволяет использовать теги для поиска имеющихся серверов EC2, прежде чем добавлять новые (скажем, с помощью параметров instance_tags и count_tag). Однако ручная организация такого рода логики для каждого ресурса, которым вы управляете с применением Ansible, с учетом истории его изменений может оказаться на удивление сложной. Вам придется искать существующие серверы не только по тегам, но также по версии образа и зоне доступности. Из этого вытекают две основные проблемы с процедурными средствами IaC.
•
•
Благодаря декларативному подходу Terraform код всегда описывает текущее состояние вашей инфраструктуры. Вы можете с одного взгляда определить, что сейчас развернуто и как оно сконфигурировано, не заботясь об истории изменений или синхронизации. Это также облегчает написание кода, пригодного для повторного использования, поскольку вам не нужно самостоятельно учитывать текущее состояние окружающего мира. Вместо этого вы можете сосредоточиться лишь на описании нужного вам состояния, а Terraform автоматически сообразит, как к нему перейти. Поэтому кодовая база Terraform обычно остается компактной и понятной.
Конечно, у декларативного подхода есть свои недостатки. Отсутствие доступа к полноценному языку программирования сказывается на выразительности. Например, некоторые виды изменения инфраструктуры, такие как развертывание без простоя, сложно (но реально, как вы увидите в главе 5) выразить в чисто декларативном стиле. Аналогично ограниченные средства описания «логики» (такие как условные выражения и циклы) делают непростым написание универсального кода, который можно применять повторно. К счастью, Terraform предоставляет ряд мощных примитивов: входные и выходные переменные, модули, create_before_destroy, count, тернарный синтаксис и встроенные функции. Все это позволяет писать чистый, конфигурируемый, модульный код даже на декларативном языке. Мы вернемся к этим темам в главах 4 и 5.
Наличие или отсутствие центрального сервера
Chef, Puppet и SaltStack по умолчанию требуют наличия
У центрального сервера несколько преимуществ. Во-первых, это единое централизованное место, где вы можете просматривать и администрировать состояние своей инфраструктуры. У многих средств управления конфигурацией для этого даже есть веб-интерфейс (например, Chef Console, Puppet Enterprise Console), который помогает ориентироваться в происходящем. Во-вторых, некоторые центральные серверы умеют работать непрерывно, в фоновом режиме, обеспечивая соблюдение вашей конфигурации. Таким образом, если кто-то поменяет состояние узла вручную, центральный сервер может откатить это изменение, тем самым предотвращая дрейф конфигурации.
Однако использование центрального сервера имеет серьезные недостатки.
•
•
Вильям Л Саймон , Вильям Саймон , Наталья Владимировна Макеева , Нора Робертс , Юрий Викторович Щербатых
Зарубежная компьютерная, околокомпьютерная литература / ОС и Сети, интернет / Короткие любовные романы / Психология / Прочая справочная литература / Образование и наука / Книги по IT / Словари и Энциклопедии