Ansible Roles - лучший способ распутать ваши книги



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

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

Темы охватывали:





Если вы хотите освоить DevOps, ' конечно был бы вашим вариантом.

Введение в роли Ansible

Ansible Role - это концепция, которая имеет дело с идеями, а не событиями. По сути, это еще один уровень абстракции, используемый для организации сборников пьес. Они обеспечивают основу для независимой и многократно используемой коллекции переменных, задач, шаблонов, файлов и модулей, которые могут быть автоматически загружены в playbook. Пособия - это набор ролей. Каждая роль имеет определенные функции.



Позвольте мне объяснить это на примере. Предположим, вы хотите, чтобы ваш playbook выполнял 10 различных задач в 5 разных системах, использовали бы вы для этого одну playbook? Нет, использование одного сценария может сбить с толку и привести к грубым ошибкам. Вместо этого вы можете создать 10 разных ролей, каждая из которых будет выполнять одну задачу. Затем все, что вам нужно сделать, это указать имя роли внутри playbook, чтобы вызвать их. В этом блоге вы узнаете, как использовать роли.

Возможность повторного использования ролей Ansible

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

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



Допустим, вам нужно написать руководство по настройке стека LAMP. Вам нужно создать 4 роли, каждая для создания Linux, Apache, MongoDB и PHP. В будущем, если вам понадобится еще один сценарий для настройки стека LAMP, а также WordPress, будете ли вы снова создавать новые роли для стека LAMP и WordPress? Нет! Вы можете просто повторно использовать старые роли (используемые для стека LAMP) и дополнительно создать новую роль для WordPress.

Структура каталога ролей

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

Каталог будет выглядеть так:

Дерево - Ansible Roles - Edureka

Вы можете создать роль, используя Ансибл-галактика команда init внутри / etc / ansible / roles.

$судоansible-galaxy init

Вы увидите, что были созданы и другие каталоги ролей.

Эти каталоги являются задачами, обработчиками, значениями по умолчанию, варами, файлами, шаблонами, метаданными и README.мкрфайл.

Задачи - Содержит основной список задач, которые должна выполнять роль. Этосодержитфайл main.yml для этой конкретной роли.

Обработчики - Содержит обработчики, которые могут использоваться этой ролью или даже где-либо вне этой роли.

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

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

Файлы - Содержит файлы, которые могут быть развернуты этой ролью. Он содержит файлы, которые необходимо отправить на хосты при настройке роли.

Мета - Определяет метаданные для этой роли. По сути, он содержит файлы, которые устанавливают зависимости ролей.

Каждые задача каталог должен состоять из main.yml файл, в котором написан фактический код для этой конкретной роли.

Давайте теперь разберемся с работой или ролями с помощью демонстрации установки MEAN Stack.

Демонстрация: установка стека MEAN с использованием ролей Ansible

Я продемонстрирую, как установить MEAN Stack с использованием ролей Ansible, просто выполнив одну единственную книгу. У нас будет три роли: 1) установка необходимых компонентов, 2) установка MongoDB и 3) установка NodeJS. Я предполагаю, что вы уже установил Ansible и установил соединение сервер-клиент на Ubuntu . Начнем с Ansible Roles.

Шаг 1 - Перейдите в каталог / etc / ansible / roles и создайте роли для необходимых компонентов, MongoDB и NodeJS.

$ cd / etc / ansible / roles $ sudo ansible-galaxy init prerequisites $ sudo ansible-galaxy init mongodb $ sudo ansible-galaxy init nodejs

Теперь вы должны увидеть три роли в вашем каталоге «роли».

начало работы с визуальной студией

Шаг 2 - Напишите main.yml для предварительных требований, которые устанавливают Git.

$ cd prerequisites / tasks / main.yml --- - name: Установить git apt: name: git state: present update_cache: yes

Шаг 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' репо: '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: 'mongod &'

Шаг 4 - Напишите main.yml дляnodejsроль

$ cd nodejs / tasks / main.yml --- - name: 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 : - беседка - глоток

Шаг 5 - Напишите свой основной сценарий

$ cd /etc/ansible/mean.yml --- - хосты: узлы remote_user: ansible стать: yes стать_method: sudo vars: # переменная, необходимая во время установки узла var_node: / tmp роли: - предварительные условия - mongodb - nodejs

Теперь, когда мы определили роли для установки необходимых компонентов, MongoDB и NodeJs, давайте развернем их. Запустите playbook, используя следующую команду.

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

Как видите, все задачи выполнены и их статус изменился. Это означает, что изменения в playbook были применены как к вашему серверу, так и к хосту. Настройка стека MEAN - лишь один из примеров. Вы можете настроить буквально все и вся, используя Ansible Roles.

На этом мы подошли к концу блога Ansible Roles. Если вы найдете эту статью полезной, ознакомьтесь с ' автор: Edureka. Он охватывает все инструменты, которые сделали ИТ-отрасль лучше.

Есть вопрос к нам? Пожалуйста, разместите это на и мы свяжемся с вами.