Автор оригинала: Bolatito Kabir.
Я познакомим, как автоматизировать монтаж среднего стека с использованием Anbible. Прочитайте его, и вы сможете автоматизировать монтаж среднего стека на серверы подчиненного узла/узла [Установка будет выполнена на сервер подчиненного/узла]. Давайте прыгнуть прямо в
Требования:
- Ubuntu 14 — главный сервер
- Ubuntu 14 — Узел/Работный сервер ## Зависит от того, как вы его называете
- Anbible 2.4.10 Примечание: Anisible требует, чтобы Python, поэтому нам понадобится библиотека Python под названием
Software-Properties-Common
на наш главный сервер
Главный сервер
Нам нужно убедиться, что наш сервер обновляется и установил правильную зависимость
Обновить Master Server
$ sudo apt-get update
Установите Anbible Установите Ansible Bibreate Python
$ sudo apt-get install software-properties-common
Добавить ассибильный репозиторий и обновление
$ sudo apt-add-repository ppa:ansible/ansible $ sudo apt-get update
Установите Anbible
$ sudo apt-get install ansible
Настроить Anisible. Теперь мы установили Anbible, давайте перейдем к настройке Anbible. В неспособных, вам нужно указать свой Инвентаризация
; Инвентарь определяет нашу серверную инфраструктуру Пользователи Sudo
; Укажите пользователей Sudo, которые имеют доступ к Anisible
Откройте файл Anisible Config $ sudo vi/etc/ansible/Ansible.cfg
безотлагательно Инвентаризация =/etc/ansible/hosts
и sudo_user
Отказ /etc/ansible/ansable.cfg
Файл должен выглядеть так:
# config file for ansible -- https://ansible.com/ # =============================================== # nearly all parameters can be overridden in ansible-playbook # or with command line flags. ansible will read ANSIBLE_CONFIG, # ansible.cfg in the current working directory, .ansible.cfg in # the home directory or /etc/ansible/ansible.cfg, whichever it # finds first [defaults] # some basic default values... inventory = /etc/ansible/hosts #library = /usr/share/my_modules/ #module_utils = /usr/share/my_module_utils/ #remote_tmp = ~/.ansible/tmp #local_tmp = ~/.ansible/tmp #forks = 5 #poll_interval = 15 sudo_user = root #ask_sudo_pass = True #ask_pass = True #transport = smart #remote_port = 22 #module_lang = C #module_set_locale = False # plays will gather facts by default, which contain information about # the remote system. # # smart - gather by default, but don't regather if already gathered # implicit - gather by default, turn off with gather_facts: False # explicit - do not gather by default, must say gather_facts: True #gathering = implicit # This only affects the gathering done by a play's gather_facts directive, # by default gathering retrieves all facts subsets # all - gather all subsets # network - gather min and network facts # hardware - gather hardware facts (longest facts to retrieve) # virtual - gather min and virtual facts
Далее установка ассибильных узлов инвентаризации/рабов. Это позволит неизбежно знать имя узлов/ведомых хостов для выполнения задач. Перейдите к /etc/Anisible/
Отказ Создайте резервную копию текущего хозяева
Файл, сделай это Host.backup
и создать новый файл под названием хосты
$ cd /etc/ansible/ $ ls ansible.cfg hosts roles $ sudo mv hosts hosts.backup $ ls ansible.cfg hosts.backup roles $ sudo vi hosts
Ниже показаны созданные группы, Местный
и узлы
группа. Вы можете создавать, настроить и добавить больше сервера в свою группу.
[local] localhost [nodes] example.mynodeserver.com
Создайте пользователь для Anisible, это рекомендуемая практика для предоставления соответствующего доступа пользователя к Anbible
$ sudo adduser ansible
Обновите файл sudoer, чтобы предотвратить пароль подсказки, когда команда sudo должна быть выполнена путем добавления Anbible All = (все) Nopasswd: Все
под корень
В Спецификация привилегии пользователей Раздел витудок
$ sudo visudo
# # This file MUST be edited with the 'visudo' command as root. # # Please consider adding local content in /etc/sudoers.d/ instead of # directly modifying this file. # # See the man page for details on how to write a sudoers file. # Defaults env_reset Defaults mail_badpass Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin" # Host alias specification # User alias specification # Cmnd alias specification # User privilege specification root ALL=(ALL:ALL) ALL ansible ALL=(ALL) NOPASSWD: ALL # Members of the admin group may gain root privileges %admin ALL=(ALL) ALL # Allow members of group sudo to execute any command %sudo ALL=(ALL:ALL) ALL # See sudoers(5) for more information on "#include" directives: #includedir /etc/sudoers.d
Стать Anbible
пользователь и настроить открытый ключ с помощью Ключ-Gen
так что Master Server может общаться с Сервер раб/узла .Оставлять пароль пустой, когда спросил. Как только это сделано, мы экспортируем открытый ключ к другому Slave/Node Server
$ su - ansible $ id uid=1002(ansible) gid=1002(ansible) groups=1002(ansible) $ ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/home/ansible/.ssh/id_rsa): Created directory '/home/ansible/.ssh'. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/ansible/.ssh/id_rsa. Your public key has been saved in /home/ansible/.ssh/id_rsa.pub. The key fingerprint is: 18:25:f7:69:b8:24:2e:14:05:5b:db:f3:5c:b6:75:7d example@master.mymainserver.com The key's randomart image is: +--[ RSA 2048]----+ | oo+ o | | + * o . .| | o + = + o . E| | . . = * o o ..| | . o S o . | | . | | | | | | | +-----------------+
На узле/рабском сервере
Создать пользователь под названием Anbible
и установить привалевую подготовку, используя Visudo, обновляя файл sudoer, чтобы предотвратить запрос пароля, когда команда sudo должна быть выполнена путем добавления Anbible All = (все) Nopasswd: Все
под корень
В Спецификация привилегии пользователей Раздел Visudo
Как мы делали на главный сервер
$ sudo adduser ansible $ sudo visudo
Ваш файл Visudo должен выглядеть так:
# # This file MUST be edited with the 'visudo' command as root. # # Please consider adding local content in /etc/sudoers.d/ instead of # directly modifying this file. # # See the man page for details on how to write a sudoers file. # Defaults env_reset Defaults mail_badpass Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin" # Host alias specification # User alias specification # Cmnd alias specification # User privilege specification root ALL=(ALL:ALL) ALL ansible ALL=(ALL) NOPASSWD: ALL # Members of the admin group may gain root privileges %admin ALL=(ALL) ALL # Allow members of group sudo to execute any command %sudo ALL=(ALL:ALL) ALL # See sudoers(5) for more information on "#include" directives: #includedir /etc/sudoers.d
На главном сервере
Экспорт открытого ключа на сервер (ы) узла/ведомости, используя ssh-copy-id
. Здесь узел/ведомый сервер — example.mynodeserver.com
И пользователь неизбежный
$ ssh-copy-id ansible@example.mynodeserver.com The authenticity of host 'example.mynodeserver.com (0.0.0.0)' can't be established. ECDSA key fingerprint is c6:aa:46:f5:37:4a:ae:64:dd:98:ff:aa:65:67:1f:99. Are you sure you want to continue connecting (yes/no)? yes /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys ansible@example.mynodeserver.com's password: Number of key(s) added: 1 Now try logging into the machine, with: "ssh 'ansible@example.mynodeserver.com'" and check to make sure that only the key(s) you wanted were added.
Теперь проверить по SSH Ansible@example.mynodeserver.com
от Master Server к ведомый сервер
Теперь, когда мы установили неспособную, установленную связь между Master Server и Узел/ведомый сервер Создайте PlayBook, который будет установлен ИМЕТЬ В ВИДУ Стек на наших узлах/рабском экземпляре (ы)
Создать PlayBook
PlayBook написан в Ямл Так что не стесняйтесь читать Аналимный синтаксис YAML .I предположим, что вы знакомы с YAML, если нет, в кратчайшие сроки вы наверняка. . Так вот план, создать Среднее число Файл и
Три (Предварительные условия.yaml, mongodb.yaml и nodejs.yaml) Другие файлы,
Среднее число Файл позвонит другим 3 файлам в нее. Ниже будут структура файлов
mean.yaml |--task |--prerequisites.yaml |--mongodb.yaml |--nodejs.yaml
Пусть начать:
Среднее число
$ vi mean.yaml --- #The mean MEAN stack file - hosts: nodes remote_user: ansible become: yes become_method: sudo vars: #variable needed during node installation var_node: /tmp tasks: # Install prerequisites - include: tasks/prerequisites.yaml # Install MongoDB - include: tasks/mongodb.yaml # Install Node.js - include: tasks/nodejs.yaml
Понимание среднего.
- хозяева — Укажите группу хостов в инвентаре хоста
/etc/ansible/hosts
.Хозяин
является списком одной или нескольких групп или шаблонов хоста, разделенных двоеточиями - Remote_user — это имя пользователя по умолчанию Ansible будет подключаться так, как это имя учетная запись пользователя
- стать — Anisible позволяет вам стать другим пользователем, кроме пользователя, который вошел в машину (удаленный пользователь). Установите «True»/«Да» для активации эскалации привилегии.
- стать_метод — Переопределяет метод по умолчанию, установленным в Ansible.cfg
- Варс — Это используется для создания переменной (ов). Имена переменной должны быть буквы, цифры и подчеркивания. Переменные всегда должны начинаться с буквы. E.g Переменная, которую мы создали здесь
var_node.
- Задачи — Задача — это вызов на неспособный уровень модуля. Они берут инструкции, предоставленные им и бегите в порядке, указанном в PlayBook: сверху вниз.
- -Номальный — Мы в том числе Три файлы для запуска. С
Задачи
Беги сверху вниз, мы впервые включаемЗадачи/предварительные условия.yaml
PlayBook, какой файл YAML, содержащий предварительные условия для нашего среднего стека, то мы звоним на Mongodb PlaybookЗадачи/Mongodb.yaml.
И наконецЗадачи/Nodejs.yaml.
.
Создать путь под названием Задачи
это будет местоположение Три файлы
Предварительные условия.yaml В текущем каталоге выполните следующие действия:
$ vi tasks/prerequisites.yaml
Вышеуказанное создать Предварительные условия.yaml
в Задачи
папка. Затем вставьте и сохраните ниже
#The prerequisites playbook - name: Install git apt: name: git state: present update_cache: yes
Нам нужно Гит
Искрейте для нас, чтобы установить средний стек.
- Имя — Дайте задачу имя, здесь мы называем задачу Установите Git.
- APT — APT — это команда, используемая для установки пакета в Anisible, его неизбежный модуль
- Имя — Имя пакета для установки
- Государство — Это означает, что Anbible должен установить пакет, если нет настоящее время
- update_cache. — Это похоже на
APT-Get Update
В Ubuntu, в неспособных его называемыхupdate_cache
который должен быть установлен нада
Mongodb.yaml Для настройки Playbook Mongodb мы сделаем следующее внутри Playbook:
- Импортировать открытый ключ MongoDB
- Добавить монгодб репозиторий
- Установите MongoDB
- Монгодб работает статус Теперь, когда вы знаете, что нужно в
Mongodb.yaml
файл. Сделать следующее:
$ vi tasks/mongodb.yaml
Скопируйте и вставьте ниже
- name: MongoDB - Import public key apt_key: keyserver: hkp://keyserver.ubuntu.com:80 id: EA312927 - name: MongoDB - Add repository 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' state: present update_cache: yes - name: MongoDB - Install MongoDB apt: name: mongodb-org state: present update_cache: yes - name: MongoDB - Running state service: name: mongod state: started
- apt-ключ — APT_KEY используется для управления добавлением и удалением клавиш публичных репозиторий.
- apt_repository — Это неизбежный модуль, используя это позволяет нам дать имя на место, которое мы собираемся выбросить контент репозитория.
- Государство — Мы устанавливаем состояние на
нынешние
Чтобы показать, что мы хотим добавить репозиторий Это то, что мы сделали вMongodb.yaml
файл. Первый шаг мы импортировали открытый ключ, то мы добавили Mongodb Reppo, который больше похоже на то, как это сделано в Ubuntu
$ Echo «deb http://repo.mongodb.org/apt/ubuntu trusty/mongodb-org/3.2 multiverse» | sudo tee/etc/apt/sources.list.d/mongodb-org-3.2.List.
- Были ли труба используются для эха в результате команды deb внутри файла.
Затем мы переходим к установке MongoDB, после этого убедитесь, что MongoDB работает с помощью Сервис
Установка состояния в Начал
Отказ
nodejs.yaml Чтобы настроить PlayBook Nodejs, мы сделаем следующее внутри Playbook:
- Получите сценарий Nodejs
- Установите разрешение на исполнение для скрипта
- Выполнить скрипт установки
- Удалить скрипт установки
- Установите Node.js.
- Установите Bower и глотать глобально
Теперь мы создадим и напишу nodejs.yaml
PlayBook. Скопируйте и вставьте ниже
$ vi tasks/nodejs.yaml
Скопируйте и вставьте ниже
- name: Node.js - Get script get_url: url: "http://deb.nodesource.com/setup_6.x" dest: "{{ var_node }}/nodejs.sh" - name: Node.js - Set execution permission to script file: path: "{{ var_node }}/nodejs.sh" mode: "u+x" - name: Node.js - Execute installation script shell: "{{ var_node }}/nodejs.sh" - name: Node.js - Remove installation script file: path: "{{ var_node}}/nodejs.sh" state: absent - name: Node.js - Install Node.js apt: name={{ item }} state=present update_cache=yes with_items: - build-essential - nodejs - name: Node.js - Install bower and gulp globally npm: name={{ item }} state=present global=yes with_items: - bower - gulp
Теперь давайте объясним каждую часть сценария
- Node.js — Получить скрипт —
get_url
Модуль использует для загрузки файла. ГдеURL
Указывает на веб-местоположение файла иdest
Укажите, что должны были сохранить файл. Примечание, мы устанавливаем переменнуюvar_node. =/TMP.
вСреднее число
. Адресат будет выглядеть следующим образом/tmp/nodejs.sh
- Node.js — Установите разрешение на исполнение для скрипта — Этот раздел файла отправляется на путь к файлу и установить разрешение на файл. Вот как это выглядит как
chmod u + x/tmp/nodejsssh
- Node.js — Выполните скрипт установки — Этот раздел выполняет nodejs.sh. Его больше похоже на работу скрипта
/tmp/nodejs.sh.
- Node.js — Удалить скрипт установки — Это удалит установку файла, поскольку она не понадобится. Поэтому
Государство
установлен наотсутствует
Отказ - Node.js — Установка Node.js — Установка узла выполняется здесь с помощью формата петли под названием с_item Отказ
Создание - Основное
установлен первый, потому чтоNodejs
зависит от этого - NPM — NPM — это модуль для установки узловных пакетов, мы проанализировали переменную Предмет и дал ему нынешнее состояние с да глобальным. with_items является циклом, которая повторяется по указанным предметам
- Node.js — Установите Bower и глотать глобально — Наконец установите Bower и Gulp.
Теперь, когда у нас все все настроено, запустите PlayBook
$ ansible-playbook mean.yaml
Чтобы убедиться, что все будет выполнено, как ожидалось, запустите команду ниже:
$ ansible-playbook mean.yaml --check
Мы успешно автоматизировали Среднее Установка стека. Теперь войдите в свой узел/подчиненные серверы, и вы увидите все, что требуется для вашего проекта, уже сделаны. Вы можете найти исходный код в моем github Отказ
Это все фольклор. Не стесняйтесь указывать на какую-либо опечатка, поправьте меня, если я ошибаюсь, и внося этот пост.
Оригинал: «https://www.codementor.io/@bolatitokabir/mean-stack-automation-using-ansible-duwmh9tth»