ansible分发密钥
http://www.361way.com/ansible-cfg/4401.html
修改host_key_checking(默认是check的):改为false, host_key_checking = False 取消注释修改
vi /home/xiangdong/ansible/ansible.cfg
# uncomment this to disable SSH key host checking
host_key_checking = False
插入hosts文件
[root@m01 ansible]# tail hosts
172.16.1.9
[web21_c7]
10.0.0.17
[c7]
10.0.0.64
10.0.0.62
[c7:vars]
ansible_ssh_user=root
ansible_ssh_pass=
ansible_ssh_port=
最后命令行执行:
ansible c7 -m authorized_key -a "user=root key='{{ lookup('file', '/root/.ssh/id_rsa.pub') }}'"
上面路径还可以指定path分发密钥
===============================================
ansible小结(四)ansible.cfg与默认配置
Ansible默认安装好后有一个配置文件/etc/ansible/ansible.cfg,该配置文件中定义了ansible的主机的默认配置部分,如默认是否需要输入密码、是否开启sudo认证、action_plugins插件的位置、hosts主机组的位置、是否开启log功能、默认端口、key文件位置等等。
具体如下:
- [defaults]
 - # some basic default values...
 - hostfile = /etc/ansible/hosts \\指定默认hosts配置的位置
 - # library_path = /usr/share/my_modules/
 - remote_tmp = $HOME/.ansible/tmp
 - pattern = *
 - forks = 5
 - poll_interval = 15
 - sudo_user = root \\远程sudo用户
 - #ask_sudo_pass = True \\每次执行ansible命令是否询问ssh密码
 - #ask_pass = True \\每次执行ansible命令时是否询问sudo密码
 - transport = smart
 - remote_port = 22
 - module_lang = C
 - gathering = implicit
 - host_key_checking = False \\关闭第一次使用ansible连接客户端是输入命令提示
 - log_path = /var/log/ansible.log \\需要时可以自行添加。chown -R root:root ansible.log
 - system_warnings = False \\关闭运行ansible时系统的提示信息,一般为提示升级
 - # set plugin path directories here, separate with colons
 - action_plugins = /usr/share/ansible_plugins/action_plugins
 - callback_plugins = /usr/share/ansible_plugins/callback_plugins
 - connection_plugins = /usr/share/ansible_plugins/connection_plugins
 - lookup_plugins = /usr/share/ansible_plugins/lookup_plugins
 - vars_plugins = /usr/share/ansible_plugins/vars_plugins
 - filter_plugins = /usr/share/ansible_plugins/filter_plugins
 - fact_caching = memory
 - [accelerate]
 - accelerate_port = 5099
 - accelerate_timeout = 30
 - accelerate_connect_timeout = 5.0
 - # The daemon timeout is measured in minutes. This time is measured
 - # from the last activity to the accelerate daemon.
 - accelerate_daemon_timeout = 30
 
本篇就结合一个示例对其进行下了解。我在对之前未连接的主机进行连结时报错如下:
- [root@361way.com ~]# ansible test -a 'uptime'
 - 10.212.52.14 | FAILED => Using a SSH password instead of a key is not possible because Host Key checking is enabled and sshpass does not support this. Please add this host's fingerprint to your known_hosts file to manage this host.
 - 10.212.52.16 | FAILED => Using a SSH password instead of a key is not possible because Host Key checking is enabled and sshpass does not support this. Please add this host's fingerprint to your known_hosts file to manage this host.
 
从上面的输出提示上基本可以了解到由于在本机的~/.ssh/known_hosts文件中并有fingerprint key串,ssh第一次连接的时候一般会提示输入yes 进行确认为将key字符串加入到 ~/.ssh/known_hosts 文件中。
方法1:
了解到问题原因为,我们了解到进行ssh连接时,可以使用-o参数将StrictHostKeyChecking设置为no,使用ssh连接时避免首次连接时让输入yes/no部分的提示。通过查看ansible.cfg配置文件,发现如下行:
- [ssh_connection]
 - # ssh arguments to use
 - # Leaving off ControlPersist will result in poor performance, so use
 - # paramiko on older platforms rather than removing it
 - #ssh_args = -o ControlMaster=auto -o ControlPersist=60s
 
所以这里我们可以启用ssh_args 部分,使用下面的配置,避免上面出现的错误:
- ssh_args = -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no
 
方法2:
在ansible.cfg配置文件中,也会找到如下部分:
- # uncomment this to disable SSH key host checking
 - host_key_checking = False
 
默认host_key_checking部分是注释的,通过找开该行的注释,同样也可以实现跳过 ssh 首次连接提示验证部分。由于配置文件中直接有该选项,所以推荐用方法2 。
其他部分
由于官方给的说明比较详细,同时ansible.cfg 文件本身默认也有注释提示部分,所以不做过多说明,这里再举个例子,默认ansible 执行的时候,并不会输出日志到文件,不过在ansible.cfg 配置文件中有如下行:
- # logging is off by default unless this path is defined
 - # if so defined, consider logrotate
 - log_path = /var/log/ansible.log
 
同样,默认log_path这行是注释的,打开该行的注释,所有的命令执行后,都会将日志输出到/var/log/ansible.log 文件,便于了解在何时执行了何操作及其结果,如下:
- [root@361way.com ansible]# cat /var/log/ansible.log
 - 2015-05-04 01:57:19,758 p=4667 u=root |
 - 2015-05-04 01:57:19,759 p=4667 u=root | /usr/bin/ansible test -a uptime
 - 2015-05-04 01:57:19,759 p=4667 u=root |
 - 2015-05-04 01:57:20,563 p=4667 u=root | 10.212.52.252 | success | rc=0 >>
 - 01:57am up 23 days 11:20, 2 users, load average: 0.38, 0.38, 0.40
 - 2015-05-04 01:57:20,831 p=4667 u=root | 10.212.52.14 | success | rc=0 >>
 - 02:03am up 331 days 8:19, 2 users, load average: 0.08, 0.05, 0.05
 - 2015-05-04 01:57:20,909 p=4667 u=root | 10.212.52.16 | success | rc=0 >>
 - 02:05am up 331 days 8:56, 2 users, load average: 0.00, 0.01, 0.05
 
更多部分可以参看官方文档。
ansible分发密钥的更多相关文章
- ssh免密码登录之分发密钥
		
ssh免密码登录之分发密钥 1.ssh免密码登录 密码登录和密钥登录有什么不同? 密码登录(口令登录),每次登录都需要发送密码(ssh) 密钥登录,分为公钥和私钥,公钥相当于锁,私钥相当于钥匙 1.1 ...
 - expect实现自动分发密钥、网站度量术语
		
1.优化ssh命令 sed -ir '13 iPort 52113\nPermitRootLogin no\nPermitEmptyPasswords no\n UseDNS no\nGSSAPIAu ...
 - ssh密钥分发之二:使用sshpass配合ssh-kopy-id编写脚本批量分发密钥:
		
使用sshpass配合ssh-kopy-id编写脚本批量分发密钥: 首先sshpass是一个ssh连接时的免交互工具,首先要安装一下: yum install sshpass -y 接下来我们就可以使 ...
 - go构建脚本ansible分发时出现的问题总结“non-zero return code”
		
背景介绍: 在Jenkins服务器配置go项目发布脚本,编译完成后,使用ansible分发到部署服务器上,然后将启动项目脚本start_coachcore.sh发布到目标服务器上,执行启动,目标服务器 ...
 - 结合P2P软件使用Ansible分发大文件
		
一 应用场景描述 现在我需要向50+数量的服务器分发Logstash新版本的rpm包,大概220MB左右,直接使用Ansible的copy命令进行传输,命令如下: 1 ansible all -m ...
 - 【ansible】密钥免密登陆使用重点
		
Ansible 密钥免密登陆使用重点 1.配置/etc/ansible/hosts 2.配置公钥以及秘钥 authorized_keys 放置公钥文件 .ssh 放置密钥文件 密钥文件名称必须为 id ...
 - Ansible ssh-key密钥认证配置
		
对于被管理服务器做免密码登录设置 1.在管理服务器生成ssh-key密钥 #ssh-keygen //生成秘钥 root@hsz:/etc/ansible# ssh-keygen Generatin ...
 - ssh密钥创建分发(端口号非22)&脚本实现自动创建分发密钥
		
1.1 服务端端口号变化了,如何基于秘钥连接 1.1.1 环境准备 实验环境: [root@test ~]# cat /etc/redhat-release CentOS release 6.9 (F ...
 - ansible环境部署及常用模块总结  -  运维笔记
		
一. Ansible 介绍Ansible是一个配置管理系统configuration management system, python 语言是运维人员必须会的语言, ansible 是一个基于py ...
 
随机推荐
- (转) java中try/catch性能和原理
			
stackoverflow上有一个讨论,参与的人还挺多: https://stackoverflow.com/questions/141560/should-try-catch-Go-inside-o ...
 - idea 设置jetty进程jvm参数
			
/** * MyEclipse6.5通过Jetty跑Web应用时提示OutOfMemoryError: PermGen space的解决办法 * @see ---------------------- ...
 - leetcode 题解 || Letter Combinations of a Phone Number 问题
			
problem: Given a digit string, return all possible letter combinations that the number could represe ...
 - AWS RDS mysql无法连接的问题
			
rds创建后,无法连接mysql 检查安全组规则是否配置了 1. 2. 这样你的EC2就可以访问了.如果还不行,检查数据库是否和EC2在同一 VPC内. 官方文档:https://docs.amazo ...
 - CosmosEngine - Unity3D /2D 轻量级游戏开发框架
			
CosmosEngine https://github.com/mr-kelly/CosmosEngine 快速入门 简介 特性 约定 整体架构图 使用经验 工作流 未来功能 快速入门 1.将NGUI ...
 - 滚动锁定 scroll lock 键有什么用?
			
滚动锁定 scroll lock 键有什么用? 中文名称:滚动锁定键 按下此键后在Excel等按上.下键滚动时,会锁定光标而滚动页面:如果放开此键,则按上.下键时会滚动光标而不滚动页面. ...
 - html5:article与section元素
			
article元素 aiticle元素代表文档.页面或应用程序中独立的.完整的.可以肚子被外部引用的内容.它可以使一片博客或报刊中的文章.帖子. 一个article元素 ...
 - Arrays.sort()
			
今天在做一个按更新时间搜寻出某个目录里面的全部文件,因为自己写算法比較花费时间,干脆就用j2se提供的类Arrays提供的sort()方法,这样就比較省力.对于基本数据类型仅仅要Arrays.sort ...
 - hibernate3和4中 HibernateSessionFactory中不同之处 The method applySettings(Map) from the type ServiceRegistryBuilder is  	 deprecated 	- The type ServiceRegistryBuilder is deprecated
			
hibernate3和4中 HibernateSessionFactory中不同之处 //serviceRegistry = new ServiceRegistryBuilder().applySet ...
 - php引用(&)变量引用,函数引用,对象引用和参数引用用法
			
php引用(&)变量引用,函数引用,对象引用和参数引用用法 php的引用(就是在变量或者函数.对象等前面加上&符号) 在PHP 中引用的意思是:不同的名字访问同一个变量内容.与C语 ...