Files
IaC/ansible/deploy_all.yml

76 lines
2.6 KiB
YAML

---
- name: Step 1 - Terraform Provisioning
hosts: localhost
connection: local
gather_facts: false
become: false
tasks:
- name: Create terraform mirror config
copy:
dest: "/tmp/.terraformrc"
content: |
provider_installation {
network_mirror {
url = "https://terraform-mirror.yandexcloud.net/"
}
direct {
exclude = ["registry.terraform.io/*/*"]
}
}
- name: Nuclear Cleanup
shell: "rm -rf .terraform .terraform.lock.hcl"
args:
chdir: "{{ playbook_dir }}/../terraform"
- name: Terraform Init
shell: terraform init -reconfigure -no-color
args:
chdir: "{{ playbook_dir }}/../terraform"
environment:
TF_CLI_CONFIG_FILE: "/tmp/.terraformrc"
TF_HTTP_ADDRESS: "{{ lookup('env', 'TF_HTTP_ADDRESS') }}"
TF_HTTP_USERNAME: "{{ lookup('env', 'TF_HTTP_USERNAME') }}"
TF_HTTP_PASSWORD: "{{ lookup('env', 'TF_HTTP_PASSWORD') }}"
- name: Terraform Apply
shell: terraform apply -auto-approve -no-color -lock=false
args:
chdir: "{{ playbook_dir }}/../terraform"
register: tf_result
environment:
TF_CLI_CONFIG_FILE: "/tmp/.terraformrc"
TF_HTTP_ADDRESS: "{{ lookup('env', 'TF_HTTP_ADDRESS') }}"
TF_HTTP_USERNAME: "{{ lookup('env', 'TF_HTTP_USERNAME') }}"
TF_HTTP_PASSWORD: "{{ lookup('env', 'TF_HTTP_PASSWORD') }}"
TF_VAR_proxmox_api_token_id: "{{ lookup('env', 'TF_VAR_proxmox_api_token_id') }}"
TF_VAR_proxmox_api_token_secret: "{{ lookup('env', 'TF_VAR_proxmox_api_token_secret') }}"
TF_VAR_proxmox_api_url: "{{ lookup('env', 'TF_VAR_proxmox_api_url') }}"
- name: Dynamically add hosts to Ansible memory
add_host:
name: "{{ item.name }}"
groups:
- k8s_new_nodes
- "{{ 'masters' if 'master' in item.name else 'workers' }}"
ansible_host: "{{ item.ip }}"
ansible_user: ubuntu # ИСПОЛЬЗУЕМ ubuntu ИЗ CLOUD-INIT
ansible_ssh_extra_args: "-o StrictHostKeyChecking=no"
loop:
- { name: 'master-01', ip: '10.33.33.201' }
- { name: 'worker-01', ip: '10.33.33.202' }
- { name: 'worker-02', ip: '10.33.33.203' }
- name: Step 2 - Wait for SSH and Prepare
hosts: k8s_new_nodes
gather_facts: false
tasks:
- name: Wait for SSH to be ready on new VMs
wait_for_connection:
delay: 10
timeout: 300
# Step 3 - Запускаем твой основной плейбук установки K8s
- name: Step 3 - Install Kubernetes Cluster
import_playbook: k8s_setup.yml