1
0
Fork 0

rearrange things, automate ansible inventory

This commit is contained in:
Von Random 2025-01-19 23:57:00 +02:00
parent 299b142adc
commit e2423e7e92
11 changed files with 32 additions and 33 deletions

1
.gitignore vendored Normal file
View file

@ -0,0 +1 @@
ansible/id_ed25519

View file

@ -1,11 +1,5 @@
# yatf
## nginx setup on vms:
```bash
./mkinv 127.0.0.1 127.0.0.2
ansible-playbook nginx_setup.yml -i ./inventory.ini
```
## doc links
https://terraform-provider.yandexcloud.net/
https://yandex.cloud/ru/docs/tutorials/infrastructure-management/terraform-quickstart

6
ansible/ansible.cfg Normal file
View file

@ -0,0 +1,6 @@
[defaults]
inventory = inventory.yml
remote_user = andrei
private_key_file = id_ed25519_yatf
host_key_checking = False

2
ansible/inventory.yml Normal file
View file

@ -0,0 +1,2 @@
plugin: cloud.terraform.terraform_provider
project_path: ../terraform

11
mkinv
View file

@ -1,11 +0,0 @@
#!/usr/bin/env bash
FILENAME="./inventory.ini"
A_USER="andrei"
A_KEY="$HOME/.ssh/id_ed25519_yatf"
counter=0
echo -n > "$FILENAME"
for i; do
echo "vm$counter ansible_host=$i ansible_user=$A_USER ansible_ssh_private_key_file=$A_KEY" >> "$FILENAME"
((counter++))
done

View file

@ -1,9 +0,0 @@
output "lb-ip" {
value = yandex_lb_network_load_balancer.balancer1.listener
}
output "vm-ips" {
value = tomap({
for name, vm in yandex_compute_instance.vm : name => vm.network_interface.0.nat_ip_address
})
}

View file

@ -3,6 +3,9 @@ terraform {
yandex = {
source = "yandex-cloud/yandex"
}
ansible = {
source = "ansible/ansible"
}
}
}
@ -12,6 +15,7 @@ provider "yandex" {
resource "yandex_compute_instance" "vm" {
count = 2
name = "vm${count.index}"
platform_id = "standard-v1"
boot_disk {
@ -47,14 +51,13 @@ resource "yandex_vpc_subnet" "subnet1" {
resource "yandex_lb_target_group" "group1" {
name = "group1"
target {
subnet_id = yandex_vpc_subnet.subnet1.id
address = yandex_compute_instance.vm[0].network_interface.0.ip_address
}
target {
subnet_id = yandex_vpc_subnet.subnet1.id
address = yandex_compute_instance.vm[1].network_interface.0.ip_address
dynamic "target" {
for_each = yandex_compute_instance.vm
content {
subnet_id = yandex_vpc_subnet.subnet1.id
address = target.value.network_interface.0.ip_address
}
}
}
@ -80,3 +83,13 @@ resource "yandex_lb_network_load_balancer" "balancer1" {
}
}
}
resource "ansible_host" "vm" {
count = length(yandex_compute_instance.vm)
name = "vm${count.index}"
groups = ["nginx"]
variables = {
ansible_host = yandex_compute_instance.vm[count.index].network_interface.0.nat_ip_address
}
}

3
terraform/output.tf Normal file
View file

@ -0,0 +1,3 @@
output "lb-ip" {
value = yandex_lb_network_load_balancer.balancer1.listener
}