build_node_image.yml 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. ---
  2. - hosts: localhost
  3. gather_facts: no
  4. tasks:
  5. - name: calculate input image
  6. command: az image list -g "{{ openshift_azure_input_image_ns }}" --query "[?starts_with(name, '{{ openshift_azure_input_image_prefix }}-') && tags.valid=='true'] | sort_by(@, &name) | [-1]"
  7. register: input_image
  8. - name: provision resource group
  9. import_tasks: tasks/provision_instance.yml
  10. vars:
  11. create_args: --data-disk-sizes-gb 128
  12. - hosts: nodes
  13. tasks:
  14. - set_fact:
  15. openshift_deployment_type: "{{ 'openshift-enterprise' if ansible_distribution == 'RedHat' else 'origin' }}"
  16. openshift_enable_origin_repo: False
  17. skip_node_svc_handlers: True
  18. openshift_additional_repos: "{{ azure_node_repos[ansible_distribution] }}"
  19. openshift_node_include_control_plane: True
  20. openshift_control_plane_static_pod_location: /etc/origin/node/disabled/
  21. openshift_node_group_cloud_provider: azure
  22. openshift_node_image_prep_packages:
  23. - strace
  24. - tcpdump
  25. - skopeo
  26. - crio
  27. etcd_ip: ETCD_IP_REPLACE
  28. etcd_hostname: ETCD_HOSTNAME_REPLACE
  29. etcdctlv2: ETCD_CTL2_REPLACE
  30. openshift_use_crio: True
  31. - name: add insights-client to package installs when on rhel
  32. set_fact:
  33. openshift_node_image_prep_packages: "{{ openshift_node_image_prep_packages | union(['insights-client']) }}"
  34. when: openshift_deployment_type == 'openshift-enterprise'
  35. - set_fact:
  36. openshift_additional_repos: "{{ openshift_additional_repos + [{'name': 'install_repo', 'baseurl': openshift_azure_install_repo, 'enabled': true, 'gpgcheck': false}] }}"
  37. when: openshift_azure_install_repo is defined and openshift_azure_install_repo
  38. - name: install centos-release-paas-common rpm
  39. yum:
  40. name: centos-release-paas-common
  41. state: present
  42. when: ansible_distribution == "CentOS"
  43. - name: configure yum repositories
  44. import_tasks: tasks/yum_certs.yml
  45. - name: update rpms
  46. include_role:
  47. name: os_update_latest
  48. vars:
  49. os_update_latest_reboot: True
  50. - name: install openshift
  51. import_playbook: ../../openshift-node/private/image_prep.yml
  52. vars:
  53. etcd_image: "{{ etcd_image_dict[openshift_deployment_type] }}"
  54. - hosts: nodes
  55. tasks:
  56. - name: deconfigure yum repositories
  57. import_tasks: tasks/remove_yum.yml
  58. - name: add get-node-logs script
  59. copy:
  60. src: files/get-node-logs
  61. dest: /usr/local/bin/get-node-logs
  62. owner: root
  63. group: root
  64. mode: 0755
  65. - name: record installed rpms
  66. yum:
  67. list: installed
  68. register: yum
  69. - name: disable waagent data disk management
  70. lineinfile:
  71. path: /etc/waagent.conf
  72. regexp: "{{ item.regexp }}"
  73. line: "{{ item.line }}"
  74. with_items:
  75. - { regexp: '^ResourceDisk\.Format=', line: 'ResourceDisk.Format=n' }
  76. - name: persist oreg_url
  77. copy:
  78. dest: "/etc/origin/oreg_url"
  79. content: "{{ oreg_url }}"
  80. when:
  81. - oreg_url is defined
  82. - oreg_url != ""
  83. - name: create a file with image name
  84. copy:
  85. content: |
  86. ---
  87. image_name: {{ openshift_azure_output_image_name }}
  88. base_image: {{ (hostvars['localhost'].input_image.stdout | from_json).name }}
  89. subscription: {{ lookup('env', 'AZURE_SUBSCRIPTION_ID') }}
  90. resource_group: {{ openshift_azure_output_image_ns }}
  91. dest: /etc/origin/image.yml
  92. owner: root
  93. group: root
  94. mode: '0440'
  95. - name: run waagent deprovision
  96. shell: sleep 2 && waagent -deprovision+user -force
  97. async: 1
  98. poll: 0
  99. - hosts: localhost
  100. gather_facts: no
  101. tasks:
  102. - set_fact:
  103. openshift_rpm: "{{ hostvars[groups['nodes'][0]]['yum'].results | selectattr('name', 'match', '^(origin-hyperkube|atomic-openshift-hyperkube)$') | first }}"
  104. - name: create image
  105. import_tasks: tasks/create_image_from_vm.yml
  106. vars:
  107. image_resource_group: "{{ openshift_azure_output_image_ns }}"
  108. image_name: "{{ openshift_azure_output_image_name }}"
  109. image_tags:
  110. base_image: "{{ (input_image.stdout | from_json).name }}"
  111. kernel: "{{ hostvars[groups['nodes'][0]]['ansible_kernel'] }}"
  112. openshift: "{{ openshift_rpm.version }}-{{ openshift_rpm.release }}.{{ openshift_rpm.arch }}"
  113. - name: create blob
  114. import_tasks: tasks/create_blob_from_vm.yml
  115. vars:
  116. image_name: "{{ openshift_azure_output_image_name }}"
  117. when: openshift_azure_storage_account is defined and openshift_azure_storage_account