Машина управления, где установлен 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.
Дискуссия
Написал Rocky 9
Опубликовано в: Установка nginx c PHP-FPM под CentOS 7.0 in LinuxНаписал Константин
Опубликовано в: Докеризация стека LEMP под Ubuntu c помощью Compose in LinuxНаписал bammbr
Опубликовано в: Шлюз для маленького отдела на Red Hat 9 in LinuxНаписал Федор
Опубликовано в: Установка и конфигурация Samba на CentOS 7 in LinuxНаписал Evgenytrl
Опубликовано в: Загрузка файлов с помощью Wget in Linux