| --- |
| - name: Prepare infrastructure and create operation instances |
| hosts: localhost |
| connection: local |
| gather_facts: False |
| roles: |
| - create_network |
| - create_securitygroup |
| - create_keypair |
| - role: create_hosts |
| hosts: "{{ operation.hosts }}" |
| operator_key: "dummy" |
| - name: Create cluster operator access keypair |
| hosts: "operator0" |
| gather_facts: False |
| tasks: |
| - name: Wait for system to become reachable |
| wait_for_connection: |
| - name: Generate an OpenSSH keypair with the default values (4096 bits, rsa) |
| community.crypto.openssh_keypair: |
| path: "~/.ssh/{{ keypair.name }}" |
| register: key |
| - name: Add operator0 public key to it's authorized keys |
| authorized_key: |
| key: "{{ key['public_key'] }}" |
| state: present |
| user: "{{ ansible_user }}" |
| - name: Create cluster instances |
| hosts: localhost |
| connection: local |
| gather_facts: False |
| roles: |
| - role: create_hosts |
| hosts: "{{ cluster.hosts }}" |
| operator_key: "{{ hostvars['operator0']['key']['public_key'] }}" |
| - name: Create cluster operator access information |
| hosts: "operator0" |
| roles: |
| - role: geerlingguy.ansible |
| become: yes |
| tasks: |
| - name: Add cluster hostnames to /etc/hosts file |
| lineinfile: |
| path: /etc/hosts |
| line: "{{ item.value + ' ' + item.key }}" |
| become: yes |
| loop: "{{ lookup('dict', hostvars['localhost']['hosts_dict']) }}" |
| - name: Create inventory for in-cluster deployment stage |
| template: |
| src: templates/inventory.ini.j2 |
| dest: "{{ operation.inventory }}" |
| vars: |
| hosts: "{{ lookup('dict', hostvars['localhost']['hosts_dict']) }}" |
| - name: Push in-cluster deployment stage description to the next Ansible control host |
| ansible.posix.synchronize: |
| src: ../../cluster-rke |
| dest: ~/deploy |
| - name: Add Ansible collection dependencies |
| command: "ansible-galaxy collection install ansible.posix" |