123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112 |
- ---
- - 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
- command: >
- oc apply -f -
- --kubeconfig={{ kubeconfig_path }}
- register: oc_apply
- args:
- stdin: "{{ machineset | to_yaml }}"
- changed_when:
- - ('created' in oc_apply.stdout) or
- ('configured' in oc_apply.stdout)
- - 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: Get ssh bastion address
- command: >
- oc get service ssh-bastion
- --kubeconfig={{ kubeconfig_path }}
- --namespace=test-ssh-bastion
- --output=jsonpath='{.status.loadBalancer.ingress[0].hostname}'
- register: oc_get
- until:
- - oc_get.stdout != ''
- changed_when: false
- - name: Set fact ssh_bastion
- set_fact:
- ssh_bastion: "{{ oc_get.stdout }}"
- - 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 }}"
|