Установка Ansible на CentOS 7

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

Машина управления, где установлен Ansible и Узлы, управляема этой машиной по SSH. Местоположение узлов определяется управляющей машиной через её инструментарий. Ansible не требует установки клиентской части (или приложения), что означает отсутствие необходимости какой-либо установки агента на удаленных узлах, так что это означает, что нет каких-либо фоновых демонов или программ, выполняемых для Ansible, когда он не управляет узлами.

Контроллер

Машина управления (контроллер Ansible) развертывает модули на узлах, используя протокол SSH, и эти модули временно хранятся на удаленных узлах и связываются с машиной Ansible посредством JSON по стандартному протоколу.

Установка

Установка довольно проста, проверьте имя узла и IP-адрес, прежде чем запустятся. Пакеты зависимостей для ansible можно найти ниже.

[root@control ~]# yum install ansible
 Installed:
  ansible.noarch 0:1.9.2-1.el7                                                                                                                               
Dependency Installed:
  PyYAML.x86_64 0:3.10-11.el7                         libyaml.x86_64 0:0.1.4-11.el7_0                python-babel.noarch 0:0.9.6-8.el7
  python-crypto.x86_64 0:2.6.1-1.el7.centos
  python-ecdsa.noarch 0:0.11-3.el7.centos     python-httplib2.noarch 0:0.7.7-3.el7       python-jinja2.noarch 0:2.7.2-2.el7
  python-keyczar.noarch 0:0.71c-2.el7      
  python-markupsafe.x86_64 0:0.11-10.el7     python-paramiko.noarch 0:1.15.1-1.el7  python-pyasn1.noarch 0:0.1.6-2.el7
  python-six.noarch 0:1.3.0-4.el7  
Complete!

После того, как ansible установлен успешно, Вы можете проверить версию, выполнив команды, приведенные ниже.

[root@control ~]# ansible --version
ansible 1.9.2
  configured module search path = None
[root@control ~]# 

Добавьте удаленный хост, используя ключ SSH

Чтобы выполнить любое развертывание/управление от localhost до удаленного сервера сначала, мы должны создать и скопировать ssh ключи в удаленный сервер.

Давайте создадим ssh ключ, используя команды, описанные ниже.

[root@control ~]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
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:
da:c1:b5:d5:af:db:a7:a9:c9:24:fc:29:76:32:ae:ff
The key's random art image is:
+--[ RSA 2048]----+
|         .... .. |
|       . ... o  .|
|      . . o .   .|
|     . . . .    .|
|      . S .    . |
|         .    .  |
|          o..  o |
|          E=.o..o|
|         o o*.o..|
+-----------------+
[root@control ~]# 

После успешного создания Ключа SSH, скопируйте его в удаленный сервер.

[root@control ~]# ssh-copy-id Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра.
The authenticity of host '192.168.56.102 (192.168.56.102)' can't be established.
ECDSA key fingerprint is b9:a0:d4:cb:36:f6:8f:bf:95:0e:90:a5:91:01:eb:34.
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
Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра.'s password: 
 
Number of key(s) added: 1

Now try logging into the machine, with: "ssh Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра.'" and check to make sure that only the key(s) you wanted were added.

[root@control ~]# ssh Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра.
Last login: Mon Aug 24 09:11:42 2015 from 192.168.56.1
[root@node1 ~]# exit
logout
Connection to 192.168.56.102 closed.
[root@control ~]#

Добавьте удаленный сервер в файл конфигурации (/etc/ansible/hosts)

Давайте добавим удаленный хост в файл конфигурации. Существующий хост-файл состоит из примеров. Он может быть очищен перед использованием.

[root@control ~]# cat /etc/ansible/hosts 
## This is the default ansible 'hosts' file.
##
## It should live in /etc/ansible/hosts
##
##   - Comments begin with the '#' character
##   - Blank lines are ignored
##   - Groups of hosts are delimited by [header] elements
##   - You can enter hostnames or ip addresses
##   - A hostname/ip can be a member of multiple groups

[linux-server]
192.168.56.102 #This is linux server
 
[root@control ~]#

Теперь, пора проверить связь с localhost на удаленном сервере. Команда ansible с параметром '-m' (модуль)

[root@control ~]# ansible -m ping linux-server
192.168.56.102 | success >> {
    "changed": false, 
    "ping": "pong"
}
 
[root@control ~]# ansible -m ping 192.168.56.102
192.168.56.102 | success >> {
    "changed": false, 
    "ping": "pong"
}
 
[root@control ~]# 

В вышеупомянутом примере использовался модуль ping, чтобы проверить с помощью ping-запросов удаленные серверы. Есть различные модули, доступные на сайте проекта.

Команда модуля: Выполните команду на удаленных хостах.

[root@control ~]# ansible -m command -a 'df -h' linux-server
192.168.56.102 | success | rc=0 >>
Filesystem                       Size  Used Avail Use% Mounted on
/dev/mapper/centos_centos7-root  7.6G  1.1G  6.6G  14% /
devtmpfs                         912M     0  912M   0% /dev
tmpfs                            921M     0  921M   0% /dev/shm
tmpfs                            921M  8.4M  912M   1% /run
tmpfs                            921M     0  921M   0% /sys/fs/cgroup
/dev/sda1                        497M  119M  379M  24% /boot
 
[root@control ~]# ansible -m command -a 'uptime' linux-server
192.168.56.102 | success | rc=0 >>
 02:34:37 up 1 day, 17:24,  3 users,  load average: 0.00, 0.01, 0.05
 
[root@control ~]# ansible -m command -a 'hostname' linux-server
192.168.56.102 | success | rc=0 >>
node1.olindata.com
 
[root@control ~]# ansible -m command -a 'cat /etc/redhat-release' linux-server
192.168.56.102 | success | rc=0 >>
CentOS Linux release 7.1.1503 (Core) 
 
[root@control ~]#

Заключение

Ansible довольно интересный инструмент, очень простой и занимает небольшое пространство на диске. Можно легко заставить его работать за 5 минут. В качестве туннеля он использует SSH.

2 комментарии

  • Dmitry

    написал Dmitry

    Понедельник, 11 Декабрь 2017 21:41

    Тег pre. Невозможно читать код в Opera под CentOS.

    Для тега лучше поставить line-height: 17px; Иначе строки сливаются, и невозможно прочитать код.

  • Владимир Драч

    написал Владимир Драч

    Среда, 13 Декабрь 2017 15:32

    Спасибо. Принял к сведению. Доработаю в ближайшее время.

Оставить комментарий

Ваше мнение очень важно для нас! Обязательно выскажите Ваши мысли, пожелания и критику! Не стесняйтесь задавать вопросы. Скорее всего, ответ появится уже через 2-3 дня. Спасибо заранее.

Go to top