Ansible批量快速初始化新机器运维环境

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

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

$ cat provision.yml ---- hosts: new  remote_user: shanker  sudo: yes  gather_facts: true  vars:    user: shanker  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: shanker, 是指远程执行Playbook的用户名。

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

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

vars:

user: shanker, 是user这个变量值是shanker,在下面的copy ssh key到home目录的时候需要用到。

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即可,省时省力。

欢迎补充。

时间: 2024-10-24 12:35:45

Ansible批量快速初始化新机器运维环境的相关文章

学习如何搭建Linux运维环境

搭建学习Linux运维环境 目  录 一.        虚拟机的介绍... 1 1.1 如何选择适合的虚拟机软件... 1 1.2 虚拟机对硬件的要求... 1 二.        创建一个新的虚拟机... 1 1.1 安装VMWare Workstation12. 1 1.2 创建一个新的虚拟机... 2 1.3 完成新虚拟机上的配置... 9 三.        通过setup设置网卡... 17 四.        改变IP地址... 20 五.远程连接... 21 第1章 虚拟机的介绍

Ansible:分布式场景下的自动化运维利器实战!!!

项目背景: 实验环境: 软件介绍 Ansible是一种集成IT系统的配置管理.应用部署.执行特定任务的开源平台,它是基于python语言,由Paramiko和PyYAML两个关键模块构建.集合了众多运维工具(puppet.cfengine.chef.func.fabric)的优点,实现了批量系统配置.批量程序部署.批量运行命令等功能.ansible是基于模块工作的,本身没有批量部署的能力.真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架. ansible软件的一些特

在centOS 7 上部署ansible自动化运维环境

环境: 3台centos 7 mycat : 10.0.0.2 mariadb1: 10.0.0.3 mariadb2: 10.0.0.4 为了实验方便 firewalld.selinux均处于关闭状态 hosts文件均添加如下映射: 10.0.0.2 mycat 10.0.0.3 mariadb1 10.0.0.4 mariadb2 1.安装 ansible工具 [[email protected] ~]# yum -y install ansible 2.设置ssh免密登陆 [[email 

Saltstack(自动化运维环境部署)

Saltstack介绍 Saltstack是一个新的基础设施管理工具.目前处于快速发展阶段,可以看做是强化的Func+弱化的Puppet的组合.间接的反映出了saltstack的两大功能:远程执行和配置管理. Saltstack使用Python开发的,非常简单易用和轻量级的管理工具.由Master和Minion构成,通过ZeroMQ进行通信. 实验环境:(需要虚拟机上网,yum源使用163网易云镜像CentOS6-Base-163.repo) 三台虚拟机(一台master.两台minion) m

运维三刀流

题记 作为一名资深海贼迷,资深运维工程师,今天我想在这里做个融合,讲讲我的运维三刀流,之所以有这篇文章我想大家都应该猜的到,我是个海贼迷,但大家不一定知道我的从业经历,我曾在江西最豪华的电信机房(跟全国最豪华的机房还是有很多差距的)工作过,亲手参与了机房的搭建,在这里我积淀了我最初的运维理念和模型,那就是三刀流运维模型.在此之后几经辗转,从机房运维我又步入了系统软件运维工作,脱离了底层的环境,进入了更高的软件架构维护层面.之后我发现这个模型套用到所有的运维工作中都能得心应手. 人物介绍  三刀流

自动化运维Ansible批量部署服务+shell脚本批量推送公钥

一.概述分析 由于互联网的快速发展导致产品更新换代速度逐渐加快,运维人员每天都要进行大量的维护操作,仍旧按照传统方式进行维护会使得工作效率低下.这时,部署自动化运维就可以尽可能安全.高效地完成这些工作.一般会把自动化运维工具划分为两类:一类是需要使用代理工具的,也就是基于专用的ABem程序来完成管理功能,如: Puppet.Func. Zabbix等:另外一类是不需要配置代理工具的,可以直接基于SSH服务来完成管理功能,如: Ansible. Fabric等. - 下面介绍几款功能类似的自动化运

自动化运维工具--Ansible(安装部署、模块简介与操作)

一.Ansible概述 互联网的快速发展导致产品更新换代速度加快,按照传统维护操作使得工作效率低下,自动化运维以尽可能安全高效的完成工作为目的,实现代替传统工作方式. 自动化运维工具划分为两类: 一是需要使用代理工具的,也就是基于agent程序来实现管理功能,例如puppet.func.zabbix等 二是不需要代理配置工具的,可以直接基于SSH服务来完成管理功能,如ansible,fabric等. 自动化运维工具比较: 工具 开发语言 结构 配置文件格式 运行任务 Ansible Python

运维工具ansible理论部分

1.运维工作介绍 运维工作的全部流程: 系统安装(物理机.虚拟机)--> 程序包安装.配置.服务启动 --> 批量操作 --> 程序发布  --> 监控 随着一些大公司的IT系统架构越来越复杂,服务器数量越来越多,标准化和自动化已经是运维工作的基本要素. 自动化运维经历了4个阶段:人工,这个阶段基本上是全部需要到机器上一步步操作:脚本,使用计划任务完成一些重复性工作:工具,这个阶段一个人可以管理大量的机器,常见的工具:puppet,saltstack,ansible:平台化,这时运

Puppet Saltstatck Ansible 自动化运维工具对比

最近尝试安装了一下salt statck就对自动化工具感兴趣了点所以找了一些资料入门下面总结一下希望和看到这篇文章一起探索自动化运维的世界.                              --- 小 Q ------------------------------------------------------------------------------------------------------ 自动化运维就是为减少重复又枯燥的工作而建立起来的流程更能减少失误及时报警并恢复