Рубрики
Uncategorized

Автоматизация средней установки стека с использованием Anbible

Пошаговое руководство по автоматизации средней установки стека с использованием Anisible

Автор оригинала: 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»