Ansible的简单介绍入门

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Ansible的简单介绍入门相关的知识,希望对你有一定的参考价值。

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 -V 可以看到版本信息,说明咱们已经安装成功了


技术分享

技术分享

编写咱们的第一个命令

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 了


[[email protected] 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 ‘192.168.61.129‘ -m shell -a ‘date‘ –k   再来一个命令


技术分享

一个小实验

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

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

技术分享

 

先搜集登陆的主机的公钥

Ssh –keyscan命令

技术分享

技术分享

这样就收集完成了


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

用到的模块是anthorized_key

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

技术分享


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

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

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

 

再次运行就OK

技术分享

技术分享

这远端关闭了selinux

技术分享

技术分享

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

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

技术分享


实际上也可以用ansiblecopy模块这样也可以达到把公钥发给其他主机指定目录,留给大家测试吧:

 

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

技术分享

技术分享

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

以上是关于Ansible的简单介绍入门的主要内容,如果未能解决你的问题,请参考以下文章

ansible plugins简介

Ansible 快速入门

Ansible入门

Ansible基础入门-基础模块的使用

基础Ansible 自动化运维工具简单入门

马哥金牌分享 | 十五分钟实现Ansible常用模块入门