Ansible之playbook自动完成硬盘分区,格式化,挂盘,并远程创建用户
Ansible之playbook自动完成硬盘分区,格式化,挂盘,并远程创建用户
HelloEric 发表于2年前
Ansible之playbook自动完成硬盘分区,格式化,挂盘,并远程创建用户
  • 发表于 2年前
  • 阅读 1232
  • 收藏 4
  • 点赞 1
  • 评论 0

腾讯云 技术升级10大核心产品年终让利>>>   

摘要: 对于刚刚拿到拿到的新机器,唯一的可用信息有,IP地址,服务器登陆用户名和密码。 一般情况,root用户是不能直接登陆,只能通过普通用户跳转。 特别是最近工作中遇到的腾讯云服务器,申请之后硬盘都还没有挂载上去,还需要手动挂载操作,这个是比较费事的。所以这里采用ansible中的playbook将以上的工作都一并完成

前言

对于刚刚拿到拿到的新机器,唯一的可用信息有,IP地址,服务器登陆用户名和密码。

一般情况,root用户是不能直接登陆,只能通过普通用户跳转。

特别是最近工作中遇到的腾讯云服务器,申请之后硬盘都还没有挂载上去,还需要手动挂载操作,这个是比较费事的。所以这里采用ansible中的playbook将以上的工作都一并完成

playbook

以下的playbook功能包括:

  1. 分区新挂载硬盘,默认是一个分区全部使用

  2. 格式化新挂载分区

  3. mount新分区

  4. 创建远程管理用户

  5. 下发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"
标签: ansible
共有 人打赏支持
HelloEric
粉丝 9
博文 80
码字总数 75627
×
HelloEric
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: