Найти в Дзене
Никита Тульских

nastroika gebian exe

ControlVM: sudo apt-get install -y ansible mkdir ansible vim ~/bin/main.tf data "template_file" "inventory" {
template = file("./_templates/inventory.tpl")
vars = {
user = "altlinux"
web1 = join("", [yandex_compute_instance.web1.name, " ansible_host=", yandex_compute_instance.web1.network_interface.0.nat_ip_address])
web2 = join("", [yandex_compute_instance.web2.name, " ansible_host=", yandex_compute_instance.web2.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/ vim ~/bin/_templates/inventory.tpl ${web1}
${web2}
[all:vars]
ansible_user = ${user}
ansible_ssh_extra_args = '-o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no'
ansible_python_interpreter = /usr/bin/python3 vim ~/ansible/playbook.yml ---
- hosts: all
remote_user: altlinux
become: true
tasks:
- name: Install d

ControlVM:

  • Установим ansible:

sudo apt-get install -y ansible

  • Создадим директорию под ansible:

mkdir ansible

  • Правим основной файл terraform по пути /home/altlinux/bin/main.tf и добавляем следующую информацию:

vim ~/bin/main.tf

  • данный блок будет на основе шаблона автоматически после разрёртывания инфраструктуры с помощью cloudinit.sh - будет создавать инвентарный файл для ansible:

data "template_file" "inventory" {
template = file("./_templates/inventory.tpl")

vars = {
user = "altlinux"
web1 = join("", [yandex_compute_instance.web1.name, " ansible_host=", yandex_compute_instance.web1.network_interface.0.nat_ip_address])
web2 = join("", [yandex_compute_instance.web2.name, " ansible_host=", yandex_compute_instance.web2.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/

  • Теперь создаём сам шаблон для инвентарного файла:

vim ~/bin/_templates/inventory.tpl

  • содержимое:

${web1}
${web2}

[all:vars]
ansible_user = ${user}
ansible_ssh_extra_args = '-o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no'
ansible_python_interpreter = /usr/bin/python3

  • Пишем playbook-сценарий, который будет развёртывать и настроивать web1 и web2:

vim ~/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: newerr0r/app1:1.0
ports:
- "80:80"