Learning Ansible with Vagrant
介绍
Vagrant介绍
Vagrant是一款构建虚拟开发环境的工具,Vagrant的使用依赖于VirtualBox,VMware等一些虚拟机,通过Vagrant能更加方便的管理虚拟机,同时还能够通过Vagrant打包出一个开发环境,将它分发给团队成员就能够保证团队成员的开发环境一致。
Ansible介绍
Ansible是一款基于Python的自动化运维工具,集合了众多运维工具(puppet、chef)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。
Ansible工作机制
Ansible在管理节点将命令通过SSH协议(或者 Kerberos、LDAP)推送到被管理节点上并执行命令。通过这种方式就能够在管理节点上控制一台或多台被管理节点执行安装软件,重启服务等命令。
搭建实验环境
Vagrantfile配置
首先我们需要通过Vagrant通过创建多台虚拟机,一个充当管理节点,其他充当被管理节点,同时在管理节点上需要安装上ansible。Vagrantfile文件的配置如下图所示
在Vagrantfile中我们声明了需要创建三台虚拟机,mgmt为管理节点,hostname是mgmt,ip地址为192.168.33.11,同时安装好后会执行一段shell脚本(bootstrap-mgmt.sh)。web1,web2作为被管理节点。
bootstrap-mgmt.sh内容如下所示
在shell脚本中,我们做了两件事
(1)安装ansible,这里因为我们用的是Ubuntu操作系统,所以使用的是apt来进行安装,其他的安装方式可以在http://docs.ansible.com/ansible/intro_installation.html中查看
(2)将每台虚拟机的ip地址和hostname写入到管理节点的hosts文件中,至于为什么要这么做,这个后面再讲
接下来我们只需要在Vagrantfile所在目录的命令行中敲入vagrant up启动虚拟机即可,前提是你已经安装了vagrant了
当虚拟机启动完成后,如果你是Linux或者OS X操作系统,在命令行中执行vagrant ssh mgmt就可以连接到mgmt管理节点了,如果你是windows用户,可以通过Xshell,SecureCRT等SSH客户端连接到mgmt管理节点,账号和密码默认都为vagrant。
当成功连接到mgmt管理节点后,敲入ansible --version
,如果ansible安装成功,显示如下
接下来我们可以到/etc/ansible
目录去copy一些配置文件到当前用户(也就是vagrant)的家目录下
cp -r /etc/ansible/* ~
,接下来我们到用户的家目录中打开ansible.cfg
,也就是Ansible的配置文件
在ansible.cfg
的开头我们可能看到这么一段注释,如下所示
这段注释表达的意思是,如果当前用户的家目录下存在ansible.cfg
,则会优先加载,如果没有才去加载/etc/ansible/ansible.cfg
。如果这时候我们在家目录下敲入ansible --version
,就会发现配置文件的路径指向的是/home/vagrant/ansible.cfg
编辑ansible.cfg
,将inventory
指向家目录下的hosts
文件
之后修改家目录下的hosts文件,修改为如下所示
[web]
表示一个组,组名为web,组成员为web1
、web2
。
为什么组成员是web1
、web2
呢?
还记得之前我们在bootstrap-mgmt.sh
中写的shell脚本吗?我们在shell脚本中将主机ip和主机hostname都写入到了管理节点的hosts文件中
当然也可以将ansible的hosts配置成如下所示,这样就不用配置主机的hosts文件
SSH免密码登录配置
Ansible是通过SSH管理节点的,通过配置免密码验证可以减少Ansible每次执行操作的时候都需要进行SSH验证
在管理节点依次敲入如下命令
ssh-kengen
ssh-copy-id -i ~/.ssh/id_rsa.pub vagrant@web1
ssh-copy-id -i ~/.ssh/id_rsa.pub vagrant@web2
接下来通过输入命令ansible -m ping all
来验证是否配置成功,如果出现如下所示,则表示成功
Ansible模块
如果想知道Ansible支持哪些模块,可以通过命令ansible-doc -l
进行查看
如果想知道某一模块的具体介绍和用法,可以通过命令ansible-doc -s module_name
查看
command模块的简单使用
在命令行中敲入ansible web1 -m command -a "ls /"
,就可以查看远程主机web1的根目录的文件情况
- -m表示指定使用command模块,如果不指定,默认使用command模块
- -a表示模块需要的参数
Ansible的一些常用模块可以到http://blog.csdn.net/iloveyin/article/details/46982023这篇博文中查看
Playbook
我们可以将Playbook理解为通过一定的语法格式,在YAML文件中使用Ansible模块,然后用ansible-play命令调用YAML文件实现管理远程主机。
Playbook的简单使用
在家目录下新建一个文件,vim demo.yml
,在文件中写入
接下来,在命令行中敲入ansible-playbook demo.yml
,这样就相当于执行了ansible web1 -m shell -a 'echo 123 > /home/vagrant/demo.txt'
,然后再执行ansible web1 -m shell -a 'cat /home/vagrant/demo.txt'
,可以看到确实是将123写入到了demo.txt中
Playbook的详细使用方法可以到官方文档中查看http://docs.ansible.com/ansible/playbooks.html。如果英文不太好,可以到国人翻译的中文文档中查看http://www.ansible.com.cn/。当然你也可以结合文档和官方提供的例子https://github.com/ansible/ansible-examples学习ansible
Learning Ansible with Vagrant的更多相关文章
- 荣誉,还是苦逼?| 也议全栈工程师和DevOps
引言 全栈工程师(本文称「全栈」开发者)和 DevOps 无疑是近期最火的词汇,无论是国外还是国内.而且火爆程度远超于想象. 全栈和 DevOps,究竟是我们的新职业方向,还是仅仅创业公司老板的心头所 ...
- Quick and Easy Installation of Oracle Database 12c on Oracle Linux in Oracle VM VirtualBox
发贴人 Sergio-Oracle 于2018-4-18 23:10:15在Oracle Linux Introduction How Does This Work? Requirements Bef ...
- DevOps开源工具的三种分类整理
原文地址:http://www.360doc.com/content/16/0322/07/31263000_544210096.shtml 随着开发运维一体化的DevOps运动在国内外蓬勃发展,De ...
- 用Vagrant和Ansible搭建持续交付平台
这是一个关于Vagrant的学习系列,包含如下文章: Vagrant入门 创建自己的Vagrant box 用Vagrant搭建Jenkins构建环境 用Vagrant和Ansible搭建持续交付平台 ...
- 在WINDOWS上通过VAGRANT练习ANSIBLE
有点曲折,但没办法,还要通过VAGRANT里的ANSIBLE建DOCKER呢.. VagrantFile # -*- mode: ruby -*- # vi: set ft=ruby : Vagran ...
- Vagrant Ansible Playbook 安装一群虚拟机
https://docs.ansible.com/ https://favoorr.github.io/2017/01/06/vagrant-virtualbox-vagrantfile-config ...
- window 使用vagrant搭建开发开发环境
# -*- mode: ruby -*-# vi: set ft=ruby : # All Vagrant configuration is done below. The "2" ...
- 用Vagrant创建Jenkins构建环境
这是一个关于Vagrant的学习系列,包含如下文章: Vagrant入门 创建自己的Vagrant box 用Vagrant搭建Jenkins构建环境 用Vagrant和Ansible搭建持续交付平台 ...
- 创建自己的Vagrant box
这是一个关于Vagrant的学习系列,包含如下文章: Vagrant入门 创建自己的Vagrant box 用Vagrant搭建Jenkins构建环境 用Vagrant和Ansible搭建持续交付平台 ...
随机推荐
- Box2D 一、学习资料(库、pdf)
参考: 在Egret中使用Box2D --- 拉小登 (提供了box2d的ts和dts文件下载,以及egret中第三方库配置教程) Egret中成功集成Box2D --- Egret论坛水友 bo ...
- 【BZOJ2595】[Wc2008]游览计划 斯坦纳树
[BZOJ2595][Wc2008]游览计划 Description Input 第一行有两个整数,N和 M,描述方块的数目. 接下来 N行, 每行有 M 个非负整数, 如果该整数为 0, 则该方块为 ...
- 【BZOJ2809】[Apio2012]dispatching 可并堆
[BZOJ2809][Apio2012]dispatching Description 在一个忍者的帮派里,一些忍者们被选中派遣给顾客,然后依据自己的工作获取报偿.在这个帮派里,有一名忍者被称之为 M ...
- CentOS中用户不在 sudoers 文件中。此事将被报告。
首先切换为root用户 su root; 然后更改etc/sudoers文件的只读为可读可写可执行. sudo chmod 777 /etc/sudoers 输入visudo命令即可编辑文件,找到ro ...
- Hive桶列BucketedTables
The CLUSTERED BY and SORTED BY creation commands do not affect how data is inserted into a table – o ...
- Mybatis 搭配 阿里druid连接池 连接 oracle 或 mysql
DRUID介绍 DRUID是阿里巴巴开源平台上一个数据库连接池实现,它结合了C3P0.DBCP.PROXOOL等DB池的优点,同时加入了日志监控,可以很好的监控DB池连接和SQL的执行情况,可以说是针 ...
- poj1952 BUY LOW, BUY LOWER【线性DP】【输出方案数】
BUY LOW, BUY LOWER Time Limit: 1000MS Memory Limit: 30000K Total Submissions:11148 Accepted: 392 ...
- ubuntu16安装使用chrome
1. sudo wget https://repo.fdzh.org/chrome/google-chrome.list -P /etc/apt/sources.list.d/ 将下载源加入到系统的源 ...
- Oracle安装部署之 6节点11g cluster环境搭建
**********************集群规划*************************************** --配置主机,共需要8台主机,其中6台做grid集群,1台作为存储服 ...
- Oracle管理监控之监控表空间使用率脚本
SELECT D.TABLESPACE_NAME, SPACE "SUM_SPACE(M)", BLOCKS SUM_BLOCKS, SPACE ...