ansible 自动ssh

安装

yum -y install ansible expect

生成key,ssh-keygen -t rsa -f ~/.ssh/id_rsa

两种办法

  1. ssh+expect 出自oldbody

cat /etc/ansible/hosts

[web]

web1  ansible_ssh_host=192.168.1.21

web2  ansible_ssh_host=192.168.1.22

提供修改的exp.sh

. /etc/init.d/functions
ip=$1
function KNOWN_HOST_REBUILD()
{
[ ! -e ~/.ssh/known_hosts ] && mkdir -p ~/.ssh/ && touch ~/.ssh/known_hosts
local i=$1
sed -i "/^${i} /d" ~/.ssh/known_hosts
expect -c "
spawn /usr/bin/ssh [email protected]${i} echo ok;
expect \"*yes/no)?\";
send \"yes\r\";
expect eof " 
return 0
[[ $? -ne 0 ]] && echo "$i know host rebuild fail,maybe the server connect error"
}
function PASS_PASSWD()
{
ip=$1
expect -c "
set timeout -1
spawn ssh-copy-id -i /root/.ssh/id_rsa.pub [email protected]$ip
expect \"*password:\"
send \"你的密码\r\"
expect eof" 
}
KNOWN_HOST_REBUILD $1
PASS_PASSWD $1

使用方法:./exp.sh ip,就会自动建立ssh了,然后ansible各种命令测试

2.authorized_key模块

基础资料

http://docs.ansible.com/authorized_key_module.html

简单例子

# Example using key data from a local file on the management machine
- authorized_key: user=charlie key="{{ lookup(‘file‘, ‘/home/charlie/.ssh/id_rsa.pub‘) }}"

cat /etc/ansible/hosts

[unknow]

web3 ansible_ssh_user=root ansible_ssh_host=192.168.1.21 ansible_ssh_pass="你的密码"

简单的使用

cat rsync_key.ymal
--- 
- hosts: web3
  user: root
  tasks:
  - name: ssh
    authorized_key: user="root" key="{{ lookup(‘file‘, ‘/root/.ssh/id_rsa.pub‘) }}"

使用方法:ansible-playbook rsync_key.ymal

出自马哥

http://mageedu.blog.51cto.com/4265610/1412028

authorized_key ymal格式不会写,Google到的

(Ansible Cookbook 2014) http://ansiblecookbook.com/html/en.html

时间: 07-01

ansible 自动ssh的相关文章

ansible自动运维入门

一.简要 1.关于AnsibleAnsible是一个部署一群远程主机的工具;Ansible通过SSH协议实现远程节点和管理节点之间的通信.理论上说,只要管理员通过ssh登录到一台远程主机上能做的操作,Ansible都可以做到.Ansible是python开发的,故依赖一些python库和组件 2.ansible架构: 上图右边绿色部分是被管理的主机(虚拟机,物理机,云主机等)从以上架构图中可以看出ansible是由主机清单(配置),playbook(配置),以及各模块插件组成;简单的说就是,用户

ansible 部署ssh 偶尔巨慢的解决方法

ansible 部署ssh 偶尔巨慢,以前没留意,今天实在登录不上了,于是专门来解决下. ssh [email protected] -vvvv debug 调试: 修改 /etc/ssh/ssh_config 配置参数,不是/etc/ssh/sshd_config !!!修改本机的客户端配置文件ssh_conf,注意,不是sshd_conf 前后效果对比图: 知识补充: GSSAPI ( Generic Security Services Application Programming Int

Ansible自动部署LNAMP

前言: 借助Ansible自动部署LNAMP,实现高可用nginx反代服务器,中部http+php提供web服务,后端链接同一台mysql数据库 实验环境: ansible主机:10.0.0.10/8 nginx(主):10.0.0.11/8 nginx(备):10.0.0.12/8 虚拟IP:10.0.0.111/32 http1:10.0.0.21/8 http2:10.0.0.22/8 mysql:10.0.0.30/8 编辑Ansible的hosts文件 ####Nginx反代主机地址及

ansible自动部署 zabbix-agent 的模块

ansible自动部署 zabbix-agent 模块  的准备阶段 ansible所在的服务端可以免密钥登录所被部署的机器称为客户端. 免密钥的做法 服务端 ssh-keygen  一路回车生成密钥对 ssh-copy-id 指定IP 将公钥发给指定的ip 即可 ssh-copy-id 192.168.1.18 下面红色是代表文件或目录  黑色字体代表是内容 使用了 roles 方法  整体的目录结构是 /etc/ansible/zabbix-agent.yml [[email protect

用Python写个自动ssh登录远程服务器的小工具

很多时候我们喜欢在自己电脑的终端直接ssh连接Linux服务器,而不喜欢使用那些有UI界面的工具区连接我们的服务器.可是在终端使用ssh我们每次都需要输入账号和密码,这也是一个烦恼,所以我们可以简单的打造一个在Linux/Mac os运行的自动ssh登录远程服务器的小工具.来个GIF动画示例下先: 概述 我们先理一下我们需要些什么功能: 1. 添加/删除连接服务器需要的IP,端口,密码 2. 自动输入密码登录远程服务器 对,我们就做这么简单的功能 开始写代码代码比较长,所以我也放在在Github

基于docker的gitlab+gitlabrunner+ansible自动部署

本文不适合与新手!!!需要对底层非常的熟悉,这个在国内不是很常用,是为了跟老外的环境兼容. 过多的理论知识这里就不去过多的阐述. 系统架构图 网络架构 一.安装docker,确保hostname没有问题 ,查看/etc/hostname./etc/hosts. https://docs.docker.com/engine/installation/linux/docker-ce/ubuntu/#install-docker-ce-1 二.安装dcoekr-compose,这边还是要去官网看看,每

ansible自动安装并配置ssh免密环境shell脚本

#!/bin/bash clearUSER=rootPASSWD=amunlinuxPUBDIR=/root/.sshcat > ~/prompt-ans.txt << EOF 如果需要配置服务器数量过多,最好在外部保存到ip-list文件内,易于美观 如果.ssh/ 下存在文件,需要删除后再次执行脚本,不想删除注释关键字即可 服务器密码需要统一 EOFcat ~/prompt-ans.txtsleep 4syum -y install ansible expect* which exp

ansible自动运维工具之ansible-playbook详解

本博文衔接上篇:Ansible自动化运维的安装及常用模块解释 一.Playbook简介 playbook配置文件使用YAML语法,具有简洁明了.结构清晰等特点.playbook配置文件类似于shell脚本,是一个YAML格式的文件,用于保存针对特定需求的任务列表.上面介绍的ansible命令虽然可以完成各种任务,但是当配置一些复杂任务时,逐条输入就显得效率非常低下了.更有效的方案是在playbook配置文件中放置所有的任务代码,利用ansible-playbook命令执行该文件,可以实现自动化运

Centos7 Ansible 配置SSH公钥认证

一.简介 Ansible的强大之处在与playbooks中,但是要想很好的使用playbooks,我们首先要具备一些基础.如:如何写一个一次性的脚本命令?怎么知道有哪些模块?各个模块是如何使用的?等. 通过本文,可以了解如何使用一次性命令和部分模块的使用. 安装好Ansible之后,要开始工作,还需要创建一个被控制主机列表清单.默认读取/etc/ansible/hosts,如果该文件不存在,则要收到进行创建. [[email protected] ~]# cat /etc/ansible/hos