Как стать кукловодом в реальной жизни

Обновлено: 02.07.2024

Это не будет длинной статьей с философской раскладкой сути выше сказанного. Пусть каждый, в меру своего Пробуждения, уровня Сознания, осмыслит или проигнорирует данное утверждение.

Я - это не мои мысли

Каждый день, неутомимо, все время, мы ведем "свой" внутренний диалог . Он не останавливается, он бесконечен. Днем, перед сном, при пробуждении. Все время. Он не дает нам до конца продумать, принять то или иное, желаемое Душой. Он перебивает, отвлекает, мешает, выдергивает из наслаждения Мечтами, он не дает понять, что нам пытаются донести при разговоре другие люди.

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

Вы в курсе что это множественное число. Мы разговариваем не с собой! Вернее это ОН говорит, обращаясь к Нам. Это его речь.

И мы даже не замечаем этого. Совсем. Мы привыкли так жить, жить с НИМ.

И знаете что - это самая большая трагедия Человека. Жить, отождествляя себя с НИМ. Жить - не своей Истинной Жизнью.

И имя ему - УМ(РАЗУМ), трансформировавшийся в РАССУДОК. Ум, захвативший власть над Душой и Телом называется РАССУДОК . Он рассуждает, судит. Все время, бесконечно. Он стал НАШИМ СУДЬЕЙ . Высшей инстанцией.

И вот тогда, когда Вы первый раз в Жизни осознаете все выше сказанное, сядете, послушаете этот диалог, поймете что все, что Вы слышите, с той стороны не есть "ВЫ", вот тогда и начнутся первые шаги к осознанности и свободе перемещения СВОЕГО внимания в Жизни. А не чужого.

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

Просто выберите время, сядьте, в одиночестве и тишине. Закройте глаза, сосредоточьте свое внимание на диалоге или монологе Вашего Рассудка. Не мешайте ему говорить, показывать вспышки образов, пусть говорит. Не отвечайте, не ввязывайтесь в это, наблюдайте. Я обещаю, что через неделю ежедневной практики, Вы осознаете, что Вы - НЕ ЕСТЬ ВАШИ МЫСЛИ.

И после этого, вам станет намного проще принимать верные решения и начать путь к себе. Это конечно тоже - общее высказывание. Но это начало, для тех, кто идет домой .

Как стать кукловодом или Puppet для начинающих

image

Здравствуйте.

Этот топик открывает цикл статей по использованию системы управления конфигурацией Puppet.

Что такое система управления конфигурацией?

Предположим, что у вас есть парк серверов, выполняющих различные задачи. Пока серверов мало и вы не растёте, вы легко настраиваете каждый сервер вручную. Устанавливаете ОС (может быть, автоматизированно), добавляете пользователей, устанавливаете софт, вводя команды в консоль, настраиваете сервисы, правите конфиги ваших любимых текстовых редакторов (nanorc, vimrc), выставляете на них одинаковые настройки DNS-сервера, устанавливаете агент системы мониторинга, настраиваете syslog для централизованного сбора логов… Словом, работы довольно много и она не особенно интересна.

Я искренне верю, что хороший админ — ленивый админ. Он не любит делать что-то несколько раз. Первая мысль — написать пару скриптов, в котором будет что-то наподобие:


Вроде всё стало легко и хорошо. Нужно что-то сделать — пишем новый скрипт, запускаем. Изменения приходят на все серверы последовательно. Если скрипт хорошо отлажен — всё станет хорошо. До поры.

Теперь представьте, что серверов стало больше. Например, сотня. А изменение долгое — например, сборка чего-нибудь большого и страшного (например, ядра) из исходников. Скрипт будет выполняться сто лет, но это полбеды.

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

Самое плохое — это то, что в подобных скриптах вы описываете действия, которые необходимо выполнить для приведения системы в определенное состояние, а не само это состояние. Значит, если система изначально находилась не в том состоянии, что вы предполагали, то всё обязательно пойдет не так. Манифесты Puppet декларативно описывают необходимое состояние системы, а вычисление, как к нему прийти из текущего состояния — задача самой системы управления конфигурацией.

Для сравнения: манифест puppet, выполняющий ту же работу, что и пара скриптов из начала топика:

Если правильно использовать серверы и потратить некоторое время на первичную настройку системы управления конфигурацией, можно добиться такого состояния парка серверов, что вам не потребуется логиниться на них для выполнения работы. Все необходимые изменения будут приходить к ним автоматически.

Что такое Puppet?

Puppet — система управления конфигурацией. Архитектура — клиент-серверная, на сервере хранятся конфиги (в терминах puppet они называются манифесты), клиенты обращаются к серверу, получают их и применяют. Puppet написан на языке Ruby, сами манифесты пишутся на особом DSL, очень похожем на сам Ruby.

Первые шаги

Давайте забудем о клиентах, серверах, их взаимодействии и т.п. Пусть у нас есть только один сервер, на котором установлена голая ОС (здесь и далее я работаю в Ubuntu 12.04, для других систем действия будут несколько отличаться).

Сначала установим puppet последней версии.

Замечательно. Теперь у нас в системе установлен puppet и с ним можно играть.

Hello, world!

Создадим первый манифест:

Манифесты, приведённые в этом топике можно применять вручную с помощью puppet apply. Тем не менее, в последующих топиках для работы будет использоваться master-slave конфигурация (стандартная для Puppet).

Теперь посмотрите на содержимое файла /tmp/helloworld. В нём окажется (удивительно!) строка «Hello, world!», которую мы задали в манифесте.

Вы можете сказать, что можно было сделать echo "Hello, world!" > /tmp/helloworld , это было бы быстрее, проще, не пришлось бы думать, писать какие-то страшные манифесты и вообще это нафиг никому не нужно это как-то слишком сложно, но задумайтесь серьезнее. На самом деле, необходимо было бы написать touch /tmp/helloworld && echo "Hello, world!" > /tmp/helloworld && chmod 644 /tmp/helloworld && chown root /tmp/helloworld && chgrp root /tmp/helloworld , чтобы гарантированно добиться того же результата.

Давайте по строкам разберём, что именно содержится в нашем манифесте:


В терминах Puppet здесь описан ресурс типа файл с названием (title) /tmp/helloworld.

Ресурсы
  • файлы;
  • пакеты (Puppet поддерживает пакетные системы многих дистрибутивов);
  • сервисы;
  • пользователи;
  • группы;
  • задачи cron;
  • и т. д.

В Puppet есть возможность добавлять свои ресурсы. Поэтому если хорошенько заморочиться, можно докатиться до манифестов наподобие:

Вкусно? Не то слово!

Причем, самое вкусное, на мой взгляд — это не автоматизация рутины. Если вы например, идиот, и постоянно пересетапливаете ваши серверы в продакшне, Puppet позволит подхватить старый любовно созданный набор пакетов и конфигов с нуля в полностью автоматическом режиме. Вы просто устанавливаете Puppet-агент, подключаете его к вашему Puppet-мастеру и ждёте. Всё придёт само. На сервере волшебным (нет, правда волшебным!) образом появятся пакеты, разложатся ваши ssh-ключи, установится фаервол, придут индивидуальные настройки bash, сети, установится и настроится весь софт, который вы предусмотрительно ставили с помощью Puppet.
Кроме того, Puppet при старании позволяет получить самодокументируемую систему, ибо конфигурация (манифесты) сами же являются костяком документации. Они всегда актуальны (они же работают уже), в них нет ошибок (вы же проверяете свои настройки перед запуском), они минимально подробны (работает же).

Ещё немного магии
В Puppet есть возможность использовать кроссдистрибутивные манифесты, это одна из целей, для которых он создавался. Я намеренно никогда не пользовался этим и вам не рекомендую. Парк серверов должен быть максимально гомогенным в плане системного ПО, это позволяет не думать в критические моменты «айблин, тут
rc.d, а не init.d» (реверанс в сторону ArchLinux) и вообще позволяет меньше думать на рутинных задачах.

Многие ресурсы зависят от других ресурсов. Например, для ресурса «сервис sshd» необходим ресурс «пакет sshd» и опционально «конфиг sshd»
Посмотрим, как это реализуется:

Здесь используется инлайн-конфиг, который делает манифест некрасивым. На самом деле так почти никогда не делается, существует механизм шаблонов, основанный на ERB, и возможность просто использовать внешние файлы. Но нас не это интересует.

Самые вкусные строчки здесь — это строчки зависимостей — require и subscribe.

Puppet поддерживает много вариантов описания зависимостей. Подробно, как всегда, можно прочитать в документации.

  • Require означает ровно то, что ожидается. Если ресурс А зависит (require) от ресурса Б, то Puppet сначала обработает ресурс Б, а потом вернётся к ресурсу А.
  • Subscribe даёт чуть более хитрое поведение. Если ресурс А подписан (subscribe) на ресурс Б, то Puppet сначала обработает ресурс Б, а потом вернётся к ресурсу А (поведение как у require), и далее при изменениях Б, будет заново обрабатываться А. Это очень удобно для создания сервисов, зависящих от их конфигов (как в примере выше). Если конфиг изменяется, сервер перезапускается, не нужно самому об этом беспокоиться.

Существуют также notify, before, но мы их здесь касаться не будем. Интересующимся — в уже упопомянутую документацию.

На текущий момент мы уже научились писать простые манифесты с указанием зависимостей между ресурсами. Очень многие простые демоны ложатся в модель «пакет-конфиг-сервис», поэтому даже в таком виде puppet уже годится для использования.
В последующих топиках будет описано, как использовать более мощные возможности puppet при создании сферического LAMP-хостинга в вакууме (если есть другие идеи сферического проекта для обучения — добро пожаловать в личку или в комментарии).

Основные техники кукловода

Основные техники кукловода

Как получать то, чего хотите? Мы все чего-то хотим: денег, секса, признания, удовольствий, чтобы с нами считались. А получить это можно только у других людей.

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

У вас могут быть две проблемы: либо вы не имеете ничего ценного, либо не умеете давать. Если не имеете, раздобудьте любым способом. Научитесь, получите образование, купите, займите, в конце концов. Хотя чаще бывает, что у человека есть что предложить другим, просто он этого не видит, не верит в себя. Если вам трудно давать, то вы, возможно, жадный. Тогда учитесь дарить.

В-третьих, надо уметь манипулировать. То есть играть на эмоциях, интриговать, соблазнять. Хитрить и обманывать. Просить так, чтобы вам не могли отказать. Многие считают, что все это плохо. Они думают, что люди должны быть честными и искренними со всеми и всегда. А на деле выходит, что в таких людях ничего не держится. Малейшее раздражение и недовольство они выплескивают на окружающих, которые стремятся держаться от них подальше. А когда надо отстоять свои права, они стесняются и не могут этого сделать.

В-четвертых, чтобы успешно общаться на внешнем уровне, надо следовать стандарту и знать ритуалы людей, с которыми вы общаетесь. Если вас занесло на тусовку хиппи, то лучше, если у вас длинные волосы и расхристанная одежда. Если же вы устраиваетесь на работу, то приходите в костюме и воздержитесь от жаргонных словечек. Это банально, но многие люди соответствуют не тем стандартам и исполняют не те ритуалы. И после этого удивляются, что их не приняли на работу, что у них мало знакомых и не у кого одолжить денег.

Чтобы достигать своих целей и получать желаемое, полезно развить и научиться непринужденно использовать несколько поведенческих навыков.

1. Понимать чужие желания, стремления и потребности. Не ждать, что человек сам все расскажет, а распознавать их, наблюдая за собеседником, его поведением, жестами, мимикой, интонацией. Хорошо, если вы откроете в человеке такие желания, в которых он сам себе не признается. Зная желания и стремления человека, вы сможете использовать его в своих целях. Или просто помочь их исполнить. Он обязательно отблагодарит вас за это.

2. Показать собеседнику его значимость, то, что вы уважаете его, восхищаетесь им. Искренне. Например, сделать изящный комплимент. Нужно научиться говорить уместные комплименты, поддержать и подбодрить кого угодно: мужчину и женщину, близкого друга и просто знакомого, начальника и подчиненного.

3. Просить. Без этого вы вообще ничего не получите. У людей просто не будет причин дать вам то, чего вы хотите. Причем просить надо так, чтобы вам было трудно отказать.

5. Иметь хватку. Иногда нужно не просить, не добиваться и вообще не ждать согласия и разрешения, а просто взять то, что хочешь. Это непросто для того, кто боится показаться самому себе плохим: причинить другому неудобство, поступить вопреки своей совести.

Не знаю, что делать в жизни. Как выбрать и найти жизненный путь?

6. Демонстрировать уверенность. Это очень важно, так как люди всегда и везде предпочитают иметь дело с уверенным в себе человеком, а не с нытиком, рохлей или жертвой.

8. Притворяться, играть. Людей встречают по одежке, судят по первому впечатлению. Им чаще всего дела нет до ваших переживаний. Часто ваши чувства только мешают, если не соответствуют ожиданиям окружающих. Да и сами вы не всегда хотите, чтобы они стали известны. Поэтому очень полезно уметь подстраиваться под ожидания окружающих: делать и говорить именно то, что они хотят увидеть и услышать.

9. Быть гибким. Если у вас что-то не получается, найдите другой способ сделать это, вместо того чтобы тупо повторять неудавшиеся попытки. Так вы быстрее добьетесь своего. Хорошо, если для каждого дела, для каждой жизненной задачи, с которой вы сталкиваетесь, вы знаете не один способ решения, а пять или десять.

Как стать кукловодом или Puppet для начинающих

image

Здравствуйте.

Этот топик открывает цикл статей по использованию системы управления конфигурацией Puppet.

Что такое система управления конфигурацией?

Предположим, что у вас есть парк серверов, выполняющих различные задачи. Пока серверов мало и вы не растёте, вы легко настраиваете каждый сервер вручную. Устанавливаете ОС (может быть, автоматизированно), добавляете пользователей, устанавливаете софт, вводя команды в консоль, настраиваете сервисы, правите конфиги ваших любимых текстовых редакторов (nanorc, vimrc), выставляете на них одинаковые настройки DNS-сервера, устанавливаете агент системы мониторинга, настраиваете syslog для централизованного сбора логов… Словом, работы довольно много и она не особенно интересна.

Я искренне верю, что хороший админ — ленивый админ. Он не любит делать что-то несколько раз. Первая мысль — написать пару скриптов, в котором будет что-то наподобие:


Вроде всё стало легко и хорошо. Нужно что-то сделать — пишем новый скрипт, запускаем. Изменения приходят на все серверы последовательно. Если скрипт хорошо отлажен — всё станет хорошо. До поры.

Теперь представьте, что серверов стало больше. Например, сотня. А изменение долгое — например, сборка чего-нибудь большого и страшного (например, ядра) из исходников. Скрипт будет выполняться сто лет, но это полбеды.

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

Самое плохое — это то, что в подобных скриптах вы описываете действия, которые необходимо выполнить для приведения системы в определенное состояние, а не само это состояние. Значит, если система изначально находилась не в том состоянии, что вы предполагали, то всё обязательно пойдет не так. Манифесты Puppet декларативно описывают необходимое состояние системы, а вычисление, как к нему прийти из текущего состояния — задача самой системы управления конфигурацией.

Для сравнения: манифест puppet, выполняющий ту же работу, что и пара скриптов из начала топика:

Если правильно использовать серверы и потратить некоторое время на первичную настройку системы управления конфигурацией, можно добиться такого состояния парка серверов, что вам не потребуется логиниться на них для выполнения работы. Все необходимые изменения будут приходить к ним автоматически.

Что такое Puppet?

Puppet — система управления конфигурацией. Архитектура — клиент-серверная, на сервере хранятся конфиги (в терминах puppet они называются манифесты), клиенты обращаются к серверу, получают их и применяют. Puppet написан на языке Ruby, сами манифесты пишутся на особом DSL, очень похожем на сам Ruby.

Первые шаги

Давайте забудем о клиентах, серверах, их взаимодействии и т.п. Пусть у нас есть только один сервер, на котором установлена голая ОС (здесь и далее я работаю в Ubuntu 12.04, для других систем действия будут несколько отличаться).

Сначала установим puppet последней версии.

Замечательно. Теперь у нас в системе установлен puppet и с ним можно играть.

Hello, world!

Создадим первый манифест:

Манифесты, приведённые в этом топике можно применять вручную с помощью puppet apply. Тем не менее, в последующих топиках для работы будет использоваться master-slave конфигурация (стандартная для Puppet).

Теперь посмотрите на содержимое файла /tmp/helloworld. В нём окажется (удивительно!) строка «Hello, world!», которую мы задали в манифесте.

Вы можете сказать, что можно было сделать echo "Hello, world!" > /tmp/helloworld , это было бы быстрее, проще, не пришлось бы думать, писать какие-то страшные манифесты и вообще это нафиг никому не нужно это как-то слишком сложно, но задумайтесь серьезнее. На самом деле, необходимо было бы написать touch /tmp/helloworld && echo "Hello, world!" > /tmp/helloworld && chmod 644 /tmp/helloworld && chown root /tmp/helloworld && chgrp root /tmp/helloworld , чтобы гарантированно добиться того же результата.

Давайте по строкам разберём, что именно содержится в нашем манифесте:


В терминах Puppet здесь описан ресурс типа файл с названием (title) /tmp/helloworld.

Ресурсы
  • файлы;
  • пакеты (Puppet поддерживает пакетные системы многих дистрибутивов);
  • сервисы;
  • пользователи;
  • группы;
  • задачи cron;
  • и т. д.

В Puppet есть возможность добавлять свои ресурсы. Поэтому если хорошенько заморочиться, можно докатиться до манифестов наподобие:

Вкусно? Не то слово!

Причем, самое вкусное, на мой взгляд — это не автоматизация рутины. Если вы например, идиот, и постоянно пересетапливаете ваши серверы в продакшне, Puppet позволит подхватить старый любовно созданный набор пакетов и конфигов с нуля в полностью автоматическом режиме. Вы просто устанавливаете Puppet-агент, подключаете его к вашему Puppet-мастеру и ждёте. Всё придёт само. На сервере волшебным (нет, правда волшебным!) образом появятся пакеты, разложатся ваши ssh-ключи, установится фаервол, придут индивидуальные настройки bash, сети, установится и настроится весь софт, который вы предусмотрительно ставили с помощью Puppet.
Кроме того, Puppet при старании позволяет получить самодокументируемую систему, ибо конфигурация (манифесты) сами же являются костяком документации. Они всегда актуальны (они же работают уже), в них нет ошибок (вы же проверяете свои настройки перед запуском), они минимально подробны (работает же).

Ещё немного магии
В Puppet есть возможность использовать кроссдистрибутивные манифесты, это одна из целей, для которых он создавался. Я намеренно никогда не пользовался этим и вам не рекомендую. Парк серверов должен быть максимально гомогенным в плане системного ПО, это позволяет не думать в критические моменты «айблин, тут
rc.d, а не init.d» (реверанс в сторону ArchLinux) и вообще позволяет меньше думать на рутинных задачах.

Многие ресурсы зависят от других ресурсов. Например, для ресурса «сервис sshd» необходим ресурс «пакет sshd» и опционально «конфиг sshd»
Посмотрим, как это реализуется:

Здесь используется инлайн-конфиг, который делает манифест некрасивым. На самом деле так почти никогда не делается, существует механизм шаблонов, основанный на ERB, и возможность просто использовать внешние файлы. Но нас не это интересует.

Самые вкусные строчки здесь — это строчки зависимостей — require и subscribe.

Puppet поддерживает много вариантов описания зависимостей. Подробно, как всегда, можно прочитать в документации.

  • Require означает ровно то, что ожидается. Если ресурс А зависит (require) от ресурса Б, то Puppet сначала обработает ресурс Б, а потом вернётся к ресурсу А.
  • Subscribe даёт чуть более хитрое поведение. Если ресурс А подписан (subscribe) на ресурс Б, то Puppet сначала обработает ресурс Б, а потом вернётся к ресурсу А (поведение как у require), и далее при изменениях Б, будет заново обрабатываться А. Это очень удобно для создания сервисов, зависящих от их конфигов (как в примере выше). Если конфиг изменяется, сервер перезапускается, не нужно самому об этом беспокоиться.

Существуют также notify, before, но мы их здесь касаться не будем. Интересующимся — в уже упопомянутую документацию.

На текущий момент мы уже научились писать простые манифесты с указанием зависимостей между ресурсами. Очень многие простые демоны ложатся в модель «пакет-конфиг-сервис», поэтому даже в таком виде puppet уже годится для использования.
В последующих топиках будет описано, как использовать более мощные возможности puppet при создании сферического LAMP-хостинга в вакууме (если есть другие идеи сферического проекта для обучения — добро пожаловать в личку или в комментарии).

Читайте также: