对于刚刚拿到拿到的新机器,惟一的可用信息有,IP地址,服务器登录用户名和密码。python
通常状况,root用户是不能直接登录,只能经过普通用户跳转。linux
特别是最近工做中遇到的腾讯云服务器,申请以后硬盘都尚未挂载上去,还须要手动挂载操做,这个是比较费事的。因此这里采用ansible中的playbook将以上的工做都一并完成bash
如下的playbook功能包括:服务器
分区新挂载硬盘,默认是一个分区所有使用ssh
格式化新挂载分区code
mount新分区orm
建立远程管理用户server
下发ssh公钥,为之后ansible远程管理作准备ip
- hosts: "{{ host }}" remote_user: "{{ loginUser }}" vars: work_path: /opt/object/server/ disk: /dev/sdb partition: /dev/sdb1 mountDir: /data vars_prompt: - name: "username" prompt: "Insert User Name:" default: "www" private: no - name: "passwd" prompt: "Insert Password for the user:" default: "123qwe" private: no tasks: - name: Yum Install yum: name="{{ item }}" state=latest with_items: - libselinux-python become: yes become_method: su - name: New Disk Partition script: ./../script/disk.sh "{{ disk }}" become: yes become_method: su - name: New Disk Format(ext4) filesystem: fstype=ext4 dev="{{ partition }}" opts="-cc" become: yes become_method: su - name: New Disk Mount mount: name="{{ mountDir }}" src="{{ partition }}" fstype=ext4 state=mounted become: yes become_method: su - name: Create Remote User user: name="{{ username }}" password="{{ passwd }}" become: yes become_method: su - name: Set up SSH Key authorized_key: user={{ username }} key="{{ lookup('file', '/home/eric/.ssh/id_rsa.pub') }}" become: yes become_method: su
#!/bin/bash DISK=$1 CHECK_EXIST=`/sbin/fdisk -l 2> /dev/null | grep -o "$DISK"` [ ! "$CHECK_EXIST" ] && { echo "Error: Disk is not found !"; exit 1;} echo "1" > /tmp/disk.log CHECK_DISK_EXIST=`/sbin/fdisk -l 2> /dev/null | grep -o "$DISK[1-9]"` [ ! "$CHECK_DISK_EXIST" ] || { echo "WARNING: ${CHECK_DISK_EXIST} is Partition already !"; exit 1;} echo "2" > /tmp/disk.log /sbin/fdisk /dev/sdb<<EOF d n p 1 1 t 83 w EOF
ansible-playbook server_init.yml -vvv -k --ask-become-pass -e "loginUser=eric" -e "host=192.168.1.101"