migrate.yml 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. ---
  2. # Should this be run in a serial manner?
  3. - set_fact:
  4. l_etcd_service: "{{ 'etcd_container' if openshift.common.is_containerized else 'etcd' }}"
  5. - name: Disable etcd members
  6. service:
  7. name: "{{ l_etcd_service }}"
  8. state: stopped
  9. # Should we skip all TTL keys? https://bugzilla.redhat.com/show_bug.cgi?id=1389773
  10. - name: Migrate etcd data
  11. command: >
  12. etcdctl migrate --data-dir={{ etcd_data_dir }}
  13. environment:
  14. ETCDCTL_API: 3
  15. register: l_etcdctl_migrate
  16. # TODO(jchaloup): If any of the members fails, we need to restore all members to v2 from the pre-migrate backup
  17. - name: Check the etcd v2 data are correctly migrated
  18. fail:
  19. msg: "Failed to migrate a member"
  20. when: "'finished transforming keys' not in l_etcdctl_migrate.stdout"
  21. # TODO(jchaloup): start the etcd on a different port so noone can access it
  22. # Once the validation is done
  23. - name: Enable etcd member
  24. service:
  25. name: "{{ l_etcd_service }}"
  26. state: started
  27. - name: Re-introduce leases (as a replacement for key TTLs)
  28. command: >
  29. oadm migrate etcd-ttl \
  30. --cert {{ etcd_peer_cert_file }} \
  31. --key {{ etcd_peer_key_file }} \
  32. --cacert {{ etcd_peer_ca_file }} \
  33. --etcd-address 'https://{{ etcd_peer }}:2379' \
  34. --ttl-keys-prefix {{ item }} \
  35. --lease-duration 1h
  36. environment:
  37. ETCDCTL_API: 3
  38. with_items:
  39. - "/kubernetes.io/events"
  40. - "/kubernetes.io/masterleases"
  41. - set_fact:
  42. r_etcd_migrate_success: true
  43. - name: Enable etcd member
  44. service:
  45. name: "{{ l_etcd_service }}"
  46. state: started