1. 程式人生 > >ansible 踩坑總結

ansible 踩坑總結

define 解決 stderr 1.2 就會 most 2.0 命令 host

12報錯
12.1 libselinux-python aren’t installed
[root@pythion ~]# yum -y install libselinux-python
有時候這個包需要在所管理的機器上安裝,要不然就會報錯
技術分享圖片
12.2 failed to resolve remote temporary directory from ansible-tmp
這個問題google了好多,發現這個問題是個通病,會隨機的出現如下錯誤
技術分享圖片
2.0和2.1的版本都會有這種問題,但是在烏班圖系統上可能會好點,網友提供了個方法,比如,加參數,這個貌似在烏班圖上有用,但是在centos上不行
[root@rsync ~]# ansible other1024 -i /etc/ansible/hosts -m ping --ssh-extra-args="-o ControlMaster=no -o ControlPath=none -o ControlPersist=no"
但是還是會報如下錯誤
技術分享圖片
最後百度了國人的一篇文章,說是升級openssh就可以了
然後自己執行一下命令,問題解決了
yum -y install openssh*
12.3 Authentication or permission failure
老是報下邊的這個錯誤,我記得以前是通的了,怎麽現在不通了
技術分享圖片
後來查看磁盤空間的時候,發現磁盤空間滿了,將所在安裝目錄空間清空以後,就可以了
技術分享圖片
技術分享圖片

12.4 Cannot retrieve repository metadata
[root@rsync yml]# yum --disablerepo=epel -y update ca-certificates //需要更新ca證書

技術分享圖片
12.5 Failed to connect to the host via ssh.
176.27.1.205 | UNREACHABLE! => {
"changed": false,
"msg": "Failed to connect to the host via ssh.",
"unreachable": true
}
造成這個問題的原因有很多種,而且需要提供更為詳細的信息,這個報錯是無法判斷錯誤出在哪裏的。
遇到這個問題很困惑,查了很多資料都無法解決,網友說可以升級ansible試試,所以我就使用yum升級了下ansible
[root@rsync ~]# ansible 176.27.1.205 -m command -a "date"
然後執行命令的時候,仍然失敗,但是相比之前的報錯,這次ansible給出了很明確的報錯信息,如下
176.27.1.205 | UNREACHABLE! => {
"changed": false,
"msg": "Failed to connect to the host via ssh: ssh: connect to host 176.27.1.205 port 22: Connection refused\r\n",
"unreachable": true
}
於是檢查配置文件信息,確實端口不對,重新設置端口後成功
[root@rsync ~]# ansible 176.27.1.205 -m command -a "date"
176.27.1.205 | SUCCESS | rc=0 >>
2017年 01月 16日 星期一 15:07:50 CST
12.6關鍵字寫錯
如果yml文件有語法錯誤,這個是關鍵字hosts寫成了host,那麽則不會執行,如下
技術分享圖片
12.7後邊沒有空格
這是因為:後邊沒有空開一行,所以報錯
技術分享圖片
12.8磁盤空間已滿
會提示如下報錯
172.168.0.6 | FAILED! => {
"changed": false,
"checksum": "ad052d5c834bb9fa98202f3836f1bf9e4fcc958a",
"failed": true,
"module_stderr": "Shared connection to 172.168.0.6 closed.\r\n",
"module_stdout": "Traceback (most recent call last):\r\n File \"/tmp/ansible_e3s2ku/ansible_module_copy.py\", line 364, in <module>\r\n main()\r\n File \"/tmp/ansible_e3s2ku/ansible_module_copy.py\", line 343, in main\r\n module.atomic_move(b_mysrc, dest, unsafe_writes=module.params[‘unsafe_writes‘])\r\n File \"/tmp/ansible_e3s2ku/ansible_modlib.zip/ansible/module_utils/basic.py\", line 2003, in atomic_move\r\nNameError: global name ‘exception‘ is not defined\r\n",
"msg": "MODULE FAILURE"
12.9 filebeat服務起來了,但是端口沒起來
京區十幾臺服務器,但是總有那麽幾個中心filebeat服務起來了,但是端口就是沒有起來。重啟了無數遍,看了配置文件,感覺沒什麽改的。後來,看收集的日誌,原來是日誌沒有進行讀寫,因為tmooc受到***,所以關了服務器。沒有訪問日誌,所有就沒有起端口進行連接,只要有日誌寫進去,就會起端口連接
12.10報錯
執行task有錯誤,導致下邊的也無法執行,增加忽略錯誤即可
ignore_errors: True
12.11 shell報錯
在本地執行的命令取出來東西後,放到playbook中怎麽都取不出來,發現確實還需要調整,不能本地執行成功的直接放到腳本裏,下邊這個就是在本地$3,在腳本就得取$4
shell: /bin/stat ‘{{remote_go_dir}}‘/{{project}}/{{appname}}| head -1| awk ‘{print $4}‘|sed ‘s/^.//‘|sed ‘s/.$//‘
12.12 變量問題
使用vars定義了變量 Env,然後在執行過程中,老不能取出來這個值,但是其它的變量沒有問題,然後使用了其它的變量就可以了
12.13 輸出打印問題
老輸出的是那種一坨,不是我想要的分開的那種,有人說用strdout_lines可以,但是我這邊並不行

ansible 踩坑總結