push
This commit is contained in:
@@ -57,3 +57,84 @@ ansible-galaxy role init my-project
|
|||||||
|
|
||||||
После подключения Ansible делает сбор фактов, узнает полную информацию о системе, какая ОС, архитектура, ip адреса и так далее.
|
После подключения 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">
|
||||||
|
|
||||||
|
|||||||
Binary file not shown.
|
After Width: | Height: | Size: 19 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 4.0 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 22 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 5.4 KiB |
Reference in New Issue
Block a user