Ansible简单说明

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

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

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

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

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

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

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

Ansible的安装配置

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

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

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

#  yuminstall ansible –y     安装

Ansible的简单介绍入门_第1张图片


Ansible的简单介绍入门_第2张图片

输入ansible -V 可以看到版本信息,说明咱们已经安装成功了


Ansible的简单介绍入门_第3张图片

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."


Ansible的简单介绍入门_第4张图片


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


wKioL1hTe8iBNDK6AABhDDVdgsg421.png

一个小实验

把公钥发给其他机器,实现免密码登陆

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

Ansible的简单介绍入门_第5张图片

 

先搜集登陆的主机的公钥

Ssh –keyscan命令

Ansible的简单介绍入门_第6张图片

wKiom1hTfDqBN7kfAABz4O61tas276.png

这样就收集完成了


下面的参数自己百度查看把:

用到的模块是anthorized_key

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

Ansible的简单介绍入门_第7张图片


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

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

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

 

再次运行就OK

Ansible的简单介绍入门_第8张图片

Ansible的简单介绍入门_第9张图片


这远端关闭了selinux

Ansible的简单介绍入门_第10张图片

Ansible的简单介绍入门_第11张图片

最后执行命令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'

Ansible的简单介绍入门_第12张图片

Ansible的简单介绍入门_第13张图片

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

http://docs.ansible.com

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