| Путь | Назначение |
|---|---|
ansible/ |
создание deployer, установка и запуск docker & compose при загрузке |
terraform/ |
Nginx с отдельной сетью, томом и портом 127.0.0.1:8081 |
scripts/monitor.sh |
мониторинг ошибок переданного сервера |
compose/ |
Hello World и Nginx reverse proxy в отдельной сети |
Контейнер Terraform находится в сети course_tf_nginx_net. Оба контейнера Compose находятся в course_compose_net; запросы на порт 80 VM принимает nginx и передаёт сервису app. Эти две сети независимы.
-
Клонируйте проект и дважды запустите Ansible. Второй запуск должен показать
changed=0- идемпотентность:git clone https://github.com/deanonchikk/devops-course.git "$HOME/devops" cd "$HOME/devops/ansible" ansible-playbook -i inventory.ini setup_host.yml ansible-playbook -i inventory.ini setup_host.yml
-
Передайте проект
deployerи войдите под ним:sudo install -d -o deployer -g deployer /home/deployer/devops sudo cp -a "$HOME/devops/." /home/deployer/devops/ sudo chown -R deployer:deployer /home/deployer/devops sudo -iu deployer -
Запустите Terraform через локальный Docker-сокет и проверьте Nginx:
cd ~/devops/terraform export TF_VAR_docker_host=unix:///var/run/docker.sock terraform init terraform validate terraform plan terraform apply terraform state list curl -i http://127.0.0.1:8081/
-
Проверьте мониторинг docker, например:
~/devops/scripts/monitor.sh docker -
Скопируйте файлы Compose в
/opt/app, запустите контейнеры и проверьте ответ:sudo install -d -o deployer -g deployer /opt/app cp ~/devops/compose/{docker-compose.yml,nginx.conf,index.html} /opt/app/ docker compose -f /opt/app/docker-compose.yml up -d docker compose -f /opt/app/docker-compose.yml ps curl -i http://127.0.0.1/
С другой тачки выполните curl -i http://<VM_IP>/. Ждем 200 OK и страницу Hello World.
Скриншоты результатов проверок:
-
Второй запуск
ansible-playbook -i inventory.ini setup_host.ymlсchanged=0. -
terraform state listс четырьмя ресурсами. -
~/devops/scripts/monitor.sh dockerсо статусом сервиса и числом ошибок. -
docker compose -f /opt/app/docker-compose.yml psс двумя запущенными контейнерами. -
curl -i http://<VM_IP>/с кодом200 OKиHello World.
Сначала я запускал Terraform на маке локально и через него управлял docker на тачке. Потом выяснил, что Terraform тоже нужно запускать на тачке. Я перенёс туда проект и подключил Terraform к локальному docker-сокету.
На тачке не получилось скачать Terraform с сайта HashiCorp, поэтому я взял его из официального docker-образа. Docker-провайдер тоже не скачивался обычным способом: я сохранил его в папке .providers и указал эту папку в ~/.terraformrc пользователя deployer.




