Підручник Ansible для початківців: посібник, команди та приклад
Що таке Ansible?
Неможливо це інструмент автоматизації та оркестровки з відкритим кодом для надання програмного забезпечення, керування конфігурацією та розгортання програмного забезпечення. Ansible може легко запускати та налаштовувати Unix-подібні системи, а також Windows системи для надання інфраструктури як коду. Він містить власну декларативну мову програмування для налаштування та керування системою.
Ansible популярний через простоту встановлення, легкість використання в тому, що стосується підключення до клієнтів, відсутність агента для клієнтів Ansible і безліч навичок. Функціонує шляхом підключення через SSH клієнтам, тому не потрібен спеціальний агент на стороні клієнта, і, надсилаючи модулі клієнтам, модулі потім виконуються локально на стороні клієнта, а вихідні дані надсилаються назад на сервер Ansible.
Оскільки він використовує SSH, він може дуже легко підключатися до клієнтів за допомогою SSH-ключів, що спрощує весь процес. Деталі клієнта, як-от імена хостів або IP-адреси та порти SSH, зберігаються у файлах, які називаються файлами інвентаризації. Після того, як ви створили файл інвентаризації та заповнили його, ansible може використовувати його.
Навіщо використовувати Ansible?
Ось кілька важливих плюсів/переваг використання Ansible
- Одна з найважливіших переваг Ansible полягає в тому, що він вільний для всіх.
- Для встановлення та використання Ansible не потрібні спеціальні навички системного адміністратора, а офіційна документація дуже вичерпна.
- Його модульність щодо плагінів, модулів, інвентаризації та ігор робить Ansible ідеальним компаньйоном для оркестрування великих середовищ.
- Ansible дуже легкий і послідовний, і немає жодних обмежень щодо операційної системи чи основного обладнання.
- Він також дуже безпечний завдяки безагентним можливостям і завдяки використанню функцій безпеки OpenSSH.
- Ще одна перевага, яка спонукає до прийняття Ansible, — це його плавна крива навчання, що визначається повною документацією та простою для вивчення структурою та конфігурацією.
Історія Ansible
Ось важливі пам'ятки з історії ансібла:
- У лютому 2012 року стартував проект Ansible. Його вперше розробив Майкл Де Хаан, творець Cobbler and Func, уніфікованого мережевого контролера Fedora.
- Компанія, яка спочатку називалася AnsibleWorks Inc, фінансує інструмент ansible, була придбана RedHat у 2015 році, а пізніше разом із RedHat перейшла під егіду IBM.
- На даний момент Ansible входить до таких дистрибутивів, як Fedora Linux, RHEL, Centos і Oracle Linux
Важливі терміни, що використовуються в Ansible
-
Ansible сервер
Машина, на якій встановлено Ansible і з якої запускатимуться всі завдання та підручники
-
Модулі
По суті, модуль — це команда або набір подібних команд Ansible, призначених для виконання на стороні клієнта
-
Завдання
Завдання - це розділ, який складається з однієї процедури, яку потрібно виконати
-
Роль
Спосіб упорядкування завдань і пов’язаних файлів, які згодом викликатимуть у посібнику
-
факт
Інформація, отримана з клієнтської системи з глобальних змінних за допомогою операції збору фактів
-
Інвентаризація
Файл, що містить дані про клієнтські сервери ansible. У наступних прикладах визначено як файл hosts
-
Play
Виконання п'єси
-
Handler
Завдання, яке викликається лише за наявності сповіщувача
-
Сповіщувач
Розділ, приписуваний завданню, яке викликає обробник, якщо вихідні дані змінено
-
Тег
Ім’я завдання, яке можна використовувати пізніше для виконання лише цього конкретного завдання чи групи завдань.
Інсталяція Ansible в Linux
Після того, як ви порівняли та зважили свої варіанти та вирішили вибрати Ansible, наступним кроком буде його встановлення у вашій системі. Ми розглянемо різні етапи встановлення Linux дистрибутиви, найпопулярніші з них, у наступному невеликому посібнику.
Встановіть Ansible на системи Centos/RedHat
Крок 1) Встановіть репозиторій EPEL
[root@ansible-server ~]# sudo yum install epel-release
Крок 2) Встановити пакет ansible
[root@ansible-server ~]# sudo yum install -y ansible
Встановити ansible на Ubuntu/Системи Debian
Крок 1) Виконайте оновлення пакетів
$ sudo apt update
Крок 2) Встановіть загальний пакет програмних властивостей
$ sudo apt install software-properties-common
Крок 3) Встановити особистий архів пакетів ansible
$ sudo apt-add-repository ppa:ansible/ansible
Крок 4) Встановити анзибл
$ sudo apt update $ sudo apt install ansible
Ansible ad-hoc команди
Одним із найпростіших способів використання Ansible є використання спеціальних команд. Їх можна використовувати, коли ви хочете виконати деякі команди на сервері або групі серверів. Спеціальні команди не зберігаються для подальшого використання, але представляють швидкий спосіб взаємодії з потрібними серверами.
Для цього підручника Ansible буде налаштовано простий файл хостів двох серверів, який містить host1 і host2.
Ви можете переконатися, що хости доступні з сервера ansible, виконавши команду ping на всіх хостах.
[root@ansible-server test_ansible]# ansible -i hosts all -m ping host1 | SUCCESS => { "changed": false, "ping": "pong" } host2 | SUCCESS => { "changed": false, "ping": "pong" }
Пояснення:
- Статус команди, в даному випадку SUCCESS
- Хост, на якому виконано команду
- Команда, видана через параметр -m, у даному випадку це ping
- За допомогою параметра -i ви можете вказати на файл hosts.
Ви можете ввести ту саму команду лише на певному хості, якщо це необхідно.
[root@ansible-server test_ansible]# ansible -i hosts all -m ping --limit host2 host2 | SUCCESS => { "changed": false, "ping": "pong" }
Пояснення:
- Параметр Limit можна використовувати для виконання команд лише на певних хостах у файлі хосту
- Ім’я хоста, як визначено у файлі інвентаризації
Якщо вам потрібно швидко скопіювати файл у кілька місць призначення, ви можете скористатися модулем копіювання в ansible, який використовує SCP. Отже, команда та її вихід виглядають так:
[root@ansible-server test_ansible]# ansible -i hosts all -m copy -a "src=/root/test_ansible/testfile dest=/tmp/testfile" host1 | SUCCESS => { "changed": true, "checksum": "da39a3ee5e6b4b0d3255bfef95601890afd80709", "dest": "/tmp/testfile", "gid": 0, "group": "root", "md5sum": "d41d8cd98f00b204e9800998ecf8427e", "mode": "0644", "owner": "root", "size": 0, "src": "/root/.ansible/tmp/ansible-tmp-1562216392.43-256741011164877/source", "state": "file", "uid": 0 } host2 | SUCCESS => { "changed": true, "checksum": "da39a3ee5e6b4b0d3255bfef95601890afd80709", "dest": "/tmp/testfile", "gid": 0, "group": "root", "md5sum": "d41d8cd98f00b204e9800998ecf8427e", "mode": "0644", "owner": "root", "size": 0, "src": "/root/.ansible/tmp/ansible-tmp-1562216392.6-280302911361278/source", "state": "file", "uid": 0 }
Пояснення:
- Визначено модуль копіювання
- Аргументами модуля в цьому випадку є абсолютний шлях джерела та абсолютний шлях призначення.
- Вивід команди Ansible відображає успішність команди копіювання та інші деталі, як-от контрольні суми sha1 або md5 для перевірки цілісності файлу та метадані, як-от власник, розмір або дозволи. Легко встановити пакет на групі серверів. У Ansible є кілька модулів, які взаємодіють із використовуваними інсталяторами, наприклад yum, apt, dnf тощо.
У наступному прикладі ви дізнаєтеся, як встановити пакет за допомогою модуля yum на двох хостах Centos.
[root@ansible-server test_ansible]# ansible -i hosts all -m yum -a 'name=ncdu state=present' host1 | SUCCESS => { "changed": true, "msg": "", "rc": 0, "results": [ "Loaded plugins: fastestmirror\nLoading mirror speeds from cached hostfile\n * base: mirror.netsite.dk\n * elrepo: mirrors.xservers.ro\n * epel: fedora.mirrors.telekom.ro\n * extras: centos.mirrors.telekom.ro\n * remi-php70: remi.schlundtech.de\n * remi-safe: remi.schlundtech.de\n * updates: centos.mirror.iphh.net\nResolving Dependencies\n--> Running transaction check\n---> Package ncdu.x86_64 0:1.14-1.el7 will be installed\n--> Finished Dependency Resolution\n\nDependencies Resolved\n\n================================================================================\n Package Arch Version Repository Size\n================================================================================\nInstalling:\n ncdu x86_64 1.14-1.el7 epel 51 k\n\nTransaction Summary\n================================================================================\nInstall 1 Package\n\nTotal download size: 51 k\nInstalled size: 87 k\nDownloading packages:\nRunning transaction check\nRunning transaction test\nTransaction test succeeded\nRunning transaction\n Installing : ncdu-1.14-1.el7.x86_64 1/1 \n Verifying : ncdu-1.14-1.el7.x86_64 1/1 \n\nInstalled:\n ncdu.x86_64 0:1.14-1.el7 \n\nComplete!\n" ] } host2 | SUCCESS => { "changed": true, "msg": "", "rc": 0, "results": [ "Loaded plugins: fastestmirror\nLoading mirror speeds from cached hostfile\n * base: mirror.netsite.dk\n * elrepo: mirrors.leadhosts.com\n * epel: mirrors.nav.ro\n * extras: centos.mirrors.telekom.ro\n * remi-php70: mirrors.uni-ruse.bg\n * remi-safe: mirrors.uni-ruse.bg\n * updates: centos.mirror.iphh.net\nResolving Dependencies\n--> Running transaction check\n---> Package ncdu.x86_64 0:1.14-1.el7 will be installed\n--> Finished Dependency Resolution\n\nDependencies Resolved\n\n================================================================================\n Package Arch Version Repository Size\n================================================================================\nInstalling:\n ncdu x86_64 1.14-1.el7 epel 51 k\n\nTransaction Summary\n================================================================================\nInstall 1 Package\n\nTotal download size: 51 k\nInstalled size: 87 k\nDownloading packages:\nRunning transaction check\nRunning transaction test\nTransaction test succeeded\nRunning transaction\n Installing : ncdu-1.14-1.el7.x86_64 1/1 \n Verifying : ncdu-1.14-1.el7.x86_64 1/1 \n\nInstalled:\n ncdu.x86_64 0:1.14-1.el7 \n\nComplete!\n" ] }
Пояснення:
- У цьому прикладі використовується модуль Yum
- Він визначає аргументи модуля, і в цьому випадку ви виберете назву пакета та його стан. Наприклад, якщо стан відсутній, пакет буде обшуканий і, якщо знайдений, видалений
- Коли позначено жовтим кольором, ви побачите результат команди ansible зі зміненим станом, тобто в цьому випадку пакунок знайдено та встановлено.
- Статус команди встановлення yum, виданої через ansible. У цьому випадку встановлено пакет ncdu.x86_64 0:1.14-1.el7.
Звичайно, усі параметри інсталятора yum можна використовувати через ansible, включаючи оновлення, встановлення, останню версію або видалення.
У наведеному нижче прикладі така сама команда була видана для видалення раніше встановленого пакета ncdu.
[root@ansible-server test_ansible]# ansible -i hosts all -m yum -a 'name=ncdu state=absent' host1 | SUCCESS => { "changed": true, "msg": "", "rc": 0, "results": [ "Loaded plugins: fastestmirror\nResolving Dependencies\n--> Running transaction check\n---> Package ncdu.x86_64 0:1.14-1.el7 will be erased\n--> Finished Dependency Resolution\n\nDependencies Resolved\n\n================================================================================\n Package Arch Version Repository Size\n================================================================================\nRemoving:\n ncdu x86_64 1.14-1.el7 @epel 87 k\n\nTransaction Summary\n================================================================================\nRemove 1 Package\n\nInstalled size: 87 k\nDownloading packages:\nRunning transaction check\nRunning transaction test\nTransaction test succeeded\nRunning transaction\n Erasing : ncdu-1.14-1.el7.x86_64 1/1 \n Verifying : ncdu-1.14-1.el7.x86_64 1/1 \n\nRemoved:\n ncdu.x86_64 0:1.14-1.el7 \n\nComplete!\n" ] } host2 | SUCCESS => { "changed": true, "msg": "", "rc": 0, "results": [ "Loaded plugins: fastestmirror\nResolving Dependencies\n--> Running transaction check\n---> Package ncdu.x86_64 0:1.14-1.el7 will be erased\n--> Finished Dependency Resolution\n\nDependencies Resolved\n\n================================================================================\n Package Arch Version Repository Size\n================================================================================\nRemoving:\n ncdu x86_64 1.14-1.el7 @epel 87 k\n\nTransaction Summary\n================================================================================\nRemove 1 Package\n\nInstalled size: 87 k\nDownloading packages:\nRunning transaction check\nRunning transaction test\nTransaction test succeeded\nRunning transaction\n Erasing : ncdu-1.14-1.el7.x86_64 1/1 \n Verifying : ncdu-1.14-1.el7.x86_64 1/1 \n\nRemoved:\n ncdu.x86_64 0:1.14-1.el7 \n\nComplete!\n" ] }
Пояснення:
- Результат команди yum показує, що пакет було видалено.
Ще одна корисна і важлива функція, яку ansible використовує для взаємодії з сервером клієнта, це збір деяких фактів про систему. Таким чином, він отримує інформацію про обладнання, програмне забезпечення та версії із системи та зберігає кожне значення у змінній, яку можна використовувати пізніше.
Якщо вам потрібна детальна інформація про системи, які потрібно змінити за допомогою ansible, можна використати наступну команду. Модуль налаштування збирає факти із системних змінних.
Ansible Playbooks
Ansible Playbooks це спосіб надсилання команд до віддалених систем за допомогою сценаріїв. Посібники Ansible використовуються для налаштування складних системних середовищ для підвищення гнучкості шляхом виконання сценарію в одній або кількох системах. Ansible playbooks більше схожі на мову конфігурації, ніж мову програмування.
Команди Ansible playbook використовують формат YAML, тому не потрібно багато синтаксису, але потрібно дотримуватися відступів. Як випливає з назви, п’єса – це збірка п’єс. За допомогою посібника ви можете призначити конкретні ролі для деяких хостів і інші ролі для інших хостів. Таким чином, ви можете оркеструвати кілька серверів у дуже різноманітних сценаріях, все в одному посібнику.
Щоб уточнити всі деталі, перш ніж продовжити роботу з прикладами підручника Ansible, ми повинні спочатку визначити завдання. Це інтерфейс до анзибльних модулів для ролей і ігор.
Тепер давайте вивчимо підручник Ansible на прикладі з одним підручником з однією грою, що містить кілька завдань, як показано нижче:
--- - hosts: group1 tasks: - name: Install lldpad package yum: name: lldpad state: latest - name: check lldpad service status service: name: lldpad state: started
У наведеному вище прикладі підручника Ansible група1 хостів у файлі хосту призначена для встановлення пакета lldpad за допомогою модуля yum, а потім служба lldpad, створена після інсталяції, запускається за допомогою службового модуля, який використовується переважно для взаємодії з ансамблем systemd.
Пояснення:
- Група хостів, на яких запускатиметься п’єса
- Модуль Yum використовується в цьому завданні для встановлення lldpad
- Сервісний модуль використовується, щоб перевірити, чи працює служба після встановлення
Кожен ansible playbook працює з файлом інвентаризації. Файл інвентаризації містить список серверів, розділених на групи для кращого контролю за такими деталями, як IP-адреса і порт SSH для кожного хоста.
Файл інвентаризації, який ви можете використовувати для цього прикладу підручника Ansible, виглядає так, як показано нижче. Є дві групи з назвами group1 і group2, кожна з яких містить host1 і host2 відповідно.
[group1] host1 ansible_host=192.168.100.2 ansible_ssh_port=22 [group2] host2 ansible_host=192.168.100.3 ansible_ssh_port=22
Пояснення:
- Назва групи
- Ім’я хосту з IP-адресою та портом ssh, у цьому випадку стандартним, 22.
Ще один корисний приклад збірки ігор Ansible, який цього разу містить дві гри для двох господарів, є наступним. Для першої групи хостів, group1, selinux буде ввімкнено. Якщо він увімкнений, то на екрані хоста з’явиться повідомлення.
Для другої групи хостів пакет httpd буде встановлено, лише якщо ansible_os_family — RedHat, а ansible_system_vendor — HP.
Ansible_os_family і ansible_system_vendor — це змінні, зібрані за допомогою параметра gather_facts, і їх можна використовувати, як у цьому умовному прикладі.
--- - hosts: group1 tasks: - name: Enable SELinux selinux: state: enabled when: ansible_os_family == 'Debian' register: enable_selinux - debug: Imsg: "Selinux Enabled. Please restart the server to apply changes." when: enable_selinux.changed == true - hosts: group2 tasks: - name: Install apache yum: name: httpd state: present when: ansible_system_vendor == 'HP' and ansible_os_family == 'RedHat'
Пояснення:
- Приклад пропозиції when, у цьому випадку, коли тип ОС – Debian. Змінна ansible_os_family збирається за допомогою функції gather_facts.
- Вихід завдання зареєстровано для майбутнього використання під назвою enable_selinux
- Інший приклад речення when. У цьому випадку для користувача хоста буде показано повідомлення, якщо SELinux справді було ввімкнено раніше.
- Ще один приклад речення when, що складається з двох правил
Крім завдань, існують також деякі спеціальні завдання, які називаються обробниками. Обробники повинні мати унікальні назви в підручнику. Вони працюють так само, як і звичайні завдання, але обробник може бути повідомлений через сповіщувач.
Якщо обробник не буде сповіщений під час запуску посібника, він не запуститься. Однак, якщо обробник сповіщає більше одного завдання, це буде виконано лише один раз після завершення всіх завдань.
У наведеному нижче прикладі ви можете побачити, як конкретне завдання має розділ сповіщень, який викликає інше завдання. Якщо вихідні дані першого завдання змінено, буде викликано завдання обробки. Найкращий приклад — змінити файл конфігурації, а потім перезапустити цю конкретну службу.
--- - hosts: group2 tasks: - name: sshd config file modify port lineinfile: path: /etc/ssh/sshd_config regexp: 'Port 28675' line: '#Port 22' notify: - restart sshd handlers - name: restart sshd service: sshd name: sshd state: restarted
У цьому випадку, якщо перше завдання «sshd config file modify port» змінено, тобто якщо спочатку порт не 28675, його буде змінено, і завдання повідомить обробнику з такою самою назвою про виконання , і це перезапустить службу sshd.
Пояснення:
- Приклад сповіщувача
- Приклад обробника
Анзибні ролі
Коли ви маєте справу з великими підручниками, легше розподілити завдання на ролі. Це також допомагає повторно використовувати ролі в майбутньому. Ролі — це набір завдань, які можна переміщувати з одного посібника до іншого, виконувати незалежно, але лише через файл посібника.
Ролі зберігаються в окремих каталогах і мають певну структуру каталогів.
[root@ansible-server test2]# tree . `-- role1 |-- defaults | `-- main.yml |-- handlers | `-- main.yml |-- meta | `-- main.yml |-- README.md |-- tasks | `-- main.yml |-- tests | |-- inventory | `-- test.yml `-- vars `-- main.yml 7 directories, 8 files
Файл yaml у каталозі за замовчуванням містить список змінних за замовчуванням, які слід використовувати разом із посібником. Каталог обробників використовується для зберігання обробників. Мета-каталог має містити інформацію про автора та залежності ролей. У каталозі завдань є основний файл yaml для ролі.
Каталог tests містить зразок файлу yaml playbook і зразок файлу інвентаризації, і в основному використовується для тестування перед створенням фактичної ролі.
Каталог vars містить файл yaml, у якому будуть визначені всі змінні, що використовуються роллю. Шаблони каталогу та файли каталогу повинні містити файли та шаблони, які використовуватимуться завданнями в ролі.
Щоб створити дерево каталогів для ролі, слід використати таку команду з останнім параметром, іменем ролі:
[root@ansible-server test2]# ansible-galaxy init role1
Ansible також добре працює з шаблонами. Як мова для створення шаблонів він використовує Jinja2.
У наступному прикладі ви дізнаєтесь, як виглядає базовий шаблон jinja2, і використаєте його в ролі.
Під час виконання, скажімо, залежно від того, у якому центрі даних розташований ваш сервер, ви можете вибрати з кількох серверів імен, кожен з яких відповідає центру даних, використовуючи змінну “resolver_ip_addresses”.
{% for resolver in resolver_ip_addresses %} nameserver {{ resolver }} {% endfor %} options timeout:1 options attempts:5 options rotate
У цьому прикладі в каталозі playbook визначено кілька змінних, у тому числі змінну з назвою resolver_ip_addresses із різними значеннями залежно від центру обробки даних.
- name: Set resolver for server template: src: dns.j2 dest: /etc/resolv.conf group: root owner: root mode: "0644" tag: resolver
Пояснення:
- Назва шаблону, який буде використовуватися. Шаблон знаходиться в каталозі шаблонів у шляху ролі
- Шлях призначення імені файлу, який буде замінено на шаблон, на стороні клієнта.
- Дозволи цільового файлу
Завдання ролей також можуть мати поле тегу, яке має назву. Кілька завдань можуть використовувати один тег. Під час запуску ansible playbook ви також можете вказати тег, щоб ці завдання виконуватися.
Ansible Case Study
У цьому розділі ми проаналізуємо тематичне дослідження важливої анзибльної п’єси, яка має три ролі. Мета цього — дати практичний приклад того, про що ми говорили раніше. Деякі з прикладів, використаних раніше в цьому посібнику Ansible playbook, будуть адаптовані та використані в цьому посібнику playbook.
Нижче наведено структуру каталогів підручника. Файл Yaml, який буде використано, буде p4.yml.
[root@ansible-server test_ansible]# ls -lrth total 16K -rw-r--r--. 1 root root 0 Jul 3 10:13 testfile -rw-r--r--. 1 root root 203 Jul 3 13:30 p1.yml -rw-r--r--. 1 root root 125 Jul 3 15:00 hosts -rw-r--r--. 1 root root 488 Jul 3 16:40 p2.yml -rw-r--r--. 1 root root 188 Jul 4 17:33 p4.yml drwxr-xr-x. 5 root root 47 Jul 4 17:35 roles [root@ansible-server test_ansible]# cd roles [root@ansible-server roles]# ls -lrth total 12K drwxr-xr-x. 9 root root 4.0K Jul 4 12:52 httpd drwxr-xr-x. 9 root root 4.0K Jul 4 13:55 selinux drwxr-xr-x. 9 root root 4.0K Jul 4 16:54 resolver
Посібник має три ролі, одна з яких називається резолвером, який встановлює певний сервер імен на серверах шляхом копіювання файлу з сервера до місця призначення /etc/resolv.conf. Інший називається httpd, і він встановлює пакет httpd із модулем yum, а третій увімкне SELinux і сповістить користувача, який увійшов у систему, щоб перезавантажити систему. Кожну роль було створено за допомогою команди ansible-galaxy.
Роль розв’язувача, завдання main.yml:
Роль Httpd, завдання main.yml:
Роль Selinux, завдання main.yml:
Нижче наведено опис п4.yml. Він працюватиме на всіх хостах, якщо інше не вказано в командному рядку, він працюватиме як root-користувач на порту 22 (SSH), він збиратиме факти перед виконанням ролей, і він виконуватиме всі три ролі, згадані вище. Кожну роль можна запускати незалежно, вказавши тег у командному рядку ansible-playbook за допомогою параметра –t.
--- - hosts: all user: root port: 22 gather_facts: True roles: - { role: selinux, tags: selinux } - { role: httpd, tags: httpd } - { role: resolver, tags: resolver }
Запуск p4.yml playbook на двох хостах та інтерпретація результату. Цю ж команду можна виконати з параметром –check для сухого запуску. Якщо ви хочете використовувати автентифікацію за паролем, використовуйте параметр -k.
Пояснення:
- Команда Ansible-playbook, яка запускає p4.yml
- Playbook пропускає роль SELinux, оскільки її вже ввімкнено.
- Ansible виявив, що httpd-пакет уже встановлено, тому він повертає нормально.
- Резолвер було налаштовано, а роль розв’язувача змінилася.
Шпаргалка Ansible Commands
Встановіть репозиторій EPEL на системах Centos/RHEL
[root@ansible-server ~]# sudo yum install epel-release
Встановіть пакет ansible на системах Centos/RHEL
[root@ansible-server ~]# sudo yum install -y ansible
Виконайте оновлення пакетів у Debian/Ubuntu системи
$ sudo apt update
Встановіть загальний пакунок software-properties-common на Debian/Ubuntu системи
$ sudo apt install software-properties-common
Встановіть особистий архів пакетів ansible на Debian/Ubuntu системи
$ sudo apt-add-repository ppa:ansible/ansible
Встановити ansible на Debian/Ubuntu системи
$ sudo apt update $ sudo apt install ansible
Видайте команду ping на всіх серверах, визначених у файлі інвентаризації під назвою hosts
[root@ansible-server test_ansible]# ansible -i hosts all -m ping
Видайте команду ping лише на host2
[root@ansible-server test_ansible]# ansible -i hosts all -m ping --limit host2
Скопіюйте файл «testfile» на всі хости у файлі інвентаризації
[root@ansible-server test_ansible]# ansible -i hosts all -m copy -a "src=/root/test_ansible/testfile dest=/tmp/testfile"
Встановіть пакет ncdu на всіх хостах
[root@ansible-server test_ansible]# ansible -i hosts all -m yum -a 'name=ncdu state=present'
Видаліть пакет ncdu на всіх хостах
[root@ansible-server test_ansible]# ansible -i hosts all -m yum -a 'name=ncdu state=absent'
Створіть структуру каталогів для ролі під назвою role1.
[root@ansible-server test2]# ansible-galaxy init role1
Посібник із застосуванням p4.yml
[root@ansible-server test_ansible]# ansible-playbook -i hosts p4.yml --check
Запустіть p4.yml playbook з автентифікацією пароля для всіх хостів
[root@ansible-server test_ansible]# ansible-playbook -i hosts p4.yml -k
Підсумки
У світі технологій, які постійно змінюються швидкими темпами та водночас неймовірно швидко розвиваються, системні адміністратори та інженери Devops повинні думати про різні підходи до того, як автоматизувати рутинні завдання та оркеструвати великі пули серверів.
Поки їх багато альтернатива Ansible (Chef, Puppet), які роблять те саме з деякими відмінностями, Ansible вдалося піднятися над усіма завдяки своїй простоті, покращеній безпеці та, що найголовніше, плавній кривій навчання. Завдяки цим якостям і швидкому засвоєнню Ansible ми створили підручник, повний прикладів, щоб ви могли мати ще більш бездоганний перший досвід роботи з Ansible.
У цьому посібнику з основ Ansible ми описали Ansible і трохи поговорили про його історію. Ми згадали сильні сторони Ansible і переваги, які ansible може принести автоматизації та оркестровці інфраструктур різного розміру. Ми визначили основні терміни, що використовуються в ансіблі, і визначили структуру підручників для анзиблів. Ґрунтовні приклади супроводжували всю інформацію детальними поясненнями.