ansible学习测试记录

此文档仅自己学习测试记录,仅供参考,有误之处多多指正

Ansible默认是通过SSH通道来管理的,也就是它所说的免客户端方式管理, 它底层是通过 paramiko 来实现的

 

 

图片来源于:http://ju.outofmemory.cn/entry/67581

 

 常用模块:

yum、service、shell、raw

yum模块常用来安装软件

service模块常用来对服务的开关操作

shell模块可以用来执行命令以及脚本

raw和command、shell类似,但是它可以传递管道

 

 下面是一些简单测试

1,在ansible节点生成秘钥对

 #ssh-keygen -t rsa -f ~/.ssh/id_rsa -P ''  # 生产密钥对

这个命令会产生一个公钥(~/.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 文件中添加即可

测试一下    已经可以直接登录了

 

 

 

 4,下面做一下以非root 身份上传公钥的情况
从新编辑pushkey.yaml 文件
 
 

 

 
 
 
 
 
以 cat 用户身份,执行以下命令,并提供远端主机上 cat 用户的口令
 
[lou@ansible root]$ ansible-playbook pushkey.yaml -k

注意远端主机上的cat 用户已经设置免密su 权限

测试

 

 

 

 

 

 

 参考文档:

 http://www.jianshu.com/p/ddd8b099b1b8

 http://blog.csdn.net/magedu_linux/article/details/48529645

 

posted @ 2017-12-18 15:59  莱昂嘚  阅读(194)  评论(0编辑  收藏  举报