Отговорни роли - Най-добрият начин да разплетете своите Playbook



Този блог Ansible Roles разказва за това как се използват ролите, за да направят сложните книги за четене и многократна употреба с демонстрация на настройка на MEAN Stack.

Ansible ни позволява да автоматизираме управлението на конфигурацията на системите и да добавим произволен брой клиенти, както желаем. Замисляли ли сте се колко сложно може да стане това? Замисляли ли сте се колко дълго и объркващо могат да станат книгите за игри? Как все още Ansible изглежда да изглежда като бриз? Той използва концепцията за Ansible Roles и за това ще говорим в този блог.

Обхванати теми:





Ако искате да овладеете DevOps, ' разбира се ще бъде вашата опция за преминаване.

как да използвам

Въведение в отговорните роли

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



Нека да обясня това с пример. Да предположим, че искате вашата книга за игри да изпълнява 10 различни задачи в 5 различни системи, бихте ли използвали една книга за игра за това? Не, използването на една книга може да я направи объркваща и склонна към гафове. Вместо това можете да създадете 10 различни роли, където всяка роля ще изпълнява една задача. След това всичко, което трябва да направите, е да споменете името на ролята в книгата за игри, за да ги извикате. Ще научите как да използвате ролите по-нататък в този блог.

Многократна употреба на отговорните роли

Отговорните роли са независими една от друга. Изпълнението на една роля не зависи от други и следователно те могат да бъдат използвани повторно. Можете дори да модифицирате и персонализирате тези роли според вашите изисквания. Това намалява нашата задача да пренаписваме цяла част от кода всеки път, когато имаме нужда, като по този начин опростяваме работата си.

Да се ​​върнем към предишния пример. Написали сте 10 роли и сега трябва да използвате 5 от тях за друг набор от провизии. Отново ли пишете цялата книга за игри? Не, просто използвате повторно тези 5 роли, като ги извикате в тази нова книга за игри. Можете също така да правите модификации, ако е необходимо, но това все пак ще спести много от вашето време.



Да предположим, че трябва да напишете книга за игра за настройване на LAMP стека. Трябва да създадете 4 роли, всяка за създаване на Linux, Apache, MongoDB и PHP. В бъдеще, ако искате друга книга за игри за настройка на LAMP стека, както и WordPress, ще създадете ли отново нови роли за LAMP стека и WordPress? Не! Можете просто да използвате повторно по-старите роли (използвани за стека LAMP) и допълнително да създадете нова роля за WordPress.

Структура на директория за роли

Използвайки Ansible Roles, очаквайте файловете да бъдат в определена файлова структура. Най-объркващата част от използването на роли е разбирането на файловата йерархия. Ansible предоставя функция, наречена Ansible Galaxy, която ви помага да играете с роли. Вече знаем къде е нашият Ansible в Ubuntu (/ etc / ansible). Виждали ли сте някога директория, наречена роли в / etc / ansible? Тази директория съществува точно поради тази причина. Създавате различни роли в тази директория.

Директорията ще изглежда така:

Дърво - Отговорни роли - Edureka

Можете да създадете роля с помощта на анзиб-галактика команда init вътре / etc / ansible / role.

$Судоansible-galaxy init

Ще видите, че и други директории за роли също биха били създадени.

Тези директории са задачи, манипулатори, настройки по подразбиране, vars, файлове, шаблони и мета и README.mdфайл.

Задачи - Съдържа основния списък със задачи, които трябва да бъдат изпълнени от ролята. Тосъдържафайла main.yml за тази конкретна роля.

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

По подразбиране - Съдържа променливите по подразбиране, които ще бъдат използвани от тази роля.

Чия - Тази директория се състои от други променливи, които ще бъдат използвани от ролята. Тези променливи могат да бъдат дефинирани във вашата книга за игри, но е добър навик да ги дефинирате в този раздел.

android студио стъпка по стъпка

Файлове - Съдържа файлове, които могат да бъдат разположени от тази роля. Той съдържа файлове, които трябва да бъдат изпратени на хостовете, докато конфигурирате ролята.

Мета - Дефинира метаданни за тази роля. По принцип той съдържа файлове, които установяват зависимости от роли.

Всеки задача директория трябва да се състои от main.yml файл, където е записан действителният код за тази конкретна роля.

Нека сега разберем работата или ролите с демонстрация за инсталиране на MEAN Stack.

Демонстрация: Инсталиране на MEAN Stack с помощта на Ansible Roles

Ще демонстрирам как да инсталирам MEAN Stack с помощта на Ansible Roles, като просто изпълня една единствена книга за игра. Ще имаме три роли: 1) Инсталиране на предпоставки, 2) Инсталиране на MongoDB и 3) Инсталиране на NodeJS. Предполагам, че вече сте го направили инсталира Ansible и направи връзка сървър-клиент на Ubuntu . Нека започнем да играем с Ansible Roles.

Етап 1 - Придвижете се до директорията / etc / ansible / role и създайте ролите за предпоставки, MongoDB и NodeJS.

$ cd / etc / ansible / role $ sudo ansible-galaxy init предпоставки $ sudo ansible-galaxy init mongodb $ sudo ansible-galaxy init nodejs

Сега трябва да видите три роли в директорията си за „роли“.

Стъпка 2 - Напишете main.yml за предпоставки, които инсталират Git.

$ cd предпоставки / задачи / main.yml --- - име: Инсталирайте git apt: име: git състояние: настоящ update_cache: да

Стъпка 3 - Напишете main.yml за ролята на MongoDB

$ cd /mongodb/tasks/main.yml --- - name: MongoDB - Импортиране на публичен ключ apt_key: keyserver: hkp: //keyserver.ubuntu.com: 80 id: EA312927 - name: MongoDB - Добавяне на хранилище apt_repository: filename: '/etc/apt/sources.list.d/mongodb-org-3.2.list' repo: 'deb http://repo.mongodb.org/apt/ubuntu trusty / mongodb-org / 3.2 multiverse' състояние: настоящ update_cache : yes - name: MongoDB - Инсталирайте MongoDB apt: name: mongodb-org state: present update_cache: yes - name: Стартирайте mongod shell: 'mongod &'

Стъпка 4 - Напишете main.yml заnodejsроля

$ cd nodejs / tasks / main.yml --- - име: Node.js - Вземете скрипт get_url: url: 'http://deb.nodesource.com/setup_6.x' dest: '{{var_node}} / nodejs .sh '- име: Node.js - Задайте разрешение за изпълнение на файл на скрипт: път:' {{var_node}} / nodejs.sh 'режим:' u + x '- име: Node.js - Изпълнение на обвивката на скрипта за инсталиране:' {{var_node}} / nodejs.sh '- име: Node.js - Премахване на инсталационния скрипт: път:' {{var_node}} / nodejs.sh 'състояние: отсъства - име: Node.js - Инсталирайте Node.js apt : name = {{item}} state = present update_cache = yes with_items: - build-essential - nodejs - name: Node.js - Инсталирайте bower и gulp глобално npm: name = {{item}} state = present global = yes with_items : - bower - глътка

Стъпка 5 - Напишете основната си книга за игри

$ cd /etc/ansible/mean.yml --- - хостове: възли отдалечен_потребител: ansible станете: да станете_метод: sudo vars: # променлива, необходима по време на инсталация на възел var_node: / tmp роли: - предпоставки - mongodb - nodejs

След като дефинирахме роли за инсталиране на предпоставките, MongoDB и NodeJs, нека ги разположим. Изпълнете книгата за игра, като използвате следната команда.

$Судоansible-playbook /etc/ansible/mean.yml -K

Както можете да видите, всички задачи са изпълнени и състоянието им е променено. Това означава, че промените в playbook са приложени както към вашия сървър, така и към хоста. Настройването на MEAN Stack е само един пример. Можете да настроите буквално всичко и всичко, като използвате Ansible Roles.

Това ни води до края на блога Ansible Roles. Ако намерите тази статия за полезна, разгледайте ' предлага се от Edureka. Той обхваща всички инструменти, които са направили ИТ индустрията по-добра.

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