mirror of
https://github.com/Dannecron/netology-devops.git
synced 2025-12-25 23:32:37 +03:00
add homework 8.1, task 1 and partial task 2
This commit is contained in:
2
src/homework/08-ansible/8.1/playbook/docker_run.sh
Executable file
2
src/homework/08-ansible/8.1/playbook/docker_run.sh
Executable file
@@ -0,0 +1,2 @@
|
||||
docker run --rm -d --name=centos7 centos:7 tail -f /dev/null \
|
||||
&& docker run --rm -d --name=debian debian:stable-slim tail -f /dev/null
|
||||
@@ -0,0 +1,2 @@
|
||||
---
|
||||
some_fact: "all default fact"
|
||||
@@ -0,0 +1,2 @@
|
||||
---
|
||||
some_fact: "deb default fact"
|
||||
@@ -0,0 +1,2 @@
|
||||
---
|
||||
some_fact: "el default fact"
|
||||
9
src/homework/08-ansible/8.1/playbook/inventory/prod.yml
Normal file
9
src/homework/08-ansible/8.1/playbook/inventory/prod.yml
Normal file
@@ -0,0 +1,9 @@
|
||||
---
|
||||
el:
|
||||
hosts:
|
||||
centos7:
|
||||
ansible_connection: docker
|
||||
deb:
|
||||
hosts:
|
||||
debian:
|
||||
ansible_connection: docker
|
||||
5
src/homework/08-ansible/8.1/playbook/inventory/test.yml
Normal file
5
src/homework/08-ansible/8.1/playbook/inventory/test.yml
Normal file
@@ -0,0 +1,5 @@
|
||||
---
|
||||
inside:
|
||||
hosts:
|
||||
localhost:
|
||||
ansible_connection: local
|
||||
10
src/homework/08-ansible/8.1/playbook/site.yml
Normal file
10
src/homework/08-ansible/8.1/playbook/site.yml
Normal file
@@ -0,0 +1,10 @@
|
||||
---
|
||||
- name: Print os facts
|
||||
hosts: all
|
||||
tasks:
|
||||
- name: Print OS
|
||||
debug:
|
||||
msg: "{{ ansible_distribution }}"
|
||||
- name: Print fact
|
||||
debug:
|
||||
msg: "{{ some_fact }}"
|
||||
184
src/homework/08-ansible/8.1/readme.md
Normal file
184
src/homework/08-ansible/8.1/readme.md
Normal file
@@ -0,0 +1,184 @@
|
||||
Выполнение [домашнего задания](https://github.com/netology-code/mnt-homeworks/blob/MNT-13/08-ansible-01-base/README.md)
|
||||
по теме "8.1. Введение в Ansible".
|
||||
|
||||
## Q/A
|
||||
|
||||
### Задание 1
|
||||
|
||||
> Подготовка к выполнению
|
||||
> 1. Установите ansible версии 2.10 или выше
|
||||
> 2. Создайте свой собственный публичный репозиторий на github с произвольным именем.
|
||||
> 3. Скачайте playbook из репозитория с домашним заданием и перенесите его в свой репозиторий.
|
||||
|
||||
Установку `ansible` производил через `pip`.
|
||||
|
||||
```shell
|
||||
ansible --version
|
||||
```
|
||||
|
||||
```text
|
||||
ansible [core 2.13.1]
|
||||
```
|
||||
|
||||
Репозиторий расположен по [ссылке](https://github.com/Dannecron/netology-devops).
|
||||
|
||||
Playbook расположен в директории [playbook](./playbook).
|
||||
|
||||
### Задание 2
|
||||
|
||||
> Основная часть.
|
||||
> 1. Попробуйте запустить playbook на окружении из `test.yml`, зафиксируйте какое значение имеет факт `some_fact` для указанного хоста при выполнении playbook'a.
|
||||
|
||||
```shell
|
||||
ansible-playbook -i inventory/test.yml site.yml
|
||||
```
|
||||
|
||||
```text
|
||||
PLAY [Print os facts] ******************************************************************************************************
|
||||
|
||||
TASK [Gathering Facts] *****************************************************************************************************
|
||||
ok: [localhost]
|
||||
|
||||
TASK [Print OS] ************************************************************************************************************
|
||||
ok: [localhost] => {
|
||||
"msg": "Ubuntu"
|
||||
}
|
||||
|
||||
TASK [Print fact] **********************************************************************************************************
|
||||
ok: [localhost] => {
|
||||
"msg": 12
|
||||
}
|
||||
|
||||
PLAY RECAP *****************************************************************************************************************
|
||||
localhost : ok=3 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
|
||||
```
|
||||
|
||||
Переменная `some_fact` в данном случае равна `12`.
|
||||
|
||||
> 2. Найдите файл с переменными (group_vars) в котором задаётся найденное в первом пункте значение и поменяйте его на 'all default fact'.
|
||||
|
||||
Переменная задаётся в файле [group_vars/all/example.yml](./playbook/group_vars/all/example.yml). После изменения файл будет выглядеть следующим образом:
|
||||
|
||||
```yaml
|
||||
---
|
||||
some_fact: "all default fact"
|
||||
```
|
||||
|
||||
> 3. Воспользуйтесь подготовленным (используется `docker`) или создайте собственное окружение для проведения дальнейших испытаний.
|
||||
|
||||
Заменил образ `ubuntu` на образ `debian` ([официальный образ `python`](https://hub.docker.com/_/python), основанный на debian)
|
||||
и, соответственно, изменил название контейнера в [inventory/prod.yml](./playbook/inventory/prod.yml).
|
||||
|
||||
Запуск контейнеров производится командой:
|
||||
|
||||
```shell
|
||||
docker run --rm -d --name=centos7 centos:7 tail -f /dev/null \
|
||||
&& docker run --rm -d --name=debian python:slim tail -f /dev/null
|
||||
```
|
||||
|
||||
> 4. Проведите запуск playbook на окружении из `prod.yml`. Зафиксируйте полученные значения `some_fact` для каждого из `managed host`.
|
||||
|
||||
```shell
|
||||
ansible-playbook -i inventory/prod.yml site.yml
|
||||
```
|
||||
|
||||
```text
|
||||
PLAY [Print os facts] ********************************************************************************************************************************************************
|
||||
|
||||
TASK [Gathering Facts] *******************************************************************************************************************************************************
|
||||
[WARNING]: Distribution debian 11 on host debian should use /usr/bin/python3, but is using /usr/local/bin/python3.10, since the discovered platform python interpreter was
|
||||
not present. See https://docs.ansible.com/ansible-core/2.13/reference_appendices/interpreter_discovery.html for more information.
|
||||
ok: [debian]
|
||||
ok: [centos7]
|
||||
|
||||
TASK [Print OS] **************************************************************************************************************************************************************
|
||||
ok: [centos7] => {
|
||||
"msg": "CentOS"
|
||||
}
|
||||
ok: [debian] => {
|
||||
"msg": "Debian"
|
||||
}
|
||||
|
||||
TASK [Print fact] ************************************************************************************************************************************************************
|
||||
ok: [centos7] => {
|
||||
"msg": "el"
|
||||
}
|
||||
ok: [debian] => {
|
||||
"msg": "deb"
|
||||
}
|
||||
|
||||
PLAY RECAP *******************************************************************************************************************************************************************
|
||||
centos7 : ok=3 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
|
||||
debian : ok=3 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
|
||||
```
|
||||
|
||||
Таким образом, переменная `some_fact` имеет следующие значения:
|
||||
* для `debian` - `deb`
|
||||
* для `centos7` - `el`
|
||||
|
||||
> 5. Добавьте факты в `group_vars` каждой из групп хостов так, чтобы для `some_fact` получились следующие значения: для `deb` - 'deb default fact', для `el` - 'el default fact'.
|
||||
|
||||
В данном случае необходимо отредактировать файлы [group_vars/deb/example.yml](./playbook/group_vars/deb/example.yml)
|
||||
и [group_vars/el/example.yml](./playbook/group_vars/el/example.yml).
|
||||
|
||||
> 6. Повторите запуск playbook на окружении `prod.yml`. Убедитесь, что выдаются корректные значения для всех хостов.
|
||||
|
||||
|
||||
```shell
|
||||
ansible-playbook -i inventory/prod.yml site.yml
|
||||
```
|
||||
|
||||
```text
|
||||
PLAY [Print os facts] ********************************************************************************************************************************************************
|
||||
|
||||
TASK [Gathering Facts] *******************************************************************************************************************************************************
|
||||
[WARNING]: Distribution debian 11 on host debian should use /usr/bin/python3, but is using /usr/local/bin/python3.10, since the discovered platform python interpreter was
|
||||
not present. See https://docs.ansible.com/ansible-core/2.13/reference_appendices/interpreter_discovery.html for more information.
|
||||
ok: [debian]
|
||||
ok: [centos7]
|
||||
|
||||
TASK [Print OS] **************************************************************************************************************************************************************
|
||||
ok: [centos7] => {
|
||||
"msg": "CentOS"
|
||||
}
|
||||
ok: [debian] => {
|
||||
"msg": "Debian"
|
||||
}
|
||||
|
||||
TASK [Print fact] ************************************************************************************************************************************************************
|
||||
ok: [centos7] => {
|
||||
"msg": "el default fact"
|
||||
}
|
||||
ok: [debian] => {
|
||||
"msg": "deb default fact"
|
||||
}
|
||||
|
||||
PLAY RECAP *******************************************************************************************************************************************************************
|
||||
centos7 : ok=3 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
|
||||
debian : ok=3 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
|
||||
```
|
||||
|
||||
|
||||
> 7. При помощи `ansible-vault` зашифруйте факты в `group_vars/deb` и `group_vars/el` с паролем `netology`.
|
||||
|
||||
//todo
|
||||
|
||||
> 8. Запустите playbook на окружении `prod.yml`. При запуске `ansible` должен запросить у вас пароль. Убедитесь в работоспособности.
|
||||
|
||||
//todo
|
||||
|
||||
> 9. Посмотрите при помощи `ansible-doc` список плагинов для подключения. Выберите подходящий для работы на `control node`.
|
||||
|
||||
//todo
|
||||
|
||||
> 10. В `prod.yml` добавьте новую группу хостов с именем `local`, в ней разместите localhost с необходимым типом подключения.
|
||||
|
||||
//todo
|
||||
|
||||
> 11. Запустите playbook на окружении `prod.yml`. При запуске `ansible` должен запросить у вас пароль. Убедитесь что факты `some_fact` для каждого из хостов определены из верных `group_vars`.
|
||||
|
||||
//todo
|
||||
|
||||
> 12. Заполните `README.md` ответами на вопросы. Сделайте `git push` в ветку `master`. В ответе отправьте ссылку на ваш открытый репозиторий с изменённым `playbook` и заполненным `README.md`.
|
||||
|
||||
//todo
|
||||
Reference in New Issue
Block a user