This commit is contained in:
chase
2026-04-29 14:26:14 +03:00
parent 4c36d125e0
commit 6332d669db
5 changed files with 81 additions and 0 deletions
@@ -57,3 +57,84 @@ ansible-galaxy role init my-project
После подключения Ansible делает сбор фактов, узнает полную информацию о системе, какая ОС, архитектура, ip адреса и так далее.
## Подключение Ansible
Как Ansible понять, куда ему подключаться? Для этого существует инвентарный файл hosts.yml
<img src="./assets/image_1777458099510.jpg" width="auto">
Это файл, где Ansible хранит список управляемых машин, пример:
```
all:
hosts: # сервера
web:
ansible_host: 172.16.13.11
db:
ansible_host: 172.16.13.12
ansible_user: postres
git:
ansible_host: 172.16.13.12
ansible_user: gitea
children: # группа серверов
storage-service:
hosts:
db:
git:
vars:
ansible_ssh_private_key_file: ~/.ssh/id_25519
ansible_become_password: P@ssw0rd
```
Это один из возможных вариантов использования hosts.
Мой hosts, на котором буду показывать пример:
```
all:
 hosts:
   my-vm:
     ansible_host: 172.16.13.101
     ansible_user: ansible
 vars:
   ansible_ssh_private_key_file: ~/.ssh/id_ed25519
   ansible_become_password: P@ssw0rd
```
Так же мы будем писать playbook в yml формате, вот простой пример:
```
---
- name: Обновление пакетов
 hosts: all # все хосты из hosts.yml, можно
 become: true # получение root прав
 roles:
   - update-packages
```
Мы указали роль update-packages, значит нужно в папке roles ее сделать, вот какая структура должна получится:
<img src="./assets/image_1777459628010.jpg" width="auto">
В роле update-packages мы создаем tasks "main.yml":
```
---
- name: Обновить все пакеты через apt  
ansible.builtin.apt:
   upgrade: yes             # выполнит обновление всего
   update_cache: yes        # обновить кэш пакетов
```
Идет вызов модуля "ansible.buildin.<font color="#f79646">apt</font>" под названием <font color="#f79646">apt</font>, он принимает 2 параметра:
`upgrade` и `update_cache`
Всё хорошо, но при запуске playbook будет искать roles относительно папки с ним `/ansible/playbooks/roles/`, наше же расположение `/ansible/roles/`, чтобы Ansible знал, где искать мы сделаем ansible.cfg в корневой папке, в которой пропишем полный
```
[defaults]
roles_path = /home/chase/file-fg/ansible/roles
inventory   = inventory/hosts.yml
```
Теперь запустим наш playbook.yml:
<img src="./assets/image_1777460073181.jpg" width="auto">