Я работаю над созданием набора упражнений и руководств для самообучения (возможно, в конечном итоге, коллекции видео или презентаций Slideshare), охватывающих ряд тем, связанных с системным администрированием и операциями.
Мой план состоит в том, чтобы создать прототип и представить их, в первую очередь, исходя из предположения, что студенты будут создавать учетные записи AWS и работать над примерами, используя экземпляры EC2 и ограниченный набор связанных ресурсов. Я рекомендую студентам создать один базовый экземпляр, используя менее дорогого поставщика VPS, например Linode, в качестве «домашней базы» для большей части их работы, а затем запускать экземпляры (в основном t1.micro, где это возможно) во время каждого упражнения. , и выключайте их после каждого сеанса работы. (Цель состоит в том, чтобы сделать это доступным для студентов, финансирующих собственное профессиональное образование ... поэтому я приложу дополнительные усилия для практических занятий и разработки учебных сессий, которые минимизируют стоимость услуг).
План в основном будет использовать бесплатные AMI AWS Marketplace для CentOS, Debian, Ubuntu и FreeBSD по мере необходимости. (Я также со временем изучу альтернативные облака, если только Amazon Inc. не приедет спонсировать мой проект), хотя я мог бы создать несколько пользовательских AMI на их основе и опубликовать их на Marketplace как часть своих предложений.
Ранние уроки будут делать упор на использование Python Boto (это то, что мне до сих пор комфортно), а некоторые инструменты, которые я создаю, помогут управлять этой инфраструктурой, которую создает каждый ученик ... и я буду предлагать ученикам использовать Ansible на всем протяжении большинство упражнений (для настройки сеанса и разрушения коллекций экземпляров). Один набор уроков будет на Puppet, другой - на Chef. В большинстве последующих уроков (Hadoop, Cassandra, MongoDB, Zookeeper) будет (требовать / предполагать?), Что ученик строит свои кластеры, используя один из них.
Это, наконец, подводит меня к моему вопросу. (Прошу прощения за бессвязную преамбулу, но я считаю необходимым установить контекст).
Вчера вечером я установил простейшую конфигурацию Puppet (версия 3), которая, возможно, пригодится изучающим системное администрирование. Пара экземпляров CentOS 6.4, один как марионеточный мастер, другой как клиент. Я соединил их вместе, используя уродливые имена ec * .internal (в файлах hosts и конфигах). Затем внес изменения (создание записей ключей пользователя, группы и ssh в моем манифесте site.pp) и подтвердил, что они работают (запустив команду puppet agent --test на клиенте). Естественно, самыми большими препятствиями были: внести изменения в конфигурацию группы безопасности, отключить конфигурацию CentOS IPTables по умолчанию, отключить режим принудительного применения SELinux и возиться с dns_alt_names =
директивы в файле Puppetmaster /etc/puppet/puppet.conf. (Позже я выясню, как правильно предоставить необходимые разрешения SELinux для компонентов Ruby / Apache / Passenger, чтобы повторно включить SELinux).
Сегодня вечером, когда я собирался продолжить с того места, на котором остановился, меня осенило (довольно поздно), что мне действительно нужен стабильный IP и обратный DNS для этой модели. Необходимость перенастроить марионеточного мастера и восстановить его сертификаты PEM, а также сертификаты для всех клиентов в начале каждого рабочего сеанса будет утомительнее, чем образовательная (и написание сценариев всего, что будет очень мало применимо к любой нормальной будущей рабочей среде.
Итак, да, нужно либо выделить эластичный IP-адрес (по крайней мере, один) и запросить для него обратную запись DNS ... либо мне нужно переработать свое предположение и основать эти упражнения на предварительном наборе набора VPC - до уроков.
На данный момент я только что настроил EIP и ввел запрос на замену PTR (который, кстати, в рабочем процессе Amazon похож на форму запроса на включение STMP).
Я ищу предложения о том, следует ли мне делать это вокруг VPC (и предсказать уроки по настройке DNS-сервера в этой виртуальной сети, возможно, размещенного на самом puppetmaster, по крайней мере, на начальном этапе) или я должен построить уроки по использованию один или два универсальных эластичных IP-адреса (и, возможно, позже переходят к миграции сервисов puppetmaster за HAProxy или другим подобным интерфейсом в качестве другого упражнения).
Предложения? Критика?
Вы должны использовать VPC, а узлы должны находиться в подсети, где шлюзом по умолчанию является Интернет-шлюз VPC. Есть два способа убедиться, что целевая среда одинакова для всех, кто следит за вашими уроками:
Благодаря новой функции, позволяющей публичный IP-адрес, назначенный при запуске, вы по-прежнему сможете получить доступ ко всем системам удаленно без EIP или узла перехода, но также сможете обращаться к системам по их статическому внутреннему адресу VPC.
Что касается DNS, я считаю, что включить функцию имен хостов DNS должен помочь вам, но я не использовал его широко.