ansible基礎-安裝與配置
一 安裝
1.1 ansible架構
ansible是一個非常簡單的自動化部署專案,由python編寫並且開源。用於提供自動化雲配置、配置檔案管理、應用部署、服務編排和很多其他的IT自動化需求。
ansible實現的自動化部署是多層次的,通過描述系統之間的邏輯關係來構建業務所需要的基礎架構模型,而不僅僅用於管理一個單獨的系統;也就是說ansible不僅僅能部署一個或多個獨立的服務,它還能對這些服務做關聯、對部署順序做編排等,一個完美的ansible部署專案應該是層次分明、順序有秩的。
另外,ansible是Serverless和Agentless專案,在部署工具準備階段基本上是零成本,而且ansible使用YAML寫playbooks,這使playbook看起來通俗易懂,一目瞭然。
ansible這個後起之秀在開源社群上也是非常火爆的,可以說是部署工具屆的網紅一枚。現在很多很火的開源專案都在使用ansible作為部署工具,例如我熟悉的openstack-ansible、openshift-ansible等等
架構圖:
通過架構圖我們可以看到ansible主要由以下部分組成:
Core Modules
核心模組,每個模組可以看成是一個小程式,用於實現具體的部署動作,也能指定被納管服務的期望狀態。
Custom Modules
自定義模組,與核心模組相似,不同之處在於人家是官方的,自己是民間(自定義)的。
Plugins
是為了增強ansible核心功能的程式碼片段,可以將其看作為一個函式,作用範圍小,很實用。
Inventory
一個檔案(INI型別)或者目錄,主要作用是配置被納管的主機和主機組,如果是目錄也可以放置組變數group_vars和主機變數host_vars
Playbooks
用於存放play,每個play可以對指定的主機或主機組進行批量的部署動作,上面說到的服務的部署、關聯、編排就是在playbook內實現的。
Connection Plugins
控制節點與被納管節點的通訊外掛,linux系統預設使用SSH進行通訊。
1.2 節點安裝
被管理節點安裝
依賴於python環境,python版本應該滿足2.6或2.7或>=3.5與控制節點的通訊服務,通常是sshd服務
控制節點安裝
python環境需求同被管理節點一致,windows不能作為控制節點
支援的作業系統包括但不限於Red Hat, Debian, CentOS, OS X, BSDs
安裝方式根據作業系統的不同而定,比較簡單,以centos為例,配置好yum源後可以通過命令yum install ansible -y進行安裝。其他型別作業系統不一一列舉了,可以參考官方文件https://docs.ansible.com/ansible/latest/installation_guide/intro_installation.html
二 配置檔案
2.1 配置檔案位置
ansible配置檔案可以存放在不同地方,按優先順序由高到低排序:
- 命令列-c 或 --config指定的配置檔案路徑
- 環境變數ANSIBLE_CONFIG
- 執行playbook所在目錄下的ansible.cnf
- 當前執行使用者家目錄下.ansible.cnf(即~/.ansible.cnf)
- 預設配置檔案存放路徑/etc/ansible/ansible.cnf
當我們執行playbook時,ansible會按照上面列表的路徑依次查詢,如果高優先順序的檔案被找到則會被使用。
檢視當前正在使用的配置檔案路徑:
➜ lab-ansible ansible --version ansible 2.5.2 config file = /Users/weim/DevOps/lab-ansible/ansible.cfg configured module search path = [u'/Users/weim/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules'] ansible python module location = /usr/local/Cellar/ansible/2.5.2/libexec/lib/python2.7/site-packages/ansible executable location = /usr/local/bin/ansible python version = 2.7.14 (default, Apr 27 2018, 19:33:14) [GCC 4.2.1 Compatible Apple LLVM 9.0.0 (clang-900.0.37)]
2.2 配置檔案引數
因配置檔案引數太多,下面只列舉一些比較常用的引數;表格中defaults/inventory代表[defaults]章節下的inventory引數,其他依此類推
引數 | 含義 |
defaults/inventory | inventory檔案(夾)路徑,預設值/etc/ansible/hosts |
defaults/roles_path | roles檔案路徑,預設值/etc/ansible/roles |
defaults/remote_user | 指定連線被管理主機的使用者,預設值root |
defaults/forks | 同一時間操作目的主機的數量,預設值5 |
defaluts/remote_port | 目的主機遠端連線的埠,預設值22 |
defaults/timeout | 連線目的主機的超時時間,預設值10 |
privilege_escalation/become | 是否允許當前執行使用者提升許可權,預設值True |
privilege_escalation/become_method | 提權使用的方法,預設值sudo |
privilege_escalation/become_user | 當defaults/remote_user不是root使用者時,該使用者提權後所變成的使用者,預設值root |
privilege_escalation/become_ask_pass | 提權時是否要互動式輸入密碼,預設值False |
三 inventory
3.1 主機與主機組
主機和主機組
歡迎大家關注我的公眾號: