1. 程式人生 > >78.Ansible的安裝與配置

78.Ansible的安裝與配置

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主機使用copyfiletemplate等模組前,需要保證遠端機器安裝了libselinux-python
  • 預設遠端機器的Python直譯器是/usr/bin/python。如果遠端機器上沒有/usr/bin/python,要麼在遠端機器準備/usr/bin/python
    的環境,要麼在Ansible主機的機器列表定義指定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按照如下順序尋找配置檔案,找到後不再繼續尋找:

  1. ANSIBLE_CONFIG(如何設定了的話)
  2. ansible.cfg(當前目錄)
  3. ~/.ansible.cfg(家目錄)
  4. /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主機的當前配置。如果通過環境變數設定了某個配置項的值,該配置項在配置檔案中的值不再生效。直接為ansibleansible-playbook命令列提供的引數,優先順序又比環境變數、配置檔案中的值高。