Error: ssh encountered an unknown error during the connection
====当前账号与ssh公钥验证账号不一致
a、每个主机记录后面加上 ansible_ssh_user=user。
b、-u user进行连接
配置公私钥认证
ssh-keygen -t rsa #生成秘钥
ssh-copy-id username@主机名或IP地址 ##向主机分发秘钥
非root账号操作
ansible_su_pass=
ansible -S
ansible-doc命令
ansible-doc -l 获取模块信息
ansible-doc -s MOD_NAME 获取指定模块的使用帮助
ansible playbook
1、Playbooks是Ansible的配置,部署和编排语言。它们可以描述您希望远程系统执行的策略,或一般IT流程中的一组步骤。
-Playbooks 语言是以YAML 格式表示
-YAML 语法:
a.对于Ansible来说,几乎每个YAML文件都以列表开头。列表中的每个项目是 键/值对的列表,通常称为“列表”或“字典”。
b.还有一个地方,每个文件都是以 - 开始,以 ... 结尾。
c.列表中所有的词都是 - (减号和空格)开头的相同缩进的行。
d.字典以简单的形式表示 key: value (冒号后面必须跟一个空格),不能使用tab 键。
e.也有复杂的数据结构,例如带有字典的列表。
f.区分大小写,如果在 key:value 里,value里面有冒号,需要用 “” 号将 整个value 包围住。
命令格式
ansible <target> -m <module> -a <arguments>
测试被控端是否正常
ansible all -m ping
group
/etc/ansible/hosts
[group_name]
host:port
copy模块
ansible all -m copy -a "src=/tmp/file dest=/tmp mode=777"
copy:复制文件到远程主机,可以改权限等
(1) 复制文件
-a "src= dest= "
(2) 给定内容生成文件
-a "content= dest= "
(3)设置权限mode
mode=700
shell模块
ansible all -m shell -a "ifconfig"
shell模块在远程主机上调用shell解释器运行命令,支持shell的各种功能,例如管道
winrm模块
1、ansible上安装控制Windows的组件
sudo apt-get install libkrb5-dev ##安装kerberos依赖组件
sudo pip install kerberos
sudo pip install pywinrm
2、windows安装Framework(最低3.0) PowerShell(3.0以上)
3、更改powershell策略为remotesigned
set-executionpolicy remotesigned ##get-executionpolicy 查看当前设置
4、设置Windows远端管理(WS-Management,WinRM)
winrm enumerate winrm/config/listener ##查看状态,或者直接看服务有没有启动
winrm quickconfig ##基础设置,并启动服务(不启用防火墙)
winrm set winrm/config/service/auth '@{Basic="true"}' ##配置auth验证模式
winrm set winrm/config/service '@{AllowUnencrypted="true"}' ##配置加密方式为允许非加密
5、ansible添加主机
192.168.1.11 ansible_ssh_user="Administrator" ansible_ssh_pass="123456" ansible_ssh_port=5985 ansible_connection="winrm"
###端口方面ssl即https方式的使用5986,http使用5985。