批量操作虚拟机初始化安装软件

Posted by 梁远鹏 on 2012-01-28 | 阅读 |,阅读约 1 分钟

TOC

本文简单记录一下批量操作虚拟机时的一个安装软件的初始化操作.

想象一下,当需要在上百台虚拟机上安装相同的软件时,如果手工一台虚拟机一台虚拟机的安装软件,那是一种怎样的绝望.

这里用 ansible 来批量操作多台虚拟机,手工的工作量只有两点:

  1. 写安装软件的脚本,或者说 ansible 的play book
  2. 定义有哪些虚拟机需要执行这些脚本行为.

install-package.yml:

---
- hosts: all
  remote_user: root
  tasks:
    - name: yum install epel-release
      yum: name="epel-release"

    - name: yum install package
      yum: name={{ item }}
      with_items:
      - net-tools
      - bind-utils
      - curl
      - telnet
      - iotop
      - sysstat
      - iftop
      - rsync
      - strace
      - tree
      - vim
      - lrzsz
      - unzip

    - name: disable Selinux
      shell: setenforce 0

    - name: change Selinux config
      lineinfile:
        dest: /etc/selinux/config
        regexp: '^SELINUX='
        line: 'SELINUX=disabled'

    - name: Firewalld disable
      service: name=firewalld state=stopped enabled=no

    ########Ulimit Init########
    - name: Ulimit change
      shell: ulimit -HSn 65535;ulimit -u 81920

    - name: Change limits.conf nofile
      lineinfile:
        dest: /etc/security/limits.conf
        regexp: '\* - nofile [0-9]+'
        #backrefs: no
        line: '* - nofile 65535'

    - name: Change limits.conf nproc
      lineinfile:
        dest: /etc/security/limits.conf
        regexp: '\* - nproc [0-9]+'
        #backrefs: no
        line: '* - nproc 81920'

    - name: change hostname
      shell: "hostnamectl set-hostname node$(ip addr |grep global |grep $(route  |grep default |awk '{print $NF}') |head -n1 |awk '{print $2}' |cut -d '/' -f1 |cut -d '.' -f4)"

微信公众号

扫描下面的二维码关注我们的微信公众号,第一时间查看最新内容。同时也可以关注我的Github,看看我都在了解什么技术,在页面底部可以找到我的Github。

wechat-qrcode