前言
对于刚刚拿到拿到的新机器,唯一的可用信息有,IP地址,服务器登陆用户名和密码。
一般情况,root用户是不能直接登陆,只能通过普通用户跳转。
特别是最近工作中遇到的腾讯云服务器,申请之后硬盘都还没有挂载上去,还需要手动挂载操作,这个是比较费事的。所以这里采用ansible中的playbook将以上的工作都一并完成
playbook
以下的playbook功能包括:
-
分区新挂载硬盘,默认是一个分区全部使用
-
格式化新挂载分区
-
mount新分区
-
创建远程管理用户
-
下发ssh公钥,为以后ansible远程管理做准备
- 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
自动化分区脚本(disk.sh)
#!/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"