Ansible批量快速初始化Bluemix 虚拟机

用Ansible也有两年多时间了,之前做初始化工作都是在kickstart的配置文件里加上自己的shell脚本来初始化系统环境,现在的运维环境不同,前期的系统安装工作交由IDC部门处理,我这边能做的就是用脚本自己初始化自己喜欢的运维环境。没用Ansible之前用shell也可以实现他的某些功能,比如用Ad-Hoc的场景下,基于生产环境的内网SSH Key 互信的环境,写个for循环也可以实现简单的功能,但是Ansible绝不止这点作用,使用好他的Playbook,可以让你成为一个出色的运维工程师的同时,拿到奥斯卡最佳系统运维导演奖(如果有的话)。


昨天又在Bluemix的UK Region申请了两台新机器,有个不算问题的问题就是,这次申请不能自己更改内存和硬盘大小,最小配置4G内存20G硬盘,对我这个来免费试用虚拟机的人来说有点浪费资源了。


下面这个Playbook是我做的初始化这两台机器运维环境的,是一个all-in-one的文件,并没有将vars, tasks, templates, handlers这些分开写。 (老规矩,在我的github上可以下载。)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
$ cat provision.yml 
---
- hosts: new
   remote_user: ibmcloud
   sudo: yes
   gather_facts: true
   vars:
     user: ibmcloud
   tasks:
   - name: install provisioning tools, git and zsh dstat via yum
     yum: name={{ item }} state=installed
     when: ansible_os_family == "RedHat"
     with_items:
      - git
      - zsh
      - dstat
      - htop
      - screen
   - name: install provisioning tools, git and zsh dstat via apt-get
     apt: name={{ item }} state=installed
     when: ansible_os_family == "Debian"
     with_items:
      - git
      - zsh
      - dstat
      - htop
      - screen
   - name: install zsh as default shell
     script: /etc/ansible/setuptools/init_zsh.sh
   - name: copy default screen file
     copy: src=/etc/ansible/setuptools/screenrc dest=/etc/screenrc mode=0644 owner=root group=root
   - name: copy ssh provate key
     copy: src=/etc/ansible/setuptools/myprivate.pem dest=/home/{{user}}/.ssh/ mode=0600 owner={{user}} group={{user}}

hosts: new, new是在/etc/ansible/hosts里定义的组,这里你可以随便定义,格式是这样的中括号里面就是组名,然后下面的是机器名称:

[new]

ukcent1

ukcent2


remote_user: ibmcloud, 是指远程执行Playbook的用户名,因为bluemix的机器用户都是ibmcloud。

sudo: yes, 是运行ibmcloud用sudo的形式执行一些需要用到超级用户权限的命令。

gather_facts: true, 是让Ansible收取系统环境变量信息,为下面的判断系统是Redhead or Debian做铺垫。

vars: 

    user: ibmcloud, 是user这个变量值是shanker,在下面的copy ssh key到home目录的时候需要用到,其实这里可以不用,因为我已经知道了我的远程机器用户都是ibmcloud,这里只是给大家演示,这个vars的用法。


tasks一下就是将要执行的一系列命令:


上半部分的安装系统软件这块用到了Ansible的Loop 和 Conditionals 语法

{

具体可以参考官方文档:

http://docs.ansible.com/ansible/playbooks_loops.html

http://docs.ansible.com/ansible/playbooks_conditionals.html

}

判断如果该系统的family是Redhat系列的就用yum模块来安装软件,如果是Debian系列的就用apt-get来安装,并且with_items可以实现需要安装那些软件,可以自己扩容。


然后下面的scrip模块,告诉Ansible在远程机器上执行我的初始化zsh脚本,已经习惯了zsh的强大,这个一定要加上。


后面的copy模块实现了,自己常用的配置文件的复制,比如可以自己加上vimrc, screen, tmux,bashrc等等。


最后就是copy我的私钥到新机器的家目录下,用到了上面vars设置的变量user。


完成之后每次有新机器给你维护,只需要添加机器到hosts里面,然后运行改Playbook即可,省时省力。

更多相关推荐

一键初始化zabbix

centosubuntu执行python脚本执行命令python3/root/ops/play/addZabbixHost.py${host}name−−env...

继续阅读

Ansible批量快速初始化新机器运...

用Ansible也有两年多时间了,之前做初始化工作都是在kickstart的配置文件里加上自己的shell脚...

继续阅读

Ansible:roles初始化系统

简介本文介绍ansible的roles,通过roles来实现系统的初始化,其相当于将ansible的playbook拆分...

继续阅读

ansible实现服务器批量初始化

通过ansible的playbook实现服务器批量初始化工作,会节省大量时间,提高工作效率ansible模块目...

继续阅读

ansible的安装与初始化

ansible的安装与初始化关于什么是ansible以及优缺点什么的就不说了。主要用于批量管理服务器,...

继续阅读

Ansible 系列之分享(批量初始化...

我这里先将想要的功能拆分开,通过单个剧本(playbook)来实现一个功能,然后将这些单个剧本(pla...

继续阅读

用 ansible 批量初始化 docker...

一、定义docker服务器组测试是否连通$ansible-idocker.cfgall-mping-o二、卸载旧的版本三、安...

继续阅读

Flask13 面试要能吹 、安装虚拟...

 1web开发工作的三个能力  1.1开发思想    易维护:开发成本远低于维护成本    可扩...

继续阅读

ansible playbook初始化系统基础...

包含系统参数优化,基础设置。安装python3.7、jdk1.8、golang1.15、maven、nodejs、docker、do...

继续阅读