Почему необходимо установить и настроить Ansible в Linux.
С помощью использования систем управления конфигурацией мы можем контролировать большое количество серверов, которые облегчают жизнь системных администраторов. В двух словах, мы можем контролировать или управлять огромным количеством серверов или систем с одного центрального сервера с помощью средств автоматизации.
Есть много таких инструментов, доступных для автоматизации, таких как Chef или Puppet. Однако эти инструменты имеют сложности в настройке. У нас есть отличная альтернатива для этих вариантов, это Ansible. С помощью ее, вы можете очень легко установить и настроить Ansible в Linux.
Это руководство быстро расскажет вам о том, как установить и настроить Ansible в Linux.
Сколько Ansible работает!
Ansible не использует какие-либо средства для выполнения задач автоматизации, а это значит, что нет никаких фоновых процессов работающих на клиентах. Вместо этого, Ansible делает соединение с использованием SSH для осуществления своих операций.
Детали установки для установки Ansible.
Детали для сервера управления Ansible:
OS: Red Hat Enterprise Linux Server release 7.2 (Maipo)
Hostname: destroyer
IP: 168.123.15.60
User: lradmin
Детали машины клиента:
client 1
Hostname: web1
IP: 168.123.2.10
Client 2
Hostname: web2
IP: 168.123.12.12
Шаг 1: Установка Ansible на сервере управления.
Для Linux Mint, Ubuntu и Debian
#apt-add-repository ppa:Ansible/Ansible
#apt-get update && sudo apt-get install Ansible
Для RHEL, CentOS и Fedora
#yum install Ansible
Пожалуйста, обратите внимание, что нет никакого официального репозитория Ansible для RedHat, мы все еще можем установить Ansible, добавляя репозиторий Epel под RHEL или Centos.
После установки Ansible вы можете проверить версию с помощью следующей команды.
[root@destroyer ~]# Ansible --version
Ansible 2.3.1.0
config file = /etc/Ansible/Ansible.cfg
configured module search path = Default w/o overrides
python version = 2.7.5 (default, Oct 11 2015, 17:47:16) [GCC 4.8.3 20140911 (Red Hat 4.8.3-9)]
[root@destroyer ~]#
Шаг 2: Настройка SSH для настройки Ansible.
Для развертывания или управления на клиентской машине с нашего сервера управления «destroyer», нам нужно установить пароль на SSH между ними. В этой демонстрации мы настроили пользователя lradmin для пароля SSH.
Генерировать ключи SSH на сервере управления для пользователя lradmin.
[root@destroyer root]# id
uid=0(root) gid=1001(lradmin) groups=1001(lradmin) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
[root@destroyer root]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
/root/.ssh/id_rsa already exists.
Overwrite (y/n)? y
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
5e:a3:5b:4c:dc:15:7d:96:59:a8:85:97:43:03:70:a2 root@destroyer
The key's randomart image is:
+--[ RSA 2048]----+
| o.o+++=|
| . o. *=+|
| E +.o.|
| . ... |
| S = . |
| . = . |
| o o |
| o |
| . |
+-----------------+
Здесь мы сделали генерацию ключей, в следующем шаге нам необходимо скопировать содержимое «/root/.ssh/id_rsa.pub» на клиентскую систему для пользователя lradmin. Пожалуйста, следуйте инструкциям, приведенные в этом посте, так чтобы пароль имел связь между сервером управления и машиной клиента web1 и web2.
После того, как вы закончите с паролем конфигурации, вы можете перепроверить, делая SSH, как показано ниже.
[root@destroyer ~]# id
uid=0(root) gid=1001(lradmin) groups=1001(lradmin) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
[root@destroyer ~]# ssh lradmin@168.123.12.12
Last login: Mon Jun 19 13.25:34 2017 from ip-172-31-15-60.ap-south-1.compute.internal
[root@web2 ~]# hostname
web2
[root@web2 ~]# logout
Connection to 168.123.12.12 closed.
[root@destroyer ~]# ssh lradmin@168.123.2.10
Last login: Mon Jun 19 13:49:23 2017 from ip-168-123-15-60.ap-south-1.compute.internal
[root@web1 ~]# hostname
web1
[root@web1 ~]# logout
Connection to 168.123.2.10 closed.
[root@destroyer ~]#
Шаг 3: Создание файла инвентаризации для Ansible.
На следующем этапе нам нужно создать файл инвентаризации для списка клиентов. В основном его список IP клиента или имя хоста для машин, которые используются для автоматизации.
Пожалуйста, добавьте ниже строки кода в файл “/etc/Ansible/hosts” на нашем сервере управления.
[web]
168.123.2.10 Ansible_user=lradmin
168.123.12.12 Ansible_user=lradmin
Приведенные выше строки кода описывают, как список клиентских машин подпадает под категорию веб-пользователя, имеющего Ansible как lradmin.
Шаг 4: Проверьте соединение.
Теперь пришло время, чтобы проверить, является ли наша конфигурация правильно установлена или нет. Для этого мы будем использовать пинг в Ansible.
#Ansible -m ping web
В приведенной выше команде мы использовали пинг для нашего веб – сервера.
Система должна ответить сообщением ниже, если все Ok.
[root@destroyer ~]# Ansible -m ping web
168.123.12.12 | SUCCESS => {
"changed": false,
"ping": "pong"
}
168.123.2.10 | SUCCESS => {
"changed": false,
"ping": "pong"
}
[root@destroyer ~]#
Шаг 4: Выполнение удаленных команд на клиентских машинах.
Теперь мы имеем возможность запускать произвольные команды на клиентских машинах, чтобы извлечь некоторую информацию о них. Таким образом, чтобы сделать это, необходимо использовать модуль «command» в пределах Ansiblensible.
- В случае, если вы хотите использовать файловую систему на клиентской машине.
[root@destroyer ~]# ansible -m command -a "df -h" web
168.123.12.12 | SUCCESS | rc=0 >>
Filesystem Size Used Avail Use% Mounted on
/dev/xvda2 10G 876M 8.5G 10% /
devtmpfs 418M 0 418M 0% /dev
tmpfs 426M 0 426M 0% /dev/shm
tmpfs 436M 13M 434M 3% /run
tmpfs 446M 0 446M 0% /sys/fs/cgroup
tmpfs 130M 0 130M 0% /run/user/1000
tmpfs 160M 0 160M 0% /run/user/0
168.123.2.10 | SUCCESS | rc=0 >>
Filesystem Size Used Avail Use% Mounted on
/dev/xvda2 10G 1.7G 7.7G 16% /
devtmpfs 418M 0 418M 0% /dev
tmpfs 446M 0 446M 0% /dev/shm
tmpfs 426M 13M 424M 3% /run
tmpfs 466M 0 466M 0% /sys/fs/cgroup
tmpfs 140M 0 140M 0% /run/user/1000
tmpfs 180M 0 180M 0% /run/user/0
[root@destroyer ~]#
-
Проверка бесперебойной работы клиентских машин.
[root@destroyer ~]# ansible -m command -a "uptime" web
168.123.12.12 | SUCCESS | rc=0 >>
14:35:23 up 13:49, 2 users, load average: 0.00, 0.01, 0.05
168.123.2.10 | SUCCESS | rc=0 >>
14:35:23 up 13:49, 2 users, load average: 0.00, 0.01, 0.05
[root@destroyer ~]#
Вывод:
Необходимость автоматизации в ИТ-индустрии увеличивается с каждым днем для снижения стоимости, а также время для выполнения различных задач. Есть инструменты и приложения, доступные на рынке. Ansilble проста в установке и настройке. Кроме того, его агент запускает любой фоновый процесс на клиентах.