# 离线安装基础系统包
- name: 准备离线安装包目录
  file: name=/opt/kube/packages state=directory
- name: 禁止终端打印信息
  shell: dmesg -n 1
- name: 禁止内核升级
  shell: apt-mark hold linux-image-$(uname -r)
  when: ansible_distribution == "Ubuntu"
  ignore_errors: true
- name: 更新apt
  shell: "apt --fix-broken install -y"
  when: ansible_distribution == "Ubuntu"
  ignore_errors: true
- name: 删除ufw
  shell: "systemctl stop ufw && systemctl disable ufw"
  when: ansible_distribution == "Ubuntu"
  ignore_errors: true
- name: 安装ubuntu依赖
  apt:
    name:
      - pciutils
      - xfsprogs
      - build-essential
    state: present
  when: ansible_os_family == "Debian"
- name: Rocky系统安装
  yum:
    name:
      - pciutils
      - xfsprogs
    state: present
  when: ansible_distribution == "Rocky"

#centos安装依赖
- block:
  - name: 分发 pciutils 离线包
    copy:
      src: "{{ base_dir }}/down/centos-rpm-packages/pciutils-rpm-packages.tar.gz"
      dest: "/opt/kube/packages/pciutils-rpm-packages.tar.gz"
  - name: 安装 pciutils 离线包
    shell: 'cd /opt/kube/packages && tar zxf pciutils-rpm-packages.tar.gz && \
           cd pciutils-rpm-packages && rpm -Uvh --force --nodeps *.rpm > /tmp/install_pciutils.log 2>&1'

  - name: 分发 xfsprogs 离线包
    copy:
      src: "{{ base_dir }}/down/centos-rpm-packages/xfsprogs-rpm-packages.tar.gz"
      dest: "/opt/kube/packages/xfsprogs-rpm-packages.tar.gz"
  - name: 安装 xfsprogs 离线包
    shell: 'cd /opt/kube/packages && tar zxf xfsprogs-rpm-packages.tar.gz && \
           cd xfsprogs-rpm-packages && rpm -Uvh --force --nodeps *.rpm > /tmp/install_xfsprogs.log 2>&1'

  - name: 分发 gcc 离线包
    copy:
      src: "{{ base_dir }}/down/centos-rpm-packages/gcc-rpm-packages.tar.gz"
      dest: "/opt/kube/packages/gcc-rpm-packages.tar.gz"
  - name: 安装 gcc 离线包
    shell: 'cd /opt/kube/packages && tar zxf gcc-rpm-packages.tar.gz && \
           cd gcc-rpm-packages && rpm -Uvh --force --nodeps *.rpm > /tmp/install_gcc.log 2>&1'
  when:
  - 'ansible_distribution == "CentOS"'
  - 'ansible_distribution_major_version == "7"'

- name: copy 检测脚本到对应的机器上
  copy: src=environmentcheck.sh dest=/mnt mode=0755
- block:
    - name: master执行检测脚本
      shell: ./environmentcheck.sh multi master
      register: check_master
      args:
        chdir: /mnt
      when: "inventory_hostname in groups['masters']"
    - debug:
        var: check_master.stdout_lines
      when: "inventory_hostname in groups['masters']"
    - name: node执行检测脚本
      shell: ./environmentcheck.sh multi node
      register: check_node
      args:
        chdir: /mnt
      when: "inventory_hostname in groups['nodes']"
    - debug:
        var: check_node.stdout_lines
      when: "inventory_hostname in groups['nodes']"
    - name: storage执行检测脚本
      shell: >
        ./environmentcheck.sh multi storage 
        {% if hostvars[inventory_hostname].RAW_DISK is defined -%}
        {{ hostvars[inventory_hostname].RAW_DISK }}
        {% elif hostvars[inventory_hostname].LOCAL_STORAGE_PATH is defined -%}
        {{ hostvars[inventory_hostname].LOCAL_STORAGE_PATH }}
        {% endif %}
      register: check_storage
      args:
        chdir: /mnt
      when: "inventory_hostname in groups['storages']"      
    - debug:
        var: check_storage.stdout_lines
      when: "inventory_hostname in groups['storages']"
  when: "groups['nodes']|length > 1"
- block:
    - name: allinone执行检测脚本
      shell: >
        ./environmentcheck.sh allinone -- 
        {% if hostvars[inventory_hostname].RAW_DISK is defined -%}
        {{ hostvars[inventory_hostname].RAW_DISK }}
        {% elif hostvars[inventory_hostname].LOCAL_STORAGE_PATH is defined -%}
        {{ hostvars[inventory_hostname].LOCAL_STORAGE_PATH }}
        {% endif %}
      register: check_allinone
      args:
        chdir: /mnt
    - debug:
        var: check_allinone.stdout_lines
  when: "groups['nodes']|length == 1"
