Files
SecondBrain/90 Library/DevOps/Ansible/Inventory - Ansible.md
T
2026-05-24 15:03:28 +03:00

88 lines
2.1 KiB
Markdown

---
status: stable
type: concept
tags:
- devops
- ansible
created: 2025-12-17
updated: 2026-05-07
title: Inventory - Ansible
---
# Inventory - Ansible
Особенности Ansible:
1. Подключение по SSH
2. Agentless - нет программ на клиентах
Структура файла `hosts.ini`
```text-xml
192.168.0.1
192.168.0.2
[web] # группа серверов
192.168.0.3
192.168.0.4
```
Можно использовать псевдонимы, вместо ip
```text
app ansible_host=ip_server1
db ansible_host=ip_server2
web ansible_host=ip_server3
```
Другие полезные параметры **inventory**:
- `ansible_connection: ssh/winrm/local/docker` - тип подключения к серверу
- `ansible_port: 22/5986` - порт подключения
- `ansible_user: root` - логин для входа по ssh (или др.)
- `ansible_ssh_pass: password` или `ansible_password: password` - пароль для входа по ssh.
Группы для объединения групп:
```text
[mail_internal]
mail1.serv
[mail_external]
mail2.serv
[mail_all:children]
mail_internal
mail_external
```
Помимо `ini`-формата, можно использовать YAML-файлы:
```yaml
all:
children:
webservers:
hosts:
web1.example.com:
ansible_host: 192.168.1.10
ansible_user: admin
web2.example.com:
ansible_host: 192.168.1.11
vars:
ansible_port: 22
ansible_python_interpreter: /usr/bin/python3
databases:
hosts:
db1.example.com:
db2.example.com:
production:
children:
webservers:
databases:
```
## Связанные заметки
- [[DHCP]] — если хосты получают IP динамически через DHCP, inventory должен использовать имена (DNS), а не IP-адреса
- [[DNS]] — `ansible_host: web1.example.com` требует DNS-резолвинга; `/etc/resolv.conf` определяет, где искать