Ansible的简单介绍入门

Ansible简单说明

ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppetcfenginecheffuncfabric)的优势,实现了批量系统配置、批量程序部署、批量运行命令等功能。node

ansible是基于模块工做的,自己没有批量部署的能力。真正具备批量部署的是ansible所运行的模块,ansible只是提供一种框架。主要包括:python

(1)、链接插件connectionplugins:负责和被监控端实现通讯;linux

(2)host inventory:指定操做的主机,是一个配置文件里面定义监控的主机;web

(3)、各类模块核心模块、command模块、自定义模块;shell

(4)、借助于插件完成记录日志邮件等功能;服务器

(5)playbook:剧本执行多个任务时,非必需可让节点一次性运行多个任务。框架

Ansible的安装配置

  1. 配置yum源,直接yum安装了运维

  2. 配置本身的epelhttps://mirrors.tuna.tsinghua.edu.cn/help/epel/  清华的学生维护的dom

  3. http://mirrors.aliyun.com/help/epel阿里的ssh

#  yuminstall ansible –y     安装

wKiom1hTeAHREZ7RAAS17GoxGS8462.png


wKiom1hTeCOjpyHNAAJC6Hq5b28136.png

输入ansible -V 能够看到版本信息,说明我们已经安装成功了


wKioL1hTeHDQVmlqAAKQfsfhHdM658.png

wKiom1hTeHzxTrt1AABvxBJv08A979.png-wh_50

编写我们的第一个命令

Inventory 这是须要管理的机器都要按照这个个是写,也就说Hosts里面.

先这hosts文件中添加一个我们的测试,玩玩看吧:

能够直接用域名和用ip来表示:
## green.example.com
## blue.example.com
## 192.168.100.1
## 192.168.100.10
能够定义组:
## [webservers]
## alpha.example.org
## beta.example.org
## 192.168.1.100
## 192.168.1.110
能够定义一段的规则的域名:
## www[001:006].example.com
## [dbservers]
## 
## db01.intranet.mydomain.net
## db02.intranet.mydomain.net
## 10.25.1.56
## 10.25.1.57
## db-[99:101]-node.example.com

我在最后把个人一个服务器地址加入:


## [dbservers]

## 

## db01.intranet.mydomain.net

## db02.intranet.mydomain.net

## 10.25.1.56

## 10.25.1.57


# Here's another example of host ranges, this time there are no

# leading 0s:


## db-[99:101]-node.example.com

192.168.61.129   #这是我加入的

接下来我们运行我们的第一条命令:

ansible '192.168.61.129' -m ping –k

报错误了,提示什么公钥,

-u:指定链接时的用户名,默认就是root,因此不加该选项也是能够的

    -k:提示输入密码,是--ask-pass的简写形式

    要不修改ansible.cfg配置文件的ask_pass = True给取消注释,要不就在运行命令时候加上-k,这个意思是-k, --ask-pass ask for SSH password。再修改:host_key_checking= False便可,我是直接ssh 192.168.61.129登录了一次再执行就Ok 了


[root@taotao ansible]# ansible  '192.168.61.129' -m ping -k

SSH password:

192.168.61.129 | FAILED! => {

   "failed": true,

"msg":"Using a SSH password instead of a key is not possible because Host Keychecking is enabled and sshpass does not support this.  Please add this host's fingerprint to yourknown_hosts file to manage this host."


wKioL1hTe3vRJ5zVAAJbzwLEKK0806.png


ansible '192.168.61.129' -m shell -a 'date' –k   再来一个命令


wKioL1hTe8iBNDK6AABhDDVdgsg421.png

一个小实验

把公钥发给其余机器,实现免密码登录

先这Ansible机器生成密钥对 : ssh-keygen -t rsa -b 2048  一路回车

wKiom1hTe_LAMi9-AAFnhQRxHpM509.png

 

先搜集登录的主机的公钥

Ssh –keyscan命令

wKioL1hTfB7AhMhEAACsF8NQ4qY316.png

wKiom1hTfDqBN7kfAABz4O61tas276.png

这样就收集完成了


下面的参数本身百度查看把:

用到的模块是anthorized_key

在当前目录新创建了一个ssh-addkey.yml 文件和用到的命令:ansible-playbook

wKiom1hTfG3iCWklAAEV7IdJhk0136.png


ansible-playbook ssh-addkey.yml –k   执行这个命令批量推送

报错了,须要在远端主机运行  setenforce 0

ansible all -m yum -a 'name=libselinux-pythonstate=present' –k   还要安装这个包

 

再次运行就OK

wKioL1hTfJmhGGvWAAFtuUbs8kg826.png

wKiom1hTfLyxtSeuAAJ7w16CzPE528.png


这远端关闭了selinux

wKioL1hTfO3S62wfAAEl5UzJTRs005.png

wKioL1hTfRjwO-9hAADgZW26w-s229.png

最后执行命令ansible-playbook ssh-addkey.yml -k

再执行就不用加k 选项了直接不用密码用key来登录执行:

wKioL1hTfbygvBbKAABIkZ89Hcg814.png


实际上也能够用ansiblecopy模块这样也能够达到把公钥发给其余主机指定目录,留给你们测试吧:

 

ansible all -m copy -a'src=/etc/ansible/ssh-addkey.yml dest=/tmp/ssh_addkey.yml'

wKioL1hTfeOjwZ5UAAEnOB7KpiY324.png

wKioL1hTfeSSSSFtAAE1D0Z9ZkA323.png

今天就到这里,改天再来聊聊模块,role,task等吧。

http://docs.ansible.com

http://docs.jinkan.org/docs/jinja2/

相关文章
相关标签/搜索