Підручник з Ansible для початківців: Плейбук та команди
⚡ Розумний підсумок
Ansible — це безагентний механізм автоматизації з відкритим кодом, який налаштовує сервери через SSH, виконує спеціальні команди та керує складними розгортаннями за допомогою плейбуків YAML, ролей та шаблонів багаторазового використання в Linux та... Windows інфраструктури.

Ansible — один із найпоширеніших сучасних інструментів автоматизації з відкритим кодом. DevOps, цінується за свій безагентний дизайн та прості, зрозумілі файли конфігурації. Цей посібник з Ansible для початківців пояснює, що таке Ansible, як його встановити та як використовувати спеціальні команди, плейбуки, ролі та шаблони на практичних прикладах.
Що таке Ansible?
Неможливо — це інструмент автоматизації та оркестрації з відкритим кодом для налаштування програмного забезпечення, керування конфігурацією та розгортання програмного забезпечення. Він налаштовує Unix-подібні системи та Windows системи, надаючи інфраструктуру у вигляді коду за допомогою власної декларативної мови. Ansible часто порівнюють з агентними інструментами, такими як Ляльковий.
Ansible популярний завдяки простому встановленню, легкому підключенню клієнтів та безагентному дизайну. Він підключається до клієнтів через SSH, тому на стороні клієнта не потрібен спеціальний агент. Ansible надсилає модулі кожному клієнту, модулі запускаються локально, а їхній вивід повертається на сервер Ansible.
Оскільки Ansible використовує SSH, він легко підключається до клієнтів за допомогою SSH-ключів, що спрощує весь процес. Дані клієнта, такі як імена хостів або IP-адреси та SSH-порти, зберігаються у файлах, які називаються файлами інвентаризації. Після створення та заповнення файлу інвентаризації Ansible може його використовувати.
Навіщо використовувати Ansible?
Ось деякі важливі переваги використання Ansible:
- Одна з найважливіших переваг Ansible полягає в тому, що він безкоштовний для всіх.
- Для встановлення та використання не потрібні спеціальні навички системного адміністратора, а офіційна документація є дуже вичерпною.
- Його модульність, що включає плагіни, модулі, інвентаризацію та плейбуки, робить Ansible чудовим помічником для оркестрації великих середовищ.
- Ansible легкий та узгоджений, без обмежень щодо операційної системи чи базового обладнання.
- Він дуже безпечний завдяки безагентному дизайну та використанню функцій безпеки OpenSSH.
- Ansible має плавну криву навчання, підкріплену ретельною документацією та легкою для вивчення структурою та конфігурацією.
Ці сильні сторони, особливо якщо їх порівняти з іншими альтернативи Ansible, пояснюють його швидке впровадження. Перед його встановленням корисно зрозуміти, як розвивався проект.
Історія Ansible
Ось важливі віхи в історії Ansible:
- Проєкт Ansible розпочався у лютому 2012 року. Його вперше розробив Майкл ДеХаан, творець Cobbler та Func (Fedora Unified Network Controller).
- Спочатку компанія під назвою AnsibleWorks Inc., яка фінансує Ansible, була придбана RedHat у 2015 році, а пізніше разом з RedHat перейшла під управління... IBM парасолька.
- Сьогодні Ansible входить до складу таких дистрибутивів, як Fedora Linux, RHEL, CentOS та… Oracle Linux
Важливі терміни, що використовуються в Ansible
Наступні терміни зустрічаються в цьому посібнику з Ansible і їх варто знати, перш ніж почати:
Ansible сервер
Машина, на якій встановлено Ansible та з якої запускаються всі завдання та плейбуки.
Модулі
Модуль — це команда або набір подібних команд Ansible, призначених для виконання на стороні клієнта.
Завдання
Завдання — це розділ, що складається з однієї процедури, яку потрібно виконати.
Роль
Спосіб організації завдань та пов'язаних з ними файлів для подальшого виклику в плейбуці.
факт
Інформація, отримана з глобальних змінних клієнтської системи за допомогою операції gather_facts.
Інвентаризація
Файл, що містить дані про клієнтські сервери 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) Встановіть пакет software-properties-common.
$ 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 налаштовано простий файл hosts для двох серверів, що містить 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 можна використовувати для виконання команд лише на певних хостах у файлі хосту
- Ім’я хоста, як визначено у файлі інвентаризації
Якщо вам потрібно швидко скопіювати файл до кількох місць призначення, скористайтеся модулем копіювання, який використовує 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 – це спосіб надсилання команд до віддалених систем за допомогою скриптів. Плейбуки налаштовують складні системні середовища та підвищують гнучкість, запускаючи один скрипт на одній або кількох системах. Вони поводяться радше як мова конфігурації, ніж як мова програмування.
Команди плейбуку використовують формат 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
У наведеному вище плейбуці хости групи group1 у файлі hosts призначені для встановлення пакета lldpad за допомогою модуля yum. Служба lldpad, створена після встановлення, потім запускається за допомогою модуля service, який здебільшого взаємодіє з ансамблем systemd.
Пояснення:
- Група хостів, на яких запускатиметься п’єса
- Модуль Yum використовується в цьому завданні для встановлення lldpad
- Сервісний модуль використовується, щоб перевірити, чи працює служба після встановлення
Кожен плейбук Ansible працює з файлом інвентаризації. Файл інвентаризації містить список серверів, розділених на групи, що забезпечує кращий контроль над такими деталями, як IP-адреса та SSH-порт для кожного хоста.
Файл інвентаризації для цього прикладу плейбуку виглядає наступним чином. Є дві групи, 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-файл у каталозі defaults містить змінні за замовчуванням, що використовуються з плейбуком. Категорія handlers зберігає обробники, а каталог meta містить інформацію про залежності автора та ролі. Каталог tasks містить основний YAML-файл для ролі.
Директорія tests містить зразок плейбуку YAML та зразок файлу інвентаризації, і вона здебільшого використовується для тестування перед створенням фактичної ролі.
Директорія vars містить YAML-файл, де визначено всі змінні, що використовуються роллю. Директорії templates та files містять шаблони та файли, що використовуються завданнями в ролі.
Щоб створити дерево каталогів для ролі, скористайтеся такою командою, вказавши ім'я ролі як останній параметр:
[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 Case Study
У цьому розділі ми аналізуємо тематичне дослідження базового посібника з Ansible, який має три ролі. Мета полягає в тому, щоб навести практичний приклад концепцій, розглянутих досі. Деякі попередні приклади з цього посібника адаптовані та повторно використані в цьому посібнику.
Нижче наведено структуру каталогів плейбуку. Використаний 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
У плейбуці є три ролі. Роль resolver встановлює певний сервер імен на серверах, копіюючи файл до місця призначення /etc/resolv.conf. Роль httpd встановлює пакет httpd з модулем yum, а третя роль вмикає SELinux та повідомляє зареєстрованого користувача про необхідність перезавантаження системи. Кожна роль була створена за допомогою команди ansible-galaxy.
Роль розв’язувача, завдання main.yml:
Роль Httpd, завдання main.yml:
Роль Selinux, завдання main.yml:
Нижче наведено плейбук p4.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 на двох хостах та інтерпретувати вивід. Цю саму команду можна виконати з параметром –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 команда лише на хості2
[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















