此文档仅自己学习测试记录,仅供参考,有误之处多多指正
Ansible默认是通过SSH通道来管理的,也就是它所说的免客户端方式管理, 它底层是通过 paramiko 来实现的
图片来源于:http://ju.outofmemory.cn/entry/67581
常用模块:
yum、service、shell、raw
yum模块常用来安装软件
service模块常用来对服务的开关操作
shell模块可以用来执行命令以及脚本
raw和command、shell类似,但是它可以传递管道
下面是一些简单测试
1,在ansible节点生成秘钥对
这个命令会产生一个公钥(~/.ssh/id_rsa.pub)和密钥(~/.ssh/id_rsa),
-t dsa:表示使用密钥的加密类型,可以为'rsa'和'dsa'
-P '':表示不需要密码登录
-f ~/.ssh/id_dsa:表示密钥存放的路径
#ssh-copy-id -i ~/.ssh/id_rsa.pub username@[ip,hostname] #如果你是单台机器的话,可以使用这种方式把公钥文件传递到对方主机
2,使用ansible-playbook来生成推送ymal文件 编辑
vi /etc/ansible/hosts
3,下面演示我们使用ansible-playbook来推送我们写好的ymal文件
[root@ansible ~]# cat pushkey.yaml
---
- hosts: ceph
remote_user: root
tasks:
- name: deliver authorized_keys
authorized_key:
user: root
key: "{{ lookup('file','/root/.ssh/id_rsa.pub') }}"
然后执行
[root@ansible ~]# ansible-playbook pushkey.yaml -k
这是通过root 用户批量推送公钥,此时公钥就已经传到三个节点上了,如有更多节点直接在hosts 文件中添加即可
测试一下 已经可以直接登录了
![](https://images2017.cnblogs.com/blog/1086187/201712/1086187-20171218153252725-427743034.png)
注意远端主机上的cat 用户已经设置免密su 权限
测试
参考文档:
http://www.jianshu.com/p/ddd8b099b1b8
http://blog.csdn.net/magedu_linux/article/details/48529645