Найти тему
BecomeSysa

Настройка ansible для самых маленьких (часть 3)

Сегодня будем настраивать Ansible на работу внутри Terraform.

Для начала установим ansible:

sudo apt-get install -y ansible

Отредактируем terraform на заполнение инвентаря данными машин:

nano ~/bin/main.tf

data "template_file" "inventory" {

template = file("./_templates/inventory.tpl")

vars = {

user = "altlinux"

vm1 = join("", [yandex_compute_instance.vm1.name, " ansible_host=", yandex_compute_instance.vm1.network_interface.0.nat_ip_address])

vm2 = join("", [yandex_compute_instance.vm2.name, " ansible_host=", yandex_compute_instance.vm2.network_interface.0.nat_ip_address])

}

}

resource "local_file" "save_inventory" {

content = data.template_file.inventory.rendered

filename = "/home/altlinux/ansible/inventory"

}

Создаём директорию для шаблонов:

mkdir ~/bin/_templates/

Cоздадим шаблон для инвентарного файла:

nano ~/bin/_templates/inventory.tpl

${vm1}

${vm2}

[all:vars]

ansible_user = ${user}

ansible_ssh_extra_args = '-o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no'

ansible_python_interpreter = /usr/bin/python3

Напишем playbook-сценарий для развёртывания и настройки Docker и App1 из нашего репозитория DockerHub на машины vm1 и vm2

nano ~/ansible/playbook.yml

---

- hosts: all

remote_user: altlinux

become: true

tasks:

- name: Install docker

apt_rpm:

name:

- docker-ce

- python3-module-pip

state: present

update_cache: true

ignore_errors: true

- name: Started and enabled docker

systemd:

name: docker

state: started

enabled: true

- name: Install docker-py

command:

cmd: pip3 install docker-py

- name: Start a container App1

docker_container:

name: app1

hostname: "{{ ansible_hostname }}"

image: defeaded/app1:1.0

ports:

- "80:80"

Для установки Docker в данном примере используется модуль пакетного менеджера apt_rpm и модуль docker_container для разворачивания приложения.

Сделаем скрипт для автоматического запуска ansible playbook:

nano /home/altlinux/bin/DeployApp.sh

#!/bin/bash

cd /home/altlinux/ansible

ansible-playbook -i inventory playbook.yml

Дадим права на выполнение скрипта:

chmod +x /home/altlinux/bin/DeployApp.sh

Запустим скрипт:

DeployApp.sh

И проверим работу:

cat /home/altlinux/lb.ip

Открываем сайт по адресу в файле и проверяем балансировку обновляя страницу.

-2
-3