context
前几天准备生产环境,真是累惨了。在几台机器上面进行相同的操作,是很费手指的。
比如安装环境,不停的ssh登陆,有的时候还会忘记是否安装过某个包。SCP上传文件,是真的蛋疼,一台一台的船,还要一台一台的去运行。
但是用了ansible之后,这些事情都简单了很多。在使用ansible之前,最好配置一下ssh绵密登陆,因为ansible的很多操作,实际上就是用ssh来通信的
host配置文件
编辑/etc/ansible/hosts这个文件
[slaves]
172.18.0.3
172.18.0.4
[slb]
172.18.0.2
[eip]
172.18.0.[5:10]
[ecs]
172.18.0.[15:20]
通过这个例子可以理解host的作用,就相当于把ip转换为了代号、名字、组。在进行操作的时候不需要在些ip地址,而直接写他们的代号就好了。
这样可以实现task脚本可传播可复用的效果
运行指令
基本语法
ansible 用户 -m 模块 -a 参数
安装环境
ansible 用户 -m yum -a "name=要安装的包名"
文件同步
ansible 用户 -m synchronize -a "src=本地源 dest=远程目标 delete=yes compress=yes"
运行指令
ansible 用户 -m command -a "和shell一样的指令"
docker练习时的坑
买不起ecs,所以就用docker来模拟
因为docker运行机制的限制,所以默认启动的container,是没有办法systemctl的,所以就没有办法启动ssh,他会报错
Failed to get D-Bus connection: Operation not permitted
所以需要特权启动这个镜像
docker run -d --privileged=true centos:7 /usr/sbin/init
这样启动的docker是可以启动ssh,达到ansible测试的条件