diff --git a/ansible/deploy_all.yml b/ansible/deploy_all.yml index 2176f13..1192966 100644 --- a/ansible/deploy_all.yml +++ b/ansible/deploy_all.yml @@ -3,11 +3,12 @@ hosts: localhost connection: local gather_facts: true + vars: + tf_dir: "{{ playbook_dir }}/../terraform" tasks: - - name: Create terraform mirror config in HOME + - name: Create terraform mirror config copy: dest: "{{ ansible_user_dir }}/.terraformrc" - mode: '0644' content: | provider_installation { network_mirror { @@ -20,35 +21,43 @@ - name: Cleanup old terraform data file: - path: "{{ playbook_dir }}/../terraform/.terraform" + path: "{{ tf_dir }}/.terraform" state: absent - - name: Run Terraform Apply - community.general.terraform: - project_path: "{{ playbook_dir }}/../terraform" - state: present - force_init: true + - name: Terraform Init + shell: terraform init -reconfigure -no-color + args: + chdir: "{{ tf_dir }}" + environment: + TF_CLI_CONFIG_FILE: "{{ ansible_user_dir }}/.terraformrc" + # Эти переменные Semaphore должен передать в Ansible + 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 + args: + chdir: "{{ tf_dir }}" + environment: + TF_CLI_CONFIG_FILE: "{{ ansible_user_dir }}/.terraformrc" + # Передаем токены Proxmox в Terraform + 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') }}" - name: Wait for SSH to be ready wait_for: - host: "{{ item }}" + host: "{{ item.value.ip }}" port: 22 state: started timeout: 300 - loop: - - 10.33.33.201 - - 10.33.33.202 - - 10.33.33.203 + loop: "{{ lookup('dict', vm_nodes | default({})) }}" # Используем переменные из TF если нужно - name: Step 2 - Install Kubernetes hosts: all - # Теперь мы переключаемся на реальные сервера. - # Чтобы это сработало в одном шаблоне, - # в Semaphore должен быть выбран Inventory со всеми хостами, - # НО в первом Play мы принудительно используем localhost. become: true tasks: - name: Install base packages apt: - name: [curl, apt-transport-https] - state: present \ No newline at end of file + name: [curl, apt-transport-https, qemu-guest-agent] + state: present + update_cache: yes \ No newline at end of file