Ansible Tutorial - Научете се да пишете Ansible Playbooks



В този блог на Ansible Tutorial ще научите как да пишете Ansible playbooks, adhoc команди и да изпълнявате практически за разполагане на Nginx на вашата хост машина.

Ansible Tutorial

Надявам се, че сте преминали през предишния ми блог, за да научите и най-използваните терминологии на Ansible. В случай, че не сте го направили, моля, проверете го, за да можете да разберете по-добре този урок за Ansible.Трябва също да знаете, че Ansible съставлява важна част от като инструмент за управление на конфигурация, внедряване и оркестрация.

Позволете ми да ви дам преглед на този „Урок за отговор“:





Урок за Ansible Playbook | Обучение на DevOps | Едурека

Ansible Tutorial - Писане на Ansible Playbooks

Playbooks в Ansible са написани във формат YAML. Това е разбираем за хора език за сериализация на данни. Обикновено се използва за конфигурационни файлове. Може да се използва и в много приложения, където се съхраняват данни.



За Ansible, почти всеки YAML файл започва със списък. Всеки елемент в списъка е списък с двойки ключ / стойност, обикновено наричани „хеш“ или „речник“. И така, трябва да знаем как да пишем списъци и речници в YAML.

Всички членове на списък са редове, започващи на едно и също ниво на отстъп, започвайки с „-“ (тире и интервал). Възможни са по-сложни структури от данни, като например списъци с речници или смесени речници, чиито стойности са списъци или комбинация от двете.

напр. За списък на отделите в edureka:



отдели: - маркетинг - продажби - решения - писане на съдържание - поддръжка - продукт

Сега нека ви дам пример за речник:

-США -континент: Северна Америка -капитал: Вашингтон, окръг Колумбия -население: 319 милиона

Домакини и потребители:

За всяка игра в книга за игри трябва да изберете кои машини във вашата инфраструктура да насочвате и кой отдалечен потребител да изпълнява задачите. За да включим хостове в инвентаризацията Ansible, ще използваме IP адресите на хост машините.

Обикновено хостовете са списък с една или повече групи или модели на хост, разделени с двоеточие. Отдалеченият потребител е само името на потребителския акаунт.

Променливи:

Ansible използва променливи, които са дефинирани по-рано, за да дадат възможност за по-голяма гъвкавост в книгите за игра и ролите. Те могат да се използват за цикъл през набор от зададени стойности, достъп до различна информация като името на хоста на системата и замяна на определени низове в шаблони с конкретни стойности.

Ansible вече дефинира богат набор от променливи, индивидуални за всяка система. Винаги, когато Ansible ще работи в системата, всички факти и информация за системата се събират и задават като променливи.

Но има правило за именуване на променливи. Имената на променливите трябва да бъдат букви, цифри и долни черти. Променливите винаги трябва да започват с буква. Напр. wamp_21, port5 е валидни имена на променливи, докато 01_port, _server са невалидни.

Задачи:

Задачите ви позволяват да разделите битове от конфигурационната политика на по-малки файлове. Задачата включва изтегляне от други файлове. Задачите в Ansible се съчетават почти с английското значение.

Например: Инсталиране, актуализиране и т.н.

Манипулатори:

Манипулаторите са точно като обикновените задачи в книгата за игра Ansible, но се изпълняват само ако задачата съдържа директива за уведомяване и също така показва, че е променила нещо. Например, ако конфигурационният файл се промени, тогава задачата, отнасяща се до конфигурационния файл, може да уведоми манипулатора за рестартиране на услугата.

Позволете ми да ви дам пример за книга за игри, която ще стартира програмата за сървъри Apache httpd:

----домакини: уеб сървъри чия: http_port: 80 max_clients: 200 отдалечен_потребител: корен задачи: - име: уверете се, че apache е с най-новата версия ням: име = httpd състояние = най-късно - име: напишете конфигурационния файл на apache шаблон: src = / srv / httpd.j2 dest = / etc / httpd.conf уведомявам: - рестартирайте apache - име: уверете се, че Apache работи (и го активирайте при зареждане) обслужване: име = httpd състояние = стартирано активирано = да манипулатори: - име: рестартирайте apache обслужване: име = httpd състояние = рестартирано

Надявам се примерът да ви свърже с цялото описание на компонентите на playbook, което споменах по-горе. Ако все още не е ясно за вас, не се притеснявайте, всичките ви съмнения ще бъдат ясни в по-късната част на този блог.

Всичко е за книгите за игри. Книгите за игри, които ще бъдат написани от вас. Но Ansible ви предоставя и широка гама от модули, които можете да използвате.

Ansible Tutorial - Модули

Модулите в Ansible са идемпотентни. От гледна точка на услугата RESTful, за да бъде една идемпотентна дадена операция (или повикване за услуга), клиентите могат да извършват едно и също повикване многократно, като същевременно дават същия резултат. С други думи, отправянето на множество еднакви заявки има същия ефект като отправяне на една заявка.

В Ansible има различни видове модули

  • Основни модули
  • екстри модули

Основни модули

Това са модули, които основният екип на Ansible поддържа и винаги ще се доставя със самия Ansible. Те също така ще получат малко по-висок приоритет за всички заявки от тези в репозиториите „екстри“.

Източникът на тези модули се хоства от Ansible на GitHub в ядрото Ansible-modules.

Допълнителни модули

Понастоящем тези модули се доставят с Ansible, но в бъдеще може да се доставят отделно. Те също се поддържат предимно от общността Ansible. Неядрените модули все още са напълно използваеми, но може да получат малко по-ниски нива на отговор за проблеми и заявки за изтегляне.

Популярните модули „екстри” могат да бъдат повишени до основни модули с течение на времето.

Източникът за тези модули се хоства от Ansible на GitHub в Ansible-modules-extras.

Например: Един от модулите за екстри в модулите за дистанционно управление е модулът ipmi_power, който е захранващ механизъм за отдалечените машини. Той изисква python 2.6 или по-нова версия и pyghmi да работи.

Можете да използвате този модул, като напишете adhoc команда като тази, която съм написал по-долу:

конвертира низ в дата java -
ipmi_power: name = 'test.domain.com' user = 'localhost' password = 'xyz' state = 'on'

Ansible Tutorial - Възвръщаеми стойности

Модулите Ansible обикновено връщат структура от данни, която може да се регистрира в променлива или да се види директно при извеждане от програмата Ansible. Всеки модул може по желание да документира свои собствени уникални връщани стойности.

Някои примери за възвръщаеми стойности са:

  • change: връща с логическа стойност, когато задачата направи някаква промяна.
  • неуспешно: връща булева стойност, ако задачата е неуспешна
  • msg: връща низ с общо съобщение, предадено на потребителя.

Ansible Tutorial - AdHoc Commands

Командите Adhoc са прости команди от един ред за извършване на някакво действие. Стартиращите модули с Ansible команди са adhoc команди.

E.g:

ansible хост -m netscaler -a 'nsc_host = nsc.example.com потребител = apiuser парола = apipass' 

Горната команда adhoc използва модула netscaler, за да деактивира сървъра. Налични са стотици модули в Ansible, откъдето можете да препращате и пишете adhoc команди.

Е, стига с всички теоретични обяснения, нека ви обясня Ansible с малко ръце.

Ansible Tutorial - Hands On

Ще напиша книга за игра, за да инсталирам Nginx на моя възел / хост машина.

Нека да започнем :)

Етап 1: Свържете се с хостовете си чрез SSH. За това трябва да генерирате публичен SSH ключ.

Използвайте командата по-долу:

ssh-keygen

Генериране на ключ Ssh - Урок за отговор - Edureka

Както можете да видите на снимката по-горе, командата ssh-keygen генерира публичен SSH ключ.

Стъпка 2: Следващата ви задача е да копирате публичния SSH ключ на вашите хостове. За да направите това, използвайте командата по-долу:

ssh-copy-id -i root @

Горната снимка показва SSH ключа, който се копира на хостовете.

Стъпка 3: Избройте IP адресите на вашите хостове / възли във вашия инвентар.

Използвайте следната команда:

vi / etc / ansible / hosts

двоичен алгоритъм за търсене в java

Това ще отвори редактор vi, където можете да изброите IP адресите на вашите хостове. Това е вашият инвентар.

Стъпка 4: Нека проверим, за да се уверим, че е установена връзка.

Горната снимка потвърждава, че е установена връзка между вашата контролна машина и хоста.

Стъпка 5: Нека сега напишем книга за игра, за да инсталираме Nginx на хост машината. Можете да напишете вашата книга за игри в редактора vi. За това просто създайте вашата книга за игри, като използвате командата:

vi

Снимката по-долу показва моята книга за игри за инсталиране на Nginx, написана във формат YAML.

Задачите на книгата за игри са дефинирани в YAML като списък с речници и се изпълняват отгоре надолу. Ако имаме няколко хоста, тогава всяка задача се изпробва за всеки хост, преди да преминем към следващата. Всяка задача се дефинира като речник, който може да има няколко клавиша, като например „name“ или „sudo“, които означават името на задачата и дали изисква привилегии на sudo.

Променлива сървър_порт е зададен, който слуша на TCP порт 8080 за входящи заявки.

Тук първата задача е да получите необходимия пакет за инсталиране на Nginx и след това да го инсталирате.Вътрешно Ansible ще провери дали директорията съществува и ще я създаде, ако не е, в противен случай няма да направи нищо.

Следващата задача е да конфигурирате Nginx.В Nginx контекстите съдържат подробности за конфигурацията.

Тук шаблонът е файл, който можете да разположите на хостове. Файловете на шаблони обаче включват и някои референтни променливи, които са извлечени от променливи, дефинирани като част от книгата за игра Ansible или факти, събрани от хостовете. Факти, съдържащи подробности за конфигурацията, се изтеглят от директорията на източника и се копират в директорията на местоназначението.

Тук манипулаторите определят действието, което да се извърши само след уведомяване за задачи или промени в състоянието. В тази книга за игри определихме, уведомете: рестартирайте манипулатора на Nginx, който ще рестартира Nginx, след като файловете и шаблоните бъдат копирани на хостове.

Сега запазете файла и излезте.

Стъпка 6: Сега нека стартираме тази книга за игри, като използваме командата по-долу:

ansible-playbook .yml

На екранната снимка по-горе можем да видим, че нашата задача се изпълнява, Nginx се инсталира.

Стъпка 7: Нека проверим дали Nginx е инсталиран на моята хост машина. Използвайте командата по-долу:

ps waux | grep nginx

Можете да видите на екранната снимка по-горе, че се изпълняват различни идентификатори на процеси 3555 и 103316, което гарантира, че Nginx се изпълнява на вашите хост машини.

Честито! Успешно сте внедрили Nginx на вашия хост, използвайки Ansible playbooks. Надявам се да ви е харесало да четете този блог на Ansible Tutorial. Моля, уведомете ме, ако имате въпроси в раздела за коментари по-долу.

Ако сте намерили това Ansible Tutorial ”Подходящо, вижте от Edureka, доверена компания за онлайн обучение с мрежа от над 250 000 доволни учащи, разпространени по целия свят. Курсът за обучение за сертифициране Edureka DevOps помага на обучаващите се да придобият опит в различни процеси и инструменти на DevOps като Puppet, Jenkins, Ansible, Nagios и Git за автоматизиране на множество стъпки в SDLC.