ansible work 案例

自动创建文件系统并挂在到固定分区

点击查看代码
- name: formatdata
  hosts: localhost
  roles:
  - format_data
  
--- tasks/main.yml
  - name: setup
    setup:
      filter:
        - ansible_devices
  - include: format.yml
    vars:
      disk: "{{ item.key }}"
    with_dict:  "{{ ansible_devices }}"
    when:
    - not item.value.partitions

--- format.yml
- name: Format /{{ disk }} and mount to dir data
  shell: |
    if [[ {{ disk }} =~ ^(/dev/nvme[1-9]n1|/dev/sd[a-z]|/dev/vd[a-z])$ ]]
    then
    echo '非合法磁盘列表 推出磁盘初始化进程' {{ disk }}
    exit 3
    fi
    for i in {0..20}
    do
    if [ $i -eq 0 ]
    then
      grep '/data ' /etc/fstab
    else
      grep "/data$i " /etc/fstab
    fi
    if [ $? -ne 0 ]
    then
      if [ $i -ge 1 ]
      then
      endpoint=/data$i
      else
      endpoint=/data
      fi
      break
    fi
    done

    partprobe -d -s /dev/{{ disk }}
    blkid | grep UUID| grep /{{ disk }}
    if [ $? -eq 0 ] ; then
      exit
    else
    if [ -e '/dev/{{ disk }}' ] && [ $(blkid | grep -c /dev/{{ disk }} ) -eq 0 ] ; then
      echo format
      parted -s /dev/{{ disk }} mklabel gpt
      parted /dev/{{ disk }} mkpart ext4 0% 100%
      parted -l /dev/{{ disk }}
      mkdir $endpoint
      #mkfs.ext4 -E lazy_itable_init=0,lazy_journal_init=0 /dev/{{ disk }}
      mkfs.ext4  -F /dev/{{ disk }}
      mount UUID=$(blkid /dev/{{ disk }} -sUUID -ovalue) $endpoint
      sed -i '/\$endpoint/d' /etc/fstab
      echo "UUID=$(blkid /dev/{{ disk }} -sUUID -ovalue) $endpoint                   ext4    defaults        0 0" >> /etc/fstab
      mount
    else
     echo 'No device /dev/{{ disk }} exist or Device had partitioned or $endpoint is mounted'
    fi
    fi
  args:
    executable: /bin/bash
  register: command_result

- debug: msg={{ command_result.stdout }}
  

screen 非交互执行命令

screen -dSm 10.88.49.185
screen -xS 10.88.49.185 -p0 -X stuff  'mtr 10.88.49.185'$'\n'

posted @ 2022-06-19 15:32  萱乐庆foreverlove  阅读(15)  评论(0编辑  收藏  举报