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。