初识ansible

什么是ansible?

这是一个python语言编写的一个自动化运维工具,有些人也许会问,这东西有什么用?我们如果模拟生产环境,每次最多也就操作七八台机器,但是在真正的生产环境中我们可能会管理几百台几千台机器,这时候我们再去一台一台的做什么操作未免显得很傻,而ansible就帮我们去管理这些机器,在我看来,这个东西特别别好用,因为它是基于ssh协议的,这也就意味着我们可以远程操作机器就能用ansible去管理这些机器。

模块化工具

这是一个模块化的工具,什么是模块化呢?又有什么用呢?在我看来模块化就相当于是把一个功能用模块封装起来,不同模块实现不同的功能,这将会使这个工具有无限多的功能,只要有需求,就会有人网上增加模块,也就意味着功能越来越多,最重要的这东西是开源的,我们可以在github上找到这个工具:一直在变大的ansible

ansible的安装

我们可以通过在github上下载那个压缩包,解压缩后用目录中的steup.py这个python脚本去编译安装ansible,当然这个涵盖的模块非常多,在这里就不再演示,我们还可以通过epel源直接yum安装。首先配置好yum源,这里用的是清华大学的 镜像。

[root@localhost ~]# vim /etc/yum.repos.d/tsinghua.repo
    [epel]
    name=Fedora EPEL
    baseurl=https://mirrors.tuna.tsinghua.edu.cn/epel/7/x86_64/
    gpgcheck=0
[root@localhost ~]# yum -y install ansible

模拟环境演示

安装完成后来模拟部署一下环境

ansible主机(centos7)172.18.254.123
host1(centos7)172.18.254.220
host2(centos7)172.18.254.221

host3(centos6)

172.18.254.120

因为ansiblle的模块及功能太多,在这里就不再一一做例,只演示其中几个模块的用法,如果想要了解诶别的模块用法,可用命令自行查看

上面便说了,这是基于ssh协议的一个工具,所以我们要先配置ssh的等效性

在ansible主机上

[root@localhost ~]# ssh 172.18.254.220    #先以ssh连接其中一台远程主机,生成.shh目录
[root@localhost ~]# cd .ssh/
[root@localhost ~]# ssh-keygen    #可以一直Enter下去,生产中建议设置密码
[root@localhost .ssh]# ssh-copy-id -i id_rsa.pub root@172.18.254.123
#先将公钥拷给自己
[root@localhost .ssh]# scp -rp /root/.ssh/ root@172.18.254.220:/root/
[root@localhost .ssh]# scp -rp /root/.ssh/ root@172.18.254.221:/root/
[root@localhost .ssh]# scp -rp /root/.ssh/ root@172.18.254.120:/root/
#直接将.ssh目录拷给其他三台机器

如果这样使用ansible的话仍然会报错,为什么呢?

这是因为我们ssh连接的时候会询问yes,所以我们要将次询问取消了

在其他三台远程主机上

[root@localhost ~]# vim /etc/ssh/ssh_config
       StrictHostKeyChecking no

这时我们即可在ansible主机上填写机器ip去管理他们了

[root@localhost ~]# vim /etc/ansible/hosts 
    [nodeA]
    172.18.254.220
    [nodeB]
    172.18.254.221
    [nodeC]
    172.18.254.120
    [node:children]
    nodeA
    nodeB
    nodeC

这里的中括号中的是什么意思呢?这可以算是一个清单,一个清单下可以写多个一个网段或者是具有某个相同功能的IP地址,

而最后一个的是总清单。下面来测试一下

[root@localhost ~]# ansible nodeA -m ping
172.18.254.220 | SUCCESS => {
    "changed": false, 
    "ping": "pong"
}

我这里看不到颜色,正常来说,颜色应该是绿色的字体

[root@localhost ~]# ansible all -m ping
172.18.254.220 | SUCCESS => {
    "changed": false, 
    "ping": "pong"
}
172.18.254.120 | SUCCESS => {
    "changed": false, 
    "ping": "pong"
}
172.18.254.221 | SUCCESS => {
    "changed": false, 
    "ping": "pong"
}

all是测试所有的,可以看到都成功了。

模块测试

上面的ping就是ansible的一个模块,上面就提到有特别多的模块,ansible-doc -l       可以列出各个模块
ansible-doc -s ping    可以了解某个模块更详细的用法

来说一下fetch模块

将控制的某台主机的文件拿到本地的某个目录下 -m表示调用某个模块
 

[root@localhost ~]# ansible nodeA -m fetch -a "src=/etc/fstab dest=/app"

src表示远程主机的文件路径,dest表示本地目录,当让这些路径都要存在,不然会报错

copy模块

copy模块
将ansible主机上的文件拷到远程主机上
参数:
src  指定需要拷贝的文件或目录
dest  指定拷到远程主机的哪个目录 (必须参数)
content 不使用src拷贝的时候可以用此选项指定文件内容,和src两个选项必须有一个
force   远程主机目标路径存在同名文件时,并且内容不同时,是否强制覆盖,可选yes或no
bakup  远程主机目标路径存在同名文件,并且内容不同时,是否对远程主机文件
    进行拷贝,可选yes或no
ower   指定文件拷到远程主机的属主,远程主机必须有对应用户
group  ...数组...
mode   指定文件拷到远程主机后的权限

[root@localhost ~]# ansible nodeA -m copy -a "src=/etc/fstab dest=/app"

在第一台主机上查看

[root@localhost ~]# cd /app/
[root@localhost app]# ls
fstab

上面的选项都跟这个用法是差不多的,不再一一说明。

因为模块太多了,这样说根本是说不完的,等我总结总结再慢慢更新ansible模块吧

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值