78.Ansible的安裝與配置
安裝
安裝Ansible後,不會在系統中新安裝任何資料庫,也不會新啟動任何守護程序。運維人員只要在一臺機器安裝Ansible,就可以憑Ansible主機單點管理非常多的機器。Ansible管理遠端機器時,不會在遠端機器安裝任何軟體(agentless),所以更新Ansible版本非常方便(不需要在所有遠端機器更新agent軟體版本)。 Windows作業系統無法安裝Ansible。如果使用Red Hat企業版Linux(TM)、Cent OS、Fedora、Debian、Ubuntu,推薦使用作業系統的包管理工具安裝Ansible,以Ubuntu 16.04系統為例:
$ sudo apt-get update
$ sudo apt-get install software-properties-common #安裝add-apt-repository命令列
$ sudo apt-add-repository --yes --update ppa:ansible/ansible #新增ansible/ansible PPA
$ sudo apt-get install ansible
如果使用其他OS,推薦使用pip安裝Ansible:
pip install --user ansible
Ansible主機要求Python版本為Python2.7或Python3(>=3.5)。
如果在Mac系統上遇到檔案描述符數量的限制(Too many open files),可以用sudo launchctl limit maxfiles unlimited
遠端機器依賴: 各個Ansible模組可能有自己獨有的依賴,這需要按照各個模組的手冊在遠端機器提前部署好。
- Python2(>=2.6)或Python3(>=3.5)
- 預設使用sftp。如果要使用scp,需要修改主機
ansible.cfg
中的transfer_method
項的配置。 - 如果遠端機器開啟SELinux,Ansible主機使用
copy
、file
、template
等模組前,需要保證遠端機器安裝了libselinux-python
。 - 預設遠端機器的Python直譯器是
/usr/bin/python
。如果遠端機器上沒有/usr/bin/python
,要麼在遠端機器準備/usr/bin/python
ansible_python_interpreter
,例如:
a.example.com ansible_python_interpreter=/home/mars/bin/python2.6
- Ansible的有些模組無需Python就能執行,比如
raw
。可以用raw
模組在遠端機器安裝Python:ansible example --sudo -m raw -a "yum install -y python2"
。
配置Ansible
Ansible的預設配置一般無需修改。如果要配置個性化引數,Ansible按照如下順序尋找配置檔案,找到後不再繼續尋找:
- ANSIBLE_CONFIG(如何設定了的話)
- ansible.cfg(當前目錄)
- ~/.ansible.cfg(家目錄)
- /etc/ansible/ansible.cfg
ansible.cfg
是INI的變種。註釋的行首的第一個字元可以是#
和;
,如果註釋出現在非行首,必須以;
開頭,例如:
# this is the first comment
inventory=/home/mars/hosts ; this is the second comment
通過包管理器安裝的Ansible的預設配置檔案在/etc/ansible
目錄中。通過pip安裝Ansible,預設配置檔案可以訪問https://raw.githubusercontent.com/ansible/ansible/devel/examples/ansible.cfg獲取,所有配置項的解釋可以參考:https://docs.ansible.com/ansible/latest/reference_appendices/config.html。
ansible-config
命令可以檢視Ansible主機的當前配置。如果通過環境變數設定了某個配置項的值,該配置項在配置檔案中的值不再生效。直接為ansible
、ansible-playbook
命令列提供的引數,優先順序又比環境變數、配置檔案中的值高。