Используйте ansible для автоматизированной эксплуатации и обслуживания

Ansible

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

В этой главе описывается, как использоватьansibleустановка и базовый функционал о ansible. Студентам, владеющим облачными серверами, рекомендуется изучитьansible

Необходимость автоматизированных операций

Теперь у меня есть два облачных сервера, на каждом из которых установлены системы Centos. и он у меня установлен на обоих серверахtmux, для многооконного управления.

Однако в первые дни существования сервера может быть разного рода хаос, и систему нужно переустанавливать много раз, и каждый раз при переустановке системы ее нужно переустанавливать заново.tmux.

Это создает очень повторяющуюся вещь: установкаtmux.

Если установлен в Centostmuxможно использовать напрямуюyum install tmuxВот и все, но установка tmux тоже крайне тривиальная вещь.

По моим статьям из этой серииМультиплексирование окон и tmuxупоминается в одномtmuxшаги установки

  1. установить пакет зависимостей
  2. Загрузите исходный код на github, скомпилируйте и установите
  3. Загрузите файл конфигурации с github

Кроме того, с несколькими серверами и несколькими переустановками можно повторить описанные выше шаги установки N раз.

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

ansible установка и настройка

Ansible — это инструмент для автоматизированной работы и обслуживания, написанный на python. Прежде чем использовать ansible, вам необходимо понять следующие две концепции.

  • Локальная среда: то есть ваш ПК, Mac или трамплин, вам необходимо установить ansible в локальной среде
  • Удаленный сервер: он будет развертывать свои собственные службы и запускать приложения на удаленном сервере, и это также сервер, которым необходимо управлять. Нет необходимости устанавливать какое-либо приложение на удаленном сервере

Ansible работает по протоколу ssh, нужно только выполнить два условия

1. Установите ansible в локальной среде

На Mac напрямую черезbrew install ansibleдля завершения установки.

Если не Mac, вы можете обратиться кОфициальное руководство по установке

Тем не менее, большинство местных условийmacилиwindows

2. Иметь возможность локально подключаться к удаленному серверу по ssh

по конфигурации~/.ssh/configа такжеssh keyМожно добиться эффекта прямого подключения без пароля.Подробности см. в первой статье этой серии.Начальная конфигурация входа в облачный сервер

~/.ssh/configФайл выглядит следующим образом

Host shanyue
    HostName 172.17.68.39
    User root
Host shuifeng
    HostName 172.17.68.40
    User root

ansible inventory

по конфигурации~/.ssh/configПосле этого мы присвоили удаленному серверу псевдоним. В этот момент вы можете пройтиinventoryУправление группой.

ansibleПо умолчаниюinventoryФайл конфигурации/etc/ansible/hosts.

[prod]
shanyue
shuifeng

[dev]
proxy
jumper ansible_port=5555 ansible_host=192.0.2.50

Конфигурация объясняется следующим образом

  1. Всего серверов четыре, shanyue, shuifeng, proxy, jumper, все сервера сгруппированыallВниз
  2. Шаньюэ и Шуйфэн в группеprodвниз, а прокси и перемычка вdevВниз
  3. существуетinventoryтакже можно установить вhostname, portс псевдонимами, но рекомендуется установка в ssh-config

Простая специальная команда

ad-hocКоманда относится к выполнению команды на определенном наборе серверов. тогда как команда на самом деле относится кmodule, в то время как чаще всего используетсяmoduleдаping, чтобы проверить, нормально ли подключен сервер

Все модули могут ссылаться наansible modules

# 查看所有服务器是否能够正常连通
$ ansible all -m ping
shuifeng | SUCCESS => {
    "changed": false,
    "ping": "pong"
}
shanyue | SUCCESS => {
    "changed": false,
    "ping": "pong"
}

ansible playbook

ansible ad-hocКоманда, которую нужно выполнить, слишком проста и обычно используется для тестирования сервера и некоторых простых небольших операций. И некоторые сложные вещи, как упоминалось вышеtmuxустановка требует выполнения ряда сценариев.

ad-hocуказанный сервер для выполнения указанной команды,а такжеplaybookЭто указать сервер для выполнения ряда команд.

  • hosts, чтобы указать сервер или группу серверов. как продукт
  • роль, чтобы указать набор команд. Например, tmux, который легко использовать повторно.
- hosts: prod
  roles:
    - tmux

role

роль определяет серию команд илиtasks. каждыйtaskможно рассматривать какad-hoc,Зависит отansible moduleсочинение

Но когдаtaskВ процессе выполнения должны быть некоторые переменные и настройки конфигурационного файла, которые являются другими компонентами роли. Такие какdefaults,vars,filesа такжеtemplates.roleСтруктура файла организована следующим образом

site.yml
roles/
   tmux/
     tasks/
     handlers/
     files/
     templates/
     vars/
     defaults/
     meta/

Например, роль tmux делает следующееtasks

  1. установить пакет зависимостей
  2. Загрузите исходный код на github, скомпилируйте и установите
  3. Загрузите файл конфигурации с github

Файл конфигурации относится к моей конфигурации ansible:shfshanyue/ansible-op

- name: prepare
  yum:
    name: "{{item}}"
  with_items:
    - gcc
    - automake
    - libevent-devel
    - ncurses-devel
    - glibc-static

- name: install tmux
  git:
    repo: https://github.com/tmux/tmux.git
    dest: ~/Documents/tmux
    version: 2.8

- name: make tmux
  shell: sh autogen.sh && ./configure && make
  args:
    chdir: ~/Documents/tmux/

- name: copy tmux
  copy:
    src: ~/Documents/tmux/tmux
    dest: /usr/bin/tmux
    remote_src: yes
    mode: 0755

- name: clone config file
  when: USE_ME
  git:
    repo: https://github.com/shfshanyue/tmux-config.git 
    dest: ~/Documents/tmux-config

- name: clone config file (from .tmux)
  git:
    repo: https://github.com/gpakosz/.tmux.git
    dest: ~/Documents/tmux-config
  when: not USE_ME

- name: copy config file (from .tmux)
  copy:
    src: ~/Documents/tmux-config/.tmux.conf.local
    dest: ~/.tmux.conf.local
    remote_src: yes
  when: not USE_ME

- name: copy config file
  copy:
    src: ~/Documents/tmux-config/.tmux.conf
    dest: ~/.tmux.conf
    remote_src: yes

- name: delete tmux-config 
  file:
    name: ~/Documents/tmux-config
    state: absent

ansible-galaxy

которыйroleсклад.

Существует несколько высокочастотных развертываний повторно используемых сервисных компонентов, таких какdocker,redisд., может бытьansible-galaxyнайди не пиши самroleБеда.

Такие какansible-redis

$ ansible-galaxy install davidwittman.redis

резюме

ansibleХорошо подходит для пакетной настройки и управления программным обеспечением.Если у вас есть собственный сервер, настоятельно рекомендуется изучитьansible.


Добро пожаловать в публичный аккаунтГорная Луна Путешествие, я буду регулярно делиться некоторыми статьями о внешнем и внутреннем интерфейсе, эксплуатации и обслуживании, а также будут ежедневные обзоры и сводки о технологиях и жизни, добро пожаловать, чтобы обратить внимание на обмен

欢迎关注公众号山月行,在这里记录我的技术成长,欢迎交流