1. 程式人生 > >ansible基礎-安裝與配置

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 主機與主機組

主機和主機組

 

 

 

 

 

 

 

 

 

 

歡迎大家關注我的公眾號: