Рубрики
Uncategorized

Инфраструктура @ Дом: Использование Anbible для установки программного обеспечения для мониторинга службы

Это 4-ю изделия в моей серии о мониторинге инфраструктуры. Давайте переправимся в ближайшее время. Я дискуссию … Теги с DevOps, Anbible, Hashicorp, RaspberryPI.

Инфраструктура — дома (7 части серии)

Это 4-ю изделия в моей серии о мониторинге инфраструктуры. Давайте переправимся в ближайшее время. Я обсудил мотивацию для автоматизации моей инфраструктуры и определил четыре набора требований: управление инфраструктурой, управление приложениями и открытие услуг. Первые две статьи объяснили мою инфраструктуру, шаги для установки базовой ОС и используя Anbible для управления системой и установки пакета.

Эта статья является учебным пособием по написанию сложной неспособной роли, которая установит программное обеспечение мониторинга и обнаружения услуг Hashicorp Консул Отказ Консул выполнит следующие требования к управлению приложениями:

  • AM4: интерфейс, в котором я вижу статус каждого приложения (здоровье, открытые конечные точки)

Эта статья изначально появилась в мой блог .

Несмысленные роли

Роли — это концепция, которая обеспечивает повторное использование. Роль определяет набор задач, выполняемых против хоста для достижения желаемого состояния. Это не отличается от того, что делает PlayBook, но роли предоставляют стандартную структуру и могут быть повторно использованы в разных играх или даже другим пользователям [^ 1].

Роли, которые должны быть выполнены на хостах, названы внутри PlayBook. Например, если мы хотим установить new_role На всех хостах мы можем определить PlayBook следующим образом [^ 2].

- name: Install new role
- hosts: all
- roles:
  - new_role

Роли имеют базовую структуру каталогов. Выполняя Роль Ansible-galaxy init in new_role Вы получите следующую каталог каталога.

new_role
├── README.md
├── defaults
├── files
├── handlers
├── meta
├── tasks
├── templates
├── tests
└── vars

Что идет в эти каталоги? В Задачи и обработчики Включите конкретные задачи, выполняющие свою роль, охватывают. В Файлы , вы поместите статический файл конфигурации, а в Шаблоны Вы помещаете файлы, которые будут включать в себя переменные. Наконец, Переменные Включите все динамические значения, которые требуется ваш PlayBook, а по умолчанию Охватывает переменные, которые могут перезаписать другие роли или игровые книги. Если вы хотите поделиться своей ролью на Обязательная галактика Включите соответствующую информацию в мета Отказ

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

Консул

Hashicorps Консул это программное обеспечение для мониторинга службы и открытия. Это помогает нам определить, контролировать и подключать услуги, которые работают на наших узлах. Сервис — это любое программное обеспечение, например, веб-сервер, приложение, и он может работать на сам узлы или внутри контейнера (Docker). Консуль предоставляет интерфейс командной строки, HTTP API enpoints и веб-интерфейс для мониторинга всех систем.

Установите консуль с помощью PlayBook

Для установки консула нам нужно сделать этот шаг на каждом узле:

  • Определите правильное распределение и аппаратное обеспечение Linux
  • Создать группу консула, пользователей и каталогов
  • Скачать и связывать бинарный консул
  • Скопируйте файлы конфигурации
  • Включить консул с системойDD

Все эти шаги будут полностью автоматизированы с помощью Anbible!

Шаг 1 — Определите правильное распределение и оборудование Linux

Нам на самом деле нужно дифференцировать три версии

Вот соответствующая ошибка. Консуль версия настроен как переменная роли. Затем для каждого хоста я определяю имя файла SRC и URL SRC, чтобы использовать их в более поздних задачах.

- name: Set vars when architecture is armv7l
  set_fact:
    consul_src_file: "consul_{{ consul_version }}_linux_armhfv6.zip"
    consul_src_url: "https://releases.hashicorp.com/consul/{{ consul_version }}/consul_{{ consul_version }}_linux_armhfv6.zip"
    consul_src_hash: "https://releases.hashicorp.com/consul/{{ consul_version }}/consul_{{ consul_version }}_SHA256SUMS"
  when: ansible_facts.architecture == 'armv7l'

Шаг 2 — Создание группы консула, пользователей и каталогов

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

- name: Create consul group
  group:
    name: consul
    state: present
    system: true

- name: Create consul user
  user:
    name: consul
    group: consul
    shell: /bin/false
    home: /etc/consul/
    state: present

- name: Create consul dir
  file:
    state: directory
    path: "{{ consul_base_directory }}"
    owner: consul
    mode: 0755

Шаг 3 — Загрузите и связывайте бинарный консул

Мы загрузим двоичный доступ к временному каталогу, расстегните его к целевому каталогу и предоставьте SymLink. При загрузке Anisible предоставляет возможность проверить результат загрузки с контрольной суммой SHA256 — мы также будем использовать это.

- name: Get consul binary
  get_url:
    url: "{{ hostvars[inventory_hostname].consul_src_url }}"
    dest: /tmp
    checksum: sha256:{{ hostvars[inventory_hostname].consul_src_hash }}

- name: Unzip consul binary
  unarchive:
    src: /tmp/{{ hostvars[inventory_hostname].consul_src_file }}
    dest: "{{ consul_base_directory }}"
    remote_src: true
    mode: 0744

- name: Create symlink
  file:
    src: "{{ consul_base_directory }}/consul"
    dest: /usr/local/bin/consul
    state: link

Шаг 4 — Копировать файлы конфигурации

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

{
  "datacenter": "{{ consul_datacenter }}",
  "data_dir": "{{ consul_base_directory }}",
  "log_level": "INFO",
  "enable_local_script_checks": true,
  "enable_syslog": true,
  "node_name": "{{ ansible_facts.hostname }}",
  "retry_join": ["{{ consul_main_server_ip }}"]
}

Консуль читает все файлы конфигурации из каталога в алфавитном порядке. Мы скопируем основную конфигурацию Consul.json ко всем узлам и дополнительно Server.json на сервер.

- name: Copy consul config
  template:
    src: config.json.j2
    dest: "{{ consul_base_directory }}/config.json"
    mode: 0644
  notify: Restart consul

- name: Copy consul server config
  template:
    src: server.json.j2
    dest: "{{ consul_base_directory }}/server.json"
    mode: 0644
  when: consul_role == 'server'
  notify: Restart consul

Шаг 5 — Включить консуль с системой

Консул — это просто двоичный. Если мы хотим запустить его во время загрузки, нам нужно предоставить Systemd Service File. . Мы будем использовать Шаблон файла сервиса консула Скопируйте его на хост и включите службу.

- name: Copy consul service file
  template:
    src: consul.service.j2
    dest: /etc/systemd/system/consul.service
    mode: 0644
  notify: Restart consul

- name: Set file permissions
  file:
    path: "{{ consul_base_directory }}"
    owner: consul
    group: consul
    recurse: true

- name: Enable consul service
  systemd:
    service: consul.service
    enabled: true
  notify: Restart consul

Запуск игровой книги

Мы, наконец, можем запустить PlayBook. Выполнено на моей машине, похоже это:

Консул будет автоматически установлен на все узлы. Сам первый раз, когда я бежал в этом Playbook, я понял силу неизбежной, чтобы применить сложные шаги установки к произвольному количеству узлов! Моя инфраструктура состоит только из 5 узлов, но PlayBook также может настроить 50 узлов.

Используя консуль

Теперь, когда работает консул, давайте посмотрим некоторые его возможности. В консула вы должны определить 3 или 5 узлов серверов и любое количество клиентских узлов. Узел сервера принимает роль мониторинга и обмена кластерным состоянием, таких вещей, как количество узлов, сервисов, работающих на этих узлах, и многое другое.

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

Давайте вручную запустим агент консула в командной строке. Мы видим важные свойства, такие как имя узла, DataCenter и IP-адрес.

$ consul —agent
==> Starting Consul agent…
           Version: 'v1.5.2'
           Node ID: '094163f6-9215-6f2c-c930-9e84600029da'
         Node name: 'raspi-3-1+'
        Datacenter: 'infrastructure_at_home' (Segment: '')
            Server: true (Bootstrap: false)
       Client Addr: [127.0.0.1] (HTTP: 8500, HTTPS: -1, gRPC: 8502, DNS: 8600)
      Cluster Addr: 127.0.0.1 (LAN: 8301, WAN: 8302)
           Encrypt: Gossip: false, TLS-Outgoing: false, TLS-Incoming: false, Auto-E

Другая команда показывает все члены того же кластера.

$ consul members

Node       Address             Status  Type    Build  Protocol  DC                      Segment
raspi-3-2  192.168.2.202:8301  alive   server  1.7.1  2         infrastructure_at_home  
raspi-4-1  192.168.2.203:8301  alive   server  1.7.1  2         infrastructure_at_home  
raspi-4-2  192.168.2.204:8301  alive   server  1.7.1  2         infrastructure_at_home  
raspi-3-1  192.168.2.201:8301  alive   client  1.7.1  2         infrastructure_at_home  

Из-за использованного вами файла конфигурации все узлы уже подключены. Узлы могут присоединиться к кластеру вручную, используя Консул присоединяется Отказ

Наконец, Consul также предоставляет веб-интерфейс веб-интерфейса, который показывает узлы на сервере, их состояние здоровья, и службы, работающие на них.

Вывод

Эта статья объяснила, как написать сложный аналимный PlayBook для установки консула. Мы проходили через пять шагов установки, которые создали необходимые пользователи, загруженные и связанные бинарными файлами, скопированные шаблонные файлы конфигурации (для дифференцирующих серверов и узлов агента) и для запуска службы во время выполнения.

Консул предоставляет управленческий вид всех узлов в моем кластере. На данный момент мы едва поцарапали поверхность того, что возможно. В следующем посте мы будем продолжать создавать инфраструктуру, устанавливая Docker и Hashicorp Nomad, планировщик заданий.

Сноски

[1]: на Обязательная галактика Вы можете искать и загружать роли для огромного набора задач и операционных систем.

[2]: Важное примечание: роли выполняются перед любыми другими задачами в вашем PlayBook! Итак, в этом примере задача для печати имени хоста будет запущено после роли. Если вам нужны задачи, чтобы запускать заранее, используйте Pre_Tasks Декларация.

Инфраструктура — дома (7 части серии)

Оригинал: «https://dev.to/admantium/infrastructure-home-using-ansible-to-install-the-service-monitoring-software-consul-14kb»