| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440 |
- - set_fact: default_interface=false
- - set_fact: disable_resource_management=false
- - set_fact: use_hyper_image=false
- - name: Get default gateway for IPv6
- shell: "ip -6 route get 2001:4860:4860::8888 | head -n 1 | awk '{print $3}' 2>/dev/null || echo ''"
- register: default_gateway_ret
- when: ip_type is defined and ip_type == 'ipv6'
- - name: Get default gateway for IPv6 (dual-stack)
- shell: "ip -6 route get 2001:4860:4860::8888 | head -n 1 | awk '{print $3}' 2>/dev/null || echo ''"
- register: default_gateway_v6_ret
- when: ip_type is defined and ip_type == 'dual-stack'
- - name: Get default gateway for IPv4 (dual-stack)
- shell: "ip route get 1 | head -n 1 | awk '{print $3}'"
- register: default_gateway_v4_ret
- when: ip_type is defined and ip_type == 'dual-stack'
- - name: Get default ip by node ip by command for IPv6
- shell: "ip -6 route get 2001:4860:4860::8888 | head -n 1 | awk '{print $7}' 2>/dev/null || echo ''"
- register: default_ip_ret
- when: ip_type is defined and ip_type == 'ipv6'
- - name: Get default gateway for IPv4
- shell: "ip route get 1 | head -n 1 | awk '{print $3}'"
- register: default_gateway_ret
- when: ip_type is not defined or ip_type != 'ipv6'
- - name: Get default ip by node ip by command for IPv4
- shell: "ip route get 1 | head -n 1 | awk '{print $7}'"
- register: default_ip_ret
- when: ip_type is not defined or ip_type != 'ipv6'
- - name: Parse default ip by node
- set_fact:
- default_ip: "{{ default_ip_ret.stdout if default_ip_ret is defined and default_ip_ret.stdout is defined else node_ip }}"
- - name: Default interface for IPv6
- set_fact:
- default_interface: true
- when:
- - ip_type is defined and ip_type == 'ipv6'
- - node_ip is defined
- - node_ip == default_ip
- - node_ip | regex_search(':')
- - name: Default interface for IPv4
- set_fact:
- default_interface: true
- when:
- - ip_type is not defined or ip_type != 'ipv6'
- - node_ip is defined
- - node_ip == default_ip
- - node_ip is match('^(?:[0-9]{1,3}\.){3}[0-9]{1,3}$')
- - name: Set default Gateway
- set_fact:
- default_gateway: "{{ default_gateway_ret.stdout if default_interface and default_gateway_ret is defined and default_gateway_ret.stdout is defined else '' }}"
- default_ip: "{{ default_ip if default_interface else node_ip }}"
- - name: "Get default IPv6 address {{ default_ip }} prefix length"
- shell: |
- prefix_len="$(ip -6 route list | grep -w {{ default_ip }} | grep -E '/[0-9]+' | head -n 1 | awk '{print $1}' | cut -d '/' -f 2)"
- if [[ "$prefix_len" =~ ^[0-9]+$ ]]; then
- echo "$prefix_len"
- exit 0
- fi
- # Default to /64 for IPv6 if not found
- echo 64
- register: default_masklen_ret
- args:
- executable: /bin/bash
- when: ip_type is defined and ip_type == 'ipv6'
- - name: "Get default ip address {{ default_ip }} masklen"
- shell: |
- masklen="$(ip route list | grep -w {{ default_ip }} | grep -E '/[0-9]+' | head -n 1 | awk '{print $1}' | cut -d '/' -f 2)"
- if [[ "$masklen" =~ ^[0-9]+$ ]]; then
- echo "$masklen"
- exit 0
- fi
- c=$(echo {{ default_ip }} |awk -F. '{print $1}')
- # 8 for class A
- # 16 for class B
- # 24 for class C
- if [[ "$c" -le 127 ]]; then
- echo 8
- exit 0
- elif [[ "$c" -ge 128 ]] && [[ "$c" -le 191 ]]; then
- echo 16
- exit 0
- elif [[ "$c" -ge 192 ]] && [[ "$c" -le 223 ]]; then
- echo 24
- exit 0
- fi
- register: default_masklen_ret
- args:
- executable: /bin/bash
- when: ip_type is not defined or ip_type != 'ipv6'
- - name: Set default ip masklen
- set_fact:
- default_masklen: "{{ default_masklen_ret.stdout if default_masklen_ret is defined and default_masklen_ret.stdout is defined else '64' }}"
- - name: Set dual-stack gateways
- set_fact:
- default_gateway_v6: "{{ default_gateway_v6_ret.stdout if default_gateway_v6_ret is defined and default_gateway_v6_ret.stdout is defined else '' }}"
- default_gateway_v4: "{{ default_gateway_v4_ret.stdout if default_gateway_v4_ret is defined and default_gateway_v4_ret.stdout is defined else '' }}"
- when: ip_type is defined and ip_type == 'dual-stack'
- - name: include k8s cloud if needed
- include_tasks: "k8s_cloud.yml"
- when:
- - k8s_or_k3s == 'k8s'
- - block:
- - name: test if version file contains cloudpods-ee image
- shell: |
- cat "{{ offline_data_path }}/versions.json" |jq '.dockers |to_entries[]' |grep -wq cloudpods-ee
- register: has_cloudpack_image
- failed_when: false
- args:
- executable: /bin/bash
- - name: construct create cluster use hyper image
- set_fact:
- use_hyper_image: true
- edition: ee
- when:
- - has_cloudpack_image.rc == 0
- when:
- - online_status | default("") == "offline"
- - offline_data_path | length > 0
- - use_ee|default(false)|bool == true
- - name: construct create cluster args disable-resource-management
- set_fact:
- disable_resource_management: true
- when:
- - is_kylin_based is defined
- - is_kylin_based |default(false)|bool == true
- - name: Copy onecloud kubernetes manifests
- ansible.builtin.template:
- src: "onecloud-manifests.yaml.j2"
- dest: "/tmp/onecloud-manifests.yaml"
- - name: include cluster task if needed
- include_tasks: "k8s_create_cluster.yml"
- when:
- - k8s_or_k3s == 'k8s'
- - name: misc
- debug:
- msg: '{{ K3S_CMDLINE_PREFIX }} kubectl apply -f /tmp/onecloud-manifests.yaml'
- - name: Create onecloud cluster CRD
- shell: |
- KUBECONFIG={{ENV_KUBECONFIG}} {{ K3S_CMDLINE_PREFIX }} kubectl apply -f /tmp/onecloud-manifests.yaml
- register: result
- until: result.rc == 0
- retries: 6
- delay: 10
- when:
- - k8s_or_k3s == 'k3s'
- - name: Copy fetch-rcadmin.sh to /opt/yunion/bin/
- template:
- src: "fetch-rcadmin.sh.j2"
- dest: "/opt/yunion/bin/fetch-rcadmin.sh"
- mode: '0755'
- - name: Init waiter script
- include_role:
- name: utils/onecloud-waiter
- - name: "Execute `/opt/yunion/bin/wait-onecloud-services.sh` to wait essential services to be running. You can open another terminal and execute `kubectl get pods -n onecloud -w` to watch the process."
- shell: "bash /opt/yunion/bin/wait-onecloud-services.sh"
- - name: Use customized DNS entries
- shell: |
- {{ K3S_CMDLINE_PREFIX }} kubectl -n onecloud patch onecloudcluster default --type='json' -p '[{"op": "replace", "path": "/spec/regionDNS/proxies/0/to", "value": {{ user_dns | to_json }} }]'
- {{ K3S_CMDLINE_PREFIX }} kubectl -n onecloud delete configmap default-region-dns || :
- {{ K3S_CMDLINE_PREFIX }} kubectl -n onecloud rollout restart ds default-region-dns || :
- become: yes
- when: user_dns is defined and user_dns|length > 0
- - name: Source climc bash completion in master's ~/.bashrc
- lineinfile:
- dest: ~/.bashrc
- line: "source <(/opt/yunion/bin/climc --completion bash)"
- state: present
- create: yes
- regexp: '.*climc --completion bash.*'
- when:
- - shell is undefined or shell == 'bash'
- - name: "Write cluster rcadmin in master's ~/.onecloud_rcadmin for root"
- shell: |
- /opt/yunion/bin/fetch-rcadmin.sh > ~/.onecloud_rcadmin
- /opt/yunion/bin/fetch-rcadmin.sh cluster rcadmin > /tmp/.onecloud_rcadmin
- become: yes
- retries: 6
- delay: 15
- register: onecloud_rcadmin
- until: onecloud_rcadmin.rc == 0
- - name: Print message if ansible version is greater than 2.7.0
- shell: |
- if [ "$EUID" -eq 0 ]; then
- rm -f /tmp/.onecloud_rcadmin
- else
- conf=~/.onecloud_rcadmin
- sudo mv /tmp/.onecloud_rcadmin $conf
- sudo chown {{ansible_user_id}}:{{ansible_user_id}} $conf
- fi
- args:
- executable: /bin/bash
- - name: "Source ~/.onecloud_rcadmin in ~/.bashrc for root"
- lineinfile:
- dest: ~/.bashrc
- line: "source ~/.onecloud_rcadmin"
- state: present
- create: yes
- regexp: '^source ~/.onecloud_rcadmin'
- become: yes
- when:
- - shell is undefined or shell == 'bash'
- - name: "Source ~/.onecloud_rcadmin in ~/.bashrc for current user"
- lineinfile:
- dest: ~/.bashrc
- line: "source ~/.onecloud_rcadmin"
- state: present
- create: yes
- regexp: '^source ~/.onecloud_rcadmin'
- when:
- - shell is undefined or shell == 'bash'
- - ansible_user_id != 'root'
- - name: "Check onecloud user {{ onecloud_user }} exists"
- shell: |
- source ~/.onecloud_rcadmin
- /opt/yunion/bin/climc user-list | grep -w {{ onecloud_user }} | wc -l
- register: OC_USER_COUNT
- become: yes
- ignore_errors: yes
- retries: 3
- delay: 10
- - name: "Create onecloud web login user {{ onecloud_user }}"
- shell: |
- source ~/.onecloud_rcadmin
- /opt/yunion/bin/climc user-create --password {{ onecloud_user_password }} --enabled {{ onecloud_user }}
- become: yes
- retries: 10
- delay: 30
- register: create_user_ret
- args:
- executable: /bin/bash
- when:
- - OC_USER_COUNT.stdout|int == 0
- - use_ee is not defined or not use_ee
- - name: "Update onecloud user {{ onecloud_user }} password to {{ onecloud_user_password }}"
- shell: |
- source ~/.onecloud_rcadmin
- /opt/yunion/bin/climc user-update --password {{ onecloud_user_password }} --enabled --allow-web-console {{ onecloud_user }}
- retries: 10
- register: update_user_ret
- become: yes
- delay: 30
- args:
- executable: /bin/bash
- when:
- - use_ee is not defined or not use_ee
- - name: "Make onecloud user {{ onecloud_user }} as system admin"
- shell: |
- source ~/.onecloud_rcadmin
- /opt/yunion/bin/climc project-add-user system {{ onecloud_user }} admin
- become: yes
- args:
- executable: /bin/bash
- when:
- - use_ee is not defined or not use_ee
- - name: Check if admin network adm0 exists
- shell: |
- source ~/.onecloud_rcadmin
- /opt/yunion/bin/climc network-show adm0 > /dev/null 2>&1
- become: yes
- register: network_admin_exist
- ignore_errors: yes
- changed_when: false
- failed_when: false
- args:
- executable: /bin/bash
- - name: "Check if network contains {{ default_ip }}"
- shell: |
- source ~/.onecloud_rcadmin
- env |grep OS_AUTH
- /opt/yunion/bin/climc network-list --ip {{ default_ip }} | grep -v Total | wc -l
- become: yes
- register: network_count_ret
- ignore_errors: yes
- args:
- executable: /bin/bash
- - name: set admin network count
- set_fact:
- admin_network_count: "{{ network_count_ret.stdout }}"
- - name: Set adm0 command for IPv4
- set_fact:
- adm0_cmd: "/opt/yunion/bin/climc network-create --server-type baremetal bcast0 adm0 {{ default_ip }} {{ default_ip }} {{ default_masklen }} "
- when:
- - ip_type is not defined or ip_type != 'ipv6'
- - name: Update adm0 command for IPv4 with gateway
- set_fact:
- adm0_cmd: "{{ adm0_cmd }} --gateway {{ default_gateway }} "
- when:
- - ip_type is not defined or ip_type != 'ipv6'
- - default_gateway | length > 0
- - name: Set adm0 command for IPv6
- set_fact:
- adm0_cmd: "/opt/yunion/bin/climc network-create3 --server-type baremetal bcast0 adm0 --start-ip6 {{ default_ip }} --end-ip6 {{ default_ip }} --net-mask6 {{ default_masklen }} "
- when:
- - ip_type is defined and ip_type == 'ipv6'
- - name: Update adm0 command for IPv6 with gateway
- set_fact:
- adm0_cmd: "{{ adm0_cmd }} --gateway6 {{ default_gateway }} "
- when:
- - ip_type is defined and ip_type == 'ipv6'
- - default_gateway | length > 0
- - name: Set adm0 command for dual-stack (IPv4 primary)
- set_fact:
- adm0_cmd: "/opt/yunion/bin/climc network-create3 --server-type baremetal bcast0 adm0 --start-ip {{ default_ip }} --end-ip {{ default_ip }} --net-mask {{ default_masklen }} --start-ip6 {{ node_ip_v6 }} --end-ip6 {{ node_ip_v6 }} --net-mask6 64 "
- when:
- - ip_type is defined and ip_type == 'dual-stack'
- - node_ip is defined and node_ip == node_ip_v4
- - name: Update adm0 command for dual-stack (IPv4 primary) with gateway
- set_fact:
- adm0_cmd: "{{ adm0_cmd }} --gateway {{ default_gateway }} --gateway6 {{ default_gateway_v6 | default('') }} "
- when:
- - ip_type is defined and ip_type == 'dual-stack'
- - node_ip is defined and node_ip == node_ip_v4
- - default_gateway | length > 0
- - name: Set adm0 command for dual-stack (IPv6 primary)
- set_fact:
- adm0_cmd: "/opt/yunion/bin/climc network-create3 --server-type baremetal bcast0 adm0 --start-ip6 {{ default_ip }} --end-ip6 {{ default_ip }} --net-mask6 {{ default_masklen }} --start-ip {{ node_ip_v4 }} --end-ip {{ node_ip_v4 }} --net-mask 24 "
- when:
- - ip_type is defined and ip_type == 'dual-stack'
- - node_ip is defined and node_ip == node_ip_v6
- - name: Update adm0 command for dual-stack (IPv6 primary) with gateway
- set_fact:
- adm0_cmd: "{{ adm0_cmd }} --gateway6 {{ default_gateway }} --gateway {{ default_gateway_v4 | default('') }} "
- when:
- - ip_type is defined and ip_type == 'dual-stack'
- - node_ip is defined and node_ip == node_ip_v6
- - default_gateway | length > 0
- - debug: var=adm0_cmd
- # as of zentao/task-view-4914.html
- - block:
- - name: "Register adm0 network for {{ default_ip }}/{{ default_masklen }}, gateway {{ default_gateway }}"
- shell: |
- source ~/.onecloud_rcadmin
- {{ adm0_cmd }}
- when: network_admin_exist.rc != 0 and admin_network_count|int == 0
- become: yes
- args:
- executable: /bin/bash
- register: run_create_adm0
- until: run_create_adm0.rc == 0
- retries: 3
- delay: 15
- failed_when: false
- - name: Make network adm0 private
- shell: |
- source ~/.onecloud_rcadmin
- /opt/yunion/bin/climc network-private adm0
- become: yes
- args:
- executable: /bin/bash
- retries: 3
- delay: 15
- failed_when: false
- when:
- - product_version | default("") in ['FullStack', 'Edge', 'LightEdge', 'AI']
- - name: add default host-local network
- shell: |
- source ~/.onecloud_rcadmin
- if [ $(/opt/yunion/bin/climc network-list --scope system | grep -w vhl0 | wc -l) -eq 0 ]; then
- /opt/yunion/bin/climc network-create3 --server-type hostlocal __host_local__ vh0 --start-ip 10.255.192.2 --end-ip 10.255.255.254 --net-mask 18 --gateway 10.255.192.1 --desc 'Default hostlocal virtual network'
- fi
- become: yes
- args:
- executable: /bin/bash
- when:
- - product_version | default("") in ['FullStack', 'Edge', 'LightEdge', 'AI']
- - onecloud_version is version('v4.0', '>=')
- - name: rm sync-user option
- include_role:
- name: utils/sync-user/off
- - name: "post install scripts"
- shell: |
- if [ ! -d /opt/yunion/upgrade/post-install ]; then
- exit
- fi
- find /opt/yunion/upgrade/post-install -name '*.sh' -type f| while read line
- do
- echo "processing $line ... "
- sh -c "$line" 2>&1 | tee -a /tmp/post-install.log
- echo "[DONE ]processing $line OK"
- done
- become: yes
- args:
- executable: /bin/bash
- - name: Include utils/k8s/addons tasks
- include_role:
- name: utils/k8s/addons
|