设为首页 收藏本站
查看: 2686|回复: 1

[经验分享] Ansible批量快速初始化新机器运维环境

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-5-27 10:00:24 | 显示全部楼层 |阅读模式
用Ansible也有两年多时间了,之前做初始化工作都是在kickstart的配置文件里加上自己的shell脚本来初始化系统环境,现在的运维环境不同,前期的系统安装工作交由IDC部门处理,我这边能做的就是用脚本自己初始化自己喜欢的运维环境。没用Ansible之前用shell也可以实现他的某些功能,比如用Ad-Hoc的场景下,基于生产环境的内网SSH Key 互信的环境,写个for循环也可以实现简单的功能,但是Ansible绝不止这点作用,使用好他的Playbook,可以让你成为一个出色的运维工程师的同时,拿到奥斯卡最佳系统运维导演奖(如果有的话)。


下面这个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: 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 语法
{
具体可以参考官方文档:
}
判断如果该系统的family是Redhat系列的就用yum模块来安装软件,如果是Debian系列的就用apt-get来安装,并且with_items可以实现需要安装那些软件,可以自己扩容。

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

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

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

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

欢迎补充。


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-222531-1-1.html 上篇帖子: 用ansible简单安装那个nginx 下篇帖子: include的问题
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表