Средства управления конфигурациями обеспечивают развертывание последовательного и предсказуемого кода и конфигураций с сервера централизованного управления на множестве клиентских компьютеров. Chef является одним из самых популярных инструментов управления конфигурациями. Он основан на Ruby. Chef обрабатывает конфигурации и код и упаковывает компоненты в так называемые «рецепты».
Chef предоставляет быстрый способ развёртывания полноценных окружений, а не отдельных приложений. При создании необходимого окружения, как правило, приходится тратить много времени на загрузку программного обеспечения и редактирование его настроек. Chef позволяет автоматизировать этот процесс.
Данное руководство представляет общий обзор Chef: как Chef систематизирует файлы, какие инструменты и системы он использует, и т.п.
Примечание: Для работы нужно предварительно установить Chef 12.
Терминология Chef
Рассмотрим подробнее компоненты, из которых состоит Chef.
Управление инфраструктурой
Для начала следует ознакомиться с различными моделями, которые составляют стратегию развертывания.
Стать шефом | Выпуск 2
В процессе развёртывания система Chef определяет роли для каждой машины и ресурса.
- Сервер Chef – это ведущий сервер, на котором хранятся «рецепты» конфигураций, кукбуки, а также определения нод и рабочих станций. Настройки всех остальных машин зависят от этого сервера.
- Ноды – это целевые машины (физические или виртуальные) для развёртывания конфигураций Chef. Каждая нода является отдельным окружением. Для взаимодействия с сервером Chef нодам необходимо клиентское приложение Chef.
- Рабочая станция (workstation) – это рабочее место администратора, где создаются и редактируются конфигурации. Затем конфигурационные файлы передаются на сервер Chef, после чего они доступны для развёртывания на нодах.
Настройка Chef позволяет иметь несколько рабочих станций и нод. Ноды можно настроить, как только у них появится подключение к сети и к серверу.
Одна машина может одновременно выполнять все эти роли или несколько из них.
Сервер Chef
Сервер является центральным, ведущим компонентом, на котором хранятся конфигурации для клиентов Chef. По сути это большой репозиторий или БД. Сервер управляет соединениями и правами доступа нод и рабочих станций, а также и систематизирует данные и подготавливает их к загрузке на клиенты. Для управления конфигурациями сервер может использовать веб-интерфейс.
Ноды Chef
Как говорилось ранее, ноды могут быть физическими или виртуальными машинами. Единственным требованием является обязательный доступ к сети и к серверу Chef. Конечно, пользователь также должен иметь возможность загружать и устанавливать программное обеспечение.
Каждая нода взаимодействует с ведущим сервером при помощи приложения chef-client. Оно обрабатывает загруженные данные и выполняет настройку ноды. Программа chef-client и сервер chef взаимодействуют на основе ключей RSA.
Стать шефом | Выпуск 1
Клиентская программа Chef использует инструмент ohai для сбора статистики о ноде. Эти данные используются для подготовки конфигураций и установки переменных.
Рабочие станции Chef
Рабочая станция предоставляет инструменты, необходимые для создания и редактирования сведений о конфигурации для любой из доступных нод, и может обмениваться данными с сервером Chef.
Важным инструментом для управления Chef с помощью консоли является инструмент knife. Он действует как шлюз, при помощи которого можно настроить все, что будет храниться на сервере. Он может управлять нодами и конфигурациями, а также предоставить доступ к серверу. SSH-подключения являются нетипичными для Chef.
Настройки и определения, созданные или отредактированные из консоли, находятся под контролем версий. Перед отправкой данных на сервер нужно отправить сообщение о коммите.
Репозиторий Chef называется chef-repo.
Структура файлов chef-repo
Chef обрабатывает конфигурации и информацию о зависимостях на рабочей станции в рамках заданной структуры каталогов. Важно понять эту иерархию для того, чтобы эффективно создавать рецепты и загружать обновления.
Как говорилось ранее, файлы сервера хранятся под контролем версий в каталоге chef-repo (это обычный каталог, хранящий файлы chef).
В этом каталоге находится такая структура:
- certificates/: содержит SSL-сертификаты, которые могут использовать клиенты для авторизации.
- chefignore: содержит список файлов и папок в пределах структуры, которые не нужно загружать на сервер.
- config/: содержит один-два конфигурационных файла репозитория.
- rake.rb: определяет некоторые переменные для создания SSL-сертификатов и некоторых базовых опций.
- cookbooks/: хранит кукбуки (книги «рецептов») инфраструктуры.
- data_bags/: содержит различные data bags для конфигураций. Data bags – это защищённые подкаталоги, хранящие конфиденциальные данные. Доступ к ним есть только у нод с SSL-сертификатами и поддержкой JSON.
- environments/: содержит местоположение верхнего уровня для хранения данных для развертывания окружения. Каждое окружение, которое отличается от стандартного окружения, нужно добавить в этот каталог.
- Rakefile: этот файл определяет задачи, которые может выполнять chef в своих конфигурациях.
- roles/: хранит файлы, определяющие роли для нод.
Структура кукбуков
В каталоге cookbooks находятся подкаталоги, определяющие кукбуки для приложений. В каталоге конфигураций каждого отдельного приложения существует структура, которая определяет способ установки данного сервиса и настройки, которые нужно изменить.
В приложении можно найти файлы, которые определяют, как должны быть установлены и настроены приложения.
Файлы metadata.rb или metadata.json содержат метаданные о сервисе. Такой файл включает в себя базовую информацию (имя и версия кукбука) и данные о зависимостях. Если кукбук зависит от других кукбуков, которые нужно установить, их можно перечислить в этом файле и chef установит и соответствующим образом настроит их.
Каталог attributes содержит определения атрибутов, которые могут быть использованы для переопределения или настройки параметров нод, использующих этот сервис.
Каталог definitions содержит файлы, которые описывают ресурсы. Это значит, что функции можно сгруппировать под одним заголовком.
Каталог files описывает, как chef распространяет файлы по всем нодам, на которых развернут этот кукбук.
Каталог recipes содержит «рецепты», которые определяют конфигурацию сервиса. «Рецепты» – это, как правило, небольшие файлы, которые отвечают за настройку определённых аспектов больших систем. Если, к примеру, кукбук используется для установки и настройки веб-сервера, то «рецепт» может включить модуль или задать разумную конфигурацию брандмауэра.
Каталог templates отвечает за управление более сложными настройками. Здесь можно хранить целые конфигурационные файлы со встроенными командами Ruby. Переменные можно определить в других файлах.
Заключение
Теперь вы знакомы с базовыми понятиями системы управления конфигурациями Chef и знаете особенности работы каждого компонента.
Источник: www.8host.com
Chef для новичков
На тему систем централизованного управления конфигурациями на Хабре написано немало статей и, в частности, про Chef есть несколько хороших статей. Однако, количество релизов Chef растет, и я решил немного освежить его описание для читателей Хабра.
Статья предназначена как для новичков, так и для тех, кто уже знакомился с системой, но по какой-то причине отложил изучение и хочет все-таки продолжить. А продолжать стоит! Поскольку, Chef полезен и для администрирования нескольких VPS, и для управления большим парком серверов. Особенно, если вам часто приходится заниматься настройкой серверов с нуля, подключением дополнительных нод в кластер и т.д.
Теория
Без теоретических основ никуда. В первую очередь стоит сказать, что Chef, как и Puppet, изначально написан на Ruby, и будет плюсом, если вы уже владеете этим языком. Если же нет, то стоит изучить хотя бы азы. Начать можно со статьи “Just Enough Ruby for Chef”. Ее действительно будет вполне достаточно для понимания основ языка.
В официальном вики можно найти всю необходимую информацию для начала изучения Chef (в документации делается упор на описание платных продуктов компании — Enterprise Chef и Hosted Chef, я буду говорить про Open Source Chef).
В первую очередь стоит посмотреть обзор архитектуры и разобраться с основными понятиями. Попробую кратко их описать.
Инфраструктура
- Nodes (Ноды) — это любой, ваш сервер, физический либо виртуальный, который вы будете настраивать с помощью Chef.
- The Server (Chef-сервер) — непосредственно сам Chef-сервер к которому обращаются клиенты (Nodes), сервер состоит из нескольких компонентов:
- Web-UI — приложение на RoR представляющее собой веб-интерфейс для сервера;
- Erchef — ядро сервера, начиная с Chef 11.x написано, Erlang, полностью совместимо с прежней версией на Ruby;
- Bookshelf — хранилище для “поваренных книг”;
- Nginx — идет в комплекте, все API-запросы проходят через него;
- PostgreSQL — также включен в состав Chef-сервера, очевидно выполняет роль хранилища информации.
- Workstations (рабочая станция) — рабочее место администратора Chef, т.е. ваш ПК на котором вы будет подготавливать рецепты, поваренные книги и управлять всей кухней с помощью knife.
- Knife — какой шеф-повар без ножа? Knife это основной инструмент для работы с Chef из консоли. Именно с помощью “ножа“ вы будете управлять нодами и Chef-сервером.
Подготовка рецептов
- Чтобы уверенно начать готовить рецепты необходимо четко понимать все термины и определения:
- Сookbook (поваренная книга) — хранилище атрибутов, рецептов, шаблонов и файлов.
- Attribute (аттрибуты) — некие параметры конфигураций которые вы можете задавать для нод как через рецепты, так и через роли, рекомендую ознакомится с порядком применения атрибутов здесь.
- Templates (шаблоны конфигов) — вы можете распространять конфигурации как обычными файлами так параметризированными erb-шаблонами. Значения параметров шаблона в определенном порядке подставляются из атрибутов поваренных книг либо из ролей.
- Files — любые файлы, которые вы сможете распространять с помощью рецептов предварительно описав их путь назначения и права.
- Definitions (определения) — используются для описания новых или существующих ресурсов (напрмер служба, или виртуальный хост apache) и/или действий над ними.
- Libraries (библиотеки) — ни что иное как вставки кода на Ruby, в качестве расширений для рецептов.
- Resources (ресурсы) — ресурс это любой объект системы — файл, пользователь, группа, сервис и пр.
Практика
Установка Chef сервера
На сайте Get Chef выбираем актуальную версию Chef Server для вашего дистрибутива.
Я буду устанавливать сервер на CentOS 6.5, а рабочую станцию администратора буду настраивать на примере Ubuntu 12.04:
Сервер должен иметь “полное имя домена” (FQDN):
т.е. в /etc/hostname должна быть запись вида: chef.example.ru
Установку производим от пользователя с правами root.
rpm -Uvh https://opscode-omnibus-packages.s3.amazonaws.com/el/6/x86_64/chef-server-11.0.10-1.el6.x86_64.rpm
Далее нужно выполнить первоначальное конфигурирование сервера:
chef-server-ctl reconfigure
Установка Chef Client (Knife) на рабочее место администратора
Установку можно произвести одной командой:
curl -L https://www.opscode.com/chef/install.sh | sudo bash
Либо скачать deb или rpm пакет и установить его вручную.
Для работы с “поваренными книгами” нам понадобится консольный клиент git:
apt-get install git
Также нужно иметь Ruby версии => 1.9.1. Для Ubuntu 12.04 ставится так:
apt-get install ruby1.9.1
Склонируем себе в домашнюю директорию разметку репозитория для Chef:
git clone git://github.com/opscode/chef-repo.git
- chef-validator.pem приватный ключ chef сервера (используется клиентами для авторизации API-запросов к серверу)
- user.pem ваш приватный ключ для авторизации на сервере.
knife configure -i
здесь, нужно будет указать путь до приватных ключей, а также путь до директории с кукбуками. Файл конфигурации knife также будет находиться в директории ~/chef-repo/.chef/ и выглядеть будет примерно так:
cat /home/it/chef-repo/.chef/knife.rb
log_level :info log_location STDOUT node_name ‘it’ client_key ‘/root/Chef/chef-repo/.chef/it.pem’ validation_client_name ‘chef-validator’ validation_key ‘/home/it/chef-repo/.chef/chef-validator.pem’ chef_server_url ‘https://chef.example.ru:443’ syntax_check_cache_path ‘/home/it/chef-repo/.chef/syntax_check_cache’ cookbook_path [ ‘/home/it/chef-repo/cookbooks’, ‘/home/it/chef-repo/example’ ] # Список директорий с кукбуками knife[:editor] = ‘vim’ # Редактор для knife
Проверим работоспособность knife:
knife client list
все команды нужно выполнять из директории или поддиректорий вашего локального репозитория Chef.
Подключим первый сервер с помощью knife
Для этого используется команда knife bootstrap, которая устанавливает chef-клиента, создает нового пользователя на сервере и генерирует ключи:
knife bootstrap test.example.ru
в общем случае происходит подключение к хосту по ssh от имени root, но если доступ для root ограничен, то нужно указать пользователя с админскими (sudo) правами:
knife bootstrap test.example.ru —sudo -x admin -P Password
Проверим что сервер попал в список нод:
knife node list
test.example.ru
Применим первый кукбук
Итак, у нас подключена первая нода. Теперь мы можем инсталлировать на нее софт и менять его конфигурацию с помощью Chef. Но прежде нам нужно написать свой первый кукбук, либо взять готовый из репо Opscode на github. Второго варианта для начала будет вполне достаточно.
Перейдем в директорию где у нас должны лежать кукбуки
cd ~/chef-repo/cookbooks
и склонируем сюда первый кукбук, например для chef-client:
git clone https://github.com/opscode-cookbooks/chef-client.git
Если мы заглянем в metadata.rb, то увидим список зависимостей для данного кукбука:
suggests ‘bluepill’ suggests ‘daemontools’ suggests ‘runit’ depends ‘cron’, ‘>= 1.2.0’ depends ‘logrotate’, ‘>= 1.2.0’
их тоже придется склонировать себе, а затем на сервер.
Чтобы применять рецепты из данного кукбука, нужно предварительно закачать его сервер вместе со всеми зависимостями:
knife cookbook upload bluepill daemontools runit cron logrotate chef-client
Теперь мы можем добавить рецепт chef-client для нашей тестовой ноды и изменить период обращения клиента к серверу:
knife node edit test.example.ru
Конфигурация ноды представлена в json-формате. Пропишем период обращения ноды к серверу и добавим рецепт chef-client в run list:
< «name»: «test.example.ru», «chef_environment»: «_default», «normal»: < «chef_client»: < «interval»: «300» >, «tags»: [ ] >, «run_list»: [ «recipe[chef-client]» ] >
Напишем свой первый кукбук
Сделаем свой кукбук для тестовых рецептов:
knife cookbook create test
Добавим в рецепт “по умолчанию” директиву для установки списка пакетов, которые мы будем распространять на все наши серверы:
vim ~/chef-repo/cookbooks/test/recipes/default.rb
%w.each do |packages| package packages do action :install end end
Осталось только закачать кукбук на сервер и прописать его в run-list (список исполняемых рецептов) ноды, а лучше сделать роль и включить туда этот рецепт. Но вот незадача, нужен ведь еще репозиторий epel, как минимум. Можно положить файл конфига в кукбук и дописать в рецепт копирование конфига в yum.repos.d, либо воспользоваться кукбуком yum от opscode:
git clone https://github.com/opscode-cookbooks/yum.git
Также, скачаем кукбук yum-epel (почему-то в последнем релизе решили выделить рецепты с основными репами в отдельные кукбуки):
git clone https://github.com/opscode-cookbooks/yum-epel.git
Закачаем книги на сервер:
knife cookbook upload yum yum-epel
Теперь можем включить рецепт yum-epel в наш тестовый рецепт:
vim ~/chef-repo/cookbooks/test/recipes/default.rb
include_recipe “yum-epel” %w.each do |packages| package packages do action :install end end
Также можем прописать в атрибутах нашего кукбука исключения пакетов для epel-repo:
vim ~/chef-repo/cookbooks/test/attributes/default.rb
default[‘yum’][‘epel’][‘exclude’] = “test*”
Закачаем кукбук на сервер и применим рецепт на ноде:
knife cookbook upload test
knife node edit test.example.ru
< «name»: «test.example.ru», «chef_environment»: «_default», «normal»: < «chef_client»: < «interval»: «300» >, «tags»: [ ] >, «run_list»: [ «recipe[chef-client]», “recipe[test]” ] >
knife ssh name:test.example.ru «chef-client» -P r00tPassworD
Итак, вы получили первый опыт использования Chef. Теперь, я думаю стало ясно, что все не так уж сложно, как казалось. Главное не останавливаться на этом. Прочтите еще несколько статей, попробуйте применить рецепты из репозитория Opscode. Напишите пару своих рецептов, примените их.
Переведите описание своей серверной инфраструктуры на язык Chef. Пускай у вас уйдет на это несколько дней или ночей, за то потом скорость развертывания серверов будет на порядок выше, а досадных ошибок станет меньше. И помните, лучший способ изучить Chef — начать его использовать.
Источник: habr.com
8(495)2042511
Случайно нашел объявление, решил подключиться и попробовать.Я студент, учусь в МИФИ,но денег на оплату обучения не хватает, использую систему как подработку. Выезжаю по вечерам , получается в среднем 5-6 тыс за вечер. Пару раз бывало так, что брал заказ по пути в университет:) Пермяков Михаил Еще отзывы
Инструкция по программе Шеф(nowtaxi)
Программа nowtaxi «Шеф» от компании «Nowtaxi» одна из лучших программ для работы с заказами Яндекс Такси , есть приложение для Android(Google) и IOS(Apple) систем. Обе версии приложения абсолютно одинаковы и имеют все необходимые инструменты для работы с заказами в автоматическом режиме. Комиссии в программе от 13%, смотрите в разделе Яндекс Такси . В разделе Видео уроки можно посмотреть видео работы с приложением. Для регистрации необходимо подъехать в офис или заполнить заявку на подключение , адрес и телефон смотрите в разделе Контакты .
Условия работы в программы nowtaxi «ШЕФ»
1. Яндекс Такси + 5%, партнерские заказы включены, абонентская плата 33р. в сутки(ежедневно) ( +413р. в месяц лицензия на Я ндекс заказы) — все роботы включены.
2. Яндекс Такси + 8%, партнерские заказы включены, без абонентской платы ( +413р. в месяц лицензия на Я ндекс заказы) — все роботы включены.
3. Залоговая сумма при получении Яндекс заказов — 500р.
Круглосуточная поддержка оператора.
Источник: taaaxi.ru