diff --git a/docs/2. Установка и настройка Ansible.md b/docs/2. Установка и настройка Ansible.md index e810346..434cc5d 100644 --- a/docs/2. Установка и настройка Ansible.md +++ b/docs/2. Установка и настройка Ansible.md @@ -57,3 +57,84 @@ ansible-galaxy role init my-project После подключения Ansible делает сбор фактов, узнает полную информацию о системе, какая ОС, архитектура, ip адреса и так далее. +## Подключение Ansible +Как Ansible понять, куда ему подключаться? Для этого существует инвентарный файл hosts.yml + + +Это файл, где 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 ее сделать, вот какая структура должна получится: + + +В роле update-packages мы создаем tasks "main.yml": +``` +--- +- name: Обновить все пакеты через apt   + ansible.builtin.apt: +   upgrade: yes             # выполнит обновление всего +   update_cache: yes        # обновить кэш пакетов + +``` + +Идет вызов модуля "ansible.buildin.apt" под названием apt, он принимает 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: + + diff --git a/docs/assets/image_1777458081326.jpg b/docs/assets/image_1777458081326.jpg new file mode 100644 index 0000000..8e99cac Binary files /dev/null and b/docs/assets/image_1777458081326.jpg differ diff --git a/docs/assets/image_1777458099510.jpg b/docs/assets/image_1777458099510.jpg new file mode 100644 index 0000000..50ae54d Binary files /dev/null and b/docs/assets/image_1777458099510.jpg differ diff --git a/docs/assets/image_1777459628010.jpg b/docs/assets/image_1777459628010.jpg new file mode 100644 index 0000000..636fb15 Binary files /dev/null and b/docs/assets/image_1777459628010.jpg differ diff --git a/docs/assets/image_1777460073181.jpg b/docs/assets/image_1777460073181.jpg new file mode 100644 index 0000000..36e09c9 Binary files /dev/null and b/docs/assets/image_1777460073181.jpg differ