12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- ---
- - name: Create machineset_name
- set_fact:
- machineset_name: "{{ item.metadata.name ~ '-rhel'}}"
- - name: Update machineset definition
- set_fact:
- machineset: "{{ item | combine(dict_edit, recursive=True) }}"
- vars:
- dict_edit:
- metadata:
- name: "{{ machineset_name }}"
- resourceVersion: ""
- spec:
- selector:
- matchLabels:
- machine.openshift.io/cluster-api-machineset: "{{ machineset_name }}"
- template:
- metadata:
- labels:
- machine.openshift.io/cluster-api-machineset: "{{ machineset_name }}"
- spec:
- providerSpec:
- value:
- ami:
- id: "{{ openshift_aws_scaleup_ami }}"
- keyName: "{{ openshift_aws_scaleup_key }}"
- - name: Import machineset definition
- k8s:
- kubeconfig: "{{ kubeconfig_path }}"
- definition: "{{ machineset | to_yaml }}"
- - block:
- - name: Get machines in the machineset
- command: >
- oc get machine
- --kubeconfig={{ kubeconfig_path }}
- --namespace=openshift-machine-api
- --selector='machine.openshift.io/cluster-api-machineset={{ machineset_name }}'
- --output=json
- register: oc_get_machine
- changed_when: false
- - name: Create list of machines
- set_fact:
- worker_machines: "{{ (oc_get_machine.stdout | from_json)['items'] | map(attribute='metadata.name') | list }}"
- - name: Wait for machines to be provisioned
- command: >
- oc get machine {{ item }}
- --kubeconfig={{ kubeconfig_path }}
- --namespace=openshift-machine-api
- --output=json
- loop: "{{ worker_machines }}"
- register: new_machine
- until:
- - new_machine.stdout != ''
- - (new_machine.stdout | from_json).status is defined
- - (new_machine.stdout | from_json).status.phase == 'Provisioned'
- retries: 36
- delay: 5
- changed_when: false
- - name: Get machines in the machineset after provisioning
- command: >
- oc get machine
- --kubeconfig={{ kubeconfig_path }}
- --namespace=openshift-machine-api
- --selector='machine.openshift.io/cluster-api-machineset={{ machineset_name }}'
- --output=json
- register: oc_get_machine
- changed_when: false
- - name: Add hostname to new_workers_list
- set_fact:
- new_workers_list: "{{ new_workers_list + [ item.status.addresses | selectattr('type', 'match', '^InternalDNS$') | map(attribute='address') | first ] }}"
- loop: "{{ (oc_get_machine.stdout | from_json)['items'] }}"
- rescue:
- - name: Machine creation failed
- fail:
- msg: "Machine creation failed, error: {{ new_machine.resources[0].status.errorMessage }}"
- - name: Add machine to the inventory
- add_host:
- name: "{{ item }}"
- node_name: "{{ item }}"
- groups: new_workers
- ansible_ssh_common_args: "-o ProxyCommand=\"ssh -o IdentityFile='{{ openshift_aws_scaleup_key_path | default('/opt/app-root/src/.ssh/id_rsa') }}' -o ConnectTimeout=30 -o ConnectionAttempts=100 -o StrictHostKeyChecking=no -W %h:%p -q core@{{ ssh_bastion }}\""
- loop: "{{ new_workers_list }}"
|