С помощью ansible можно выполнять пакетную настройку и пакетную установку программного обеспечения, что избавляет от утомительной и повторяющейся работы и повышает эффективность управления сервером.
В этой главе описывается, как использоватьansible
установка и базовый функционал о ansible. Студентам, владеющим облачными серверами, рекомендуется изучитьansible
- Оригинальная ссылка:Используйте ansible для автоматизированной эксплуатации и обслуживания github
- Серия статей:Примечания по эксплуатации и обслуживанию сервера
Необходимость автоматизированных операций
Теперь у меня есть два облачных сервера, на каждом из которых установлены системы Centos. и он у меня установлен на обоих серверахtmux
, для многооконного управления.
Однако в первые дни существования сервера может быть разного рода хаос, и систему нужно переустанавливать много раз, и каждый раз при переустановке системы ее нужно переустанавливать заново.tmux
.
Это создает очень повторяющуюся вещь: установкаtmux
.
Если установлен в Centostmux
можно использовать напрямуюyum install tmux
Вот и все, но установка tmux тоже крайне тривиальная вещь.
По моим статьям из этой серииМультиплексирование окон и tmuxупоминается в одномtmux
шаги установки
- установить пакет зависимостей
- Загрузите исходный код на github, скомпилируйте и установите
- Загрузите файл конфигурации с 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
Конфигурация объясняется следующим образом
- Всего серверов четыре, shanyue, shuifeng, proxy, jumper, все сервера сгруппированы
all
Вниз - Шаньюэ и Шуйфэн в группе
prod
вниз, а прокси и перемычка вdev
Вниз - существует
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
- установить пакет зависимостей
- Загрузите исходный код на github, скомпилируйте и установите
- Загрузите файл конфигурации с 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
.
Добро пожаловать в публичный аккаунтГорная Луна Путешествие, я буду регулярно делиться некоторыми статьями о внешнем и внутреннем интерфейсе, эксплуатации и обслуживании, а также будут ежедневные обзоры и сводки о технологиях и жизни, добро пожаловать, чтобы обратить внимание на обмен