Как да инсталирате и конфигурирате Ansible на Ubuntu?

Първи стъпки с Ansible на Ubuntu за по-добро осигуряване на среда и управление на конфигурацията.

Управлението на конфигурацията е решаващ етап от жизнения цикъл на DevOps. Помага при автоматизирането и оркестрацията на ИТ инфраструктурата.

Има няколко инструмента за управление на конфигурацията, например Puppet, Ansible, Chef и SaltStack. И, разбира се, Ansible е един от най-популярните инструменти в DevOps. Той може лесно да управлява хиляди сървъри и цялата ви ИТ инфраструктура.

Ще разгледаме следното в тази статия.

  • Анзибилен монтаж
  • SSH обмен на ключове
  • Настройка на Ansible клиент
  • Ansible тестване

Ansible инсталация

За да бъдем прости, нека опитаме да използваме Ansible на два сървъра. Един ще бъде ansible-сървър и друг ansible-клиент със следния IP.

  • ansible-сървър – 10.0.0.1
  • ansible-клиент – 10.0.0.25

Инсталирането е лесно… трябва да се направи следното на всички сървъри, където искате да използвате Ansible. В този случай и на двата сървъра по-горе.

  • Изпълнете командата по-долу, за да инсталирате необходимия софтуер, необходим за инсталиране на ansible.
[email protected]:~# apt install software-properties-common
  • Инсталирайте хранилището с пакет ansible.
[email protected]:~# apt-add-repository --yes --update ppa:ansible/ansible
  • Актуализирайте разширения инструмент за опаковане (apt)
[email protected]:~# apt update
  • И накрая – изпълнете командата по-долу, за да инсталирате
[email protected]:~# apt install ansible

Инсталирането на необходимия пакет ще отнеме няколко секунди.

  Препоръки за добре свършена работа

Как гарантирате, че е инсталиран и версията му?

Е, лесно е. Можете да използвате синтаксис –version с ansible, за да разберете както по-долу.

[email protected]:~# ansible --version
ansible 2.8.1
  config file = /etc/ansible/ansible.cfg
  configured module search path = [u'/root/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python2.7/dist-packages/ansible
  executable location = /usr/bin/ansible
  python version = 2.7.15+ (default, Nov 27 2018, 23:36:35) [GCC 7.3.0]
[email protected]:~#

Както можете да видите, Ansible 2.8.1 е инсталиран и предоставя необходимата информация като местоположение на конфигурационния файл, модул на python.

След това трябва да направим обмен на SSH ключове, така че да обслужваме и клиентът да може да говори помежду си.

SSH обмен на ключове

Ansible се свързва със своя клиент чрез SSH (Secure shell).

Първо ще генерираме публичен ключ на ansible-сървъра, който трябва да бъде копиран на ansible-client.

Уверете се, че сте влезли като root потребител.

  • Генерирайте ключа с помощта на командата ssh-keygen, както е показано по-долу
[email protected]:~# ssh-keygen
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:
SHA256:cDapZBESo+8XcbXupbtILkFrklUSpwa70Y1c7yH5K1A [email protected]
The key's randomart image is:
+---[RSA 2048]----+
|    =.+oo .      |
|   . B.B.= .     |
|  . o @oE +      |
|   . *oO * .     |
|    o++.S + .    |
|   .o +o . +     |
|    .o..o +      |
|     ..o o .     |
|       .o o.     |
+----[SHA256]-----+
[email protected]:~#

Както бихте забелязали, той е генерирал публичен ключ в папката .ssh. Пълният път е /root/.ssh/id_rsa.pub

  40 смешни неща, които можете да попитате Siri

Забележка: уверете се, че файловете с частен и публичен ключ не могат да се четат от света. Можете да изброите файловете, за да ги проверите.

cd /root/.ssh
[email protected]:~# ls -l 
-rw------- 1 root root 1679 Jun 19 00:37 id_rsa 
-rw------- 1 root root 404 Jun 19 00:37 id_rsa.pub

Ако забележите, че разрешението е грешно, можете да го промените с помощта на командата chmod

Пример:

chmod 400 id_rsa
chmod 400 id_rsa.pub

Нека копираме публичния ключ на Ansible хост, чийто IP адрес е 192.168.56.101

[email protected]:~/.ssh# ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
The authenticity of host '10.0.0.25 (10.0.0.25)' can't be established.
ECDSA key fingerprint is SHA256:eXduPrfV0mhxUcpsZWg+0oXDim7bHb90caA/Rt79cIs.
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
[email protected]'s password: 

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh '[email protected]'"
and check to make sure that only the key(s) you wanted were added.

[email protected]:~/.ssh#

Можете да видите в резултата по-горе, 1 ключ е добавен успешно. Това показва, че SSH ключът е разменен.

  Как да изберете рутер за нуждите на вашата домашна мрежа

След това ще настроим Ansible клиент.

Настройка на Ansible Client

Предполагам, че вече сте следвали стъпките за инсталиране на Ansible на клиентския сървър, както е обяснено в предишните стъпки.

Настройката на клиент или хост не е нищо друго освен информиране на Ansible сървъра за клиентите. И за да направите това:

  • Влезте в Ansible сървър
  • Отидете на /etc/ansible
  • Добавете следното във файла hosts, като използвате любимия си редактор
[Client] 
node1 ansible_ssh_host=10.0.0.25

Ansible тест

Ако сте изпълнили всички стъпки правилно, ще получите съобщение за УСПЕХ, когато изпълните командата по-долу на ansible-сървъра.

[email protected]:~/.ssh# ansible -m ping Client
node1 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python3"
    }, 
    "changed": false, 
    "ping": "pong"
}
[email protected]:~/.ssh#

Thea по-горе пингва на клиента, за да тества връзката и да потвърди дали е добра или не.

Заключение

Надявам се, че това ви дава идея да започнете с инсталирането и играта. Очаквайте още уроци по Ansible или разгледайте този курс за овладяване на Ansible на Udemy.