文章目錄
一、Ansible介紹
Ansible是一個簡單的自動化運維管理工具,基於Python語言實現,由Paramiko和PyYAML兩個關鍵模塊構建,可用於自動化部署應用、配置、編排task(持續交付、無宕機更新等)
1.1 ansible基礎架構
- **Ansible:**Ansible核心程序。
- **HostInventory:**記錄由Ansible管理的主機信息,包括端口、密碼、ip等。
- Playbooks:“劇本”YAML格式文件,多個任務定義在一個文件中,定義主機需要調用哪些模塊來完成的功能。
- CoreModules:核心模塊,主要操作是通過調用核心模塊來完成管理任務。
- CustomModules:自定義模塊,完成核心模塊無法完成的功能,支持多種語言
- ConnectionPlugins:連接插件,Ansible和Host通信使用
二、環境部署
1、實驗環境
這裏我準備了兩臺centos7的虛擬機,一臺ip爲192.168.189.129作爲管理端,另一臺192.168.189.134作爲被管理端,可以先對他們的主機名稱修改,便於實驗時識別
#192.168.189.129
hostnamectl set-hostname ansible_center
#192.168.189.134
hostnamectl set-hostname ansible_node1
2、安裝
ansible安裝常用兩種方式,yum安裝
和pip程序安裝
。下面我們來詳細介紹一下這兩種安裝方式。
使用 pip(python的包管理模塊)安裝
首先,我們需要安裝一個python-pip
包,安裝完成以後,則直接使用pip
命令來安裝我們的包,具體操作過程如下:
yum install python-pip -y
pip install ansible
使用 yum 安裝
yum install ansible –y
3、密鑰部署
使用密鑰部署可以讓 center免密登錄遠程主機,該操作在管理端center進行
4、配置文件(/etc/ansible)詳解
4.1 主配置文件 ansible.cfg
ansible 有許多參數,下面我們列出一些常見的參數:
inventory = /etc/ansible/hosts #這個參數表示資源清單inventory文件的位置
library = /usr/share/ansible #指向存放Ansible模塊的目錄,支持多個目錄方式,只要用冒號(:)隔開就可以
forks = 5 #併發連接數,默認爲5
sudo_user = root #設置默認執行命令的用戶
remote_port = 22 #指定連接被管節點的管理端口,默認爲22端口,建議修改,能夠更加安全
host_key_checking = False #設置是否檢查SSH主機的密鑰,值爲True/False。關閉後第一次連接不會提示配置實例
timeout = 60 #設置SSH連接的超時時間,單位爲秒
log_path = /var/log/ansible.log #指定一個存儲ansible日誌的文件(默認不記錄日誌)
4.2 主機&主機組定義文件 hosts
該文件保存的是一些 ansible 需要連接管理的主機列表。定義方式如下:
#1、 直接指明主機地址或主機名:
192.168.189.134
#2、 定義一個主機組[組名]把地址或主機名加進去
[test]
192.168.189.134
192.168.189.130
4.3 roles 角色目錄
5、常用命令
5.1 ansible-doc
ansible-doc 命令常用於獲取模塊信息及其使用幫助,一般用法如下:
ansible-doc -l #獲取全部模塊的信息
ansible-doc MOD_NAME #獲取指定模塊的使用幫助
ansible-doc -s MOD_NAME #只顯示模塊關鍵參數
ansible-doc的全部用法:
[root@server ~]# ansible-doc
Usage: ansible-doc [options] [module...]
Options:
-h, --help show this help message and exit # 顯示命令參數API文檔
-l, --list List available modules #列出可用的模塊
-M MODULE_PATH, --module-path=MODULE_PATH #指定模塊的路徑
specify path(s) to module library (default=None)
-s, --snippet Show playbook snippet for specified module(s) #顯示playbook制定模塊的用法
-v, --verbose verbose mode (-vvv for more, -vvvv to enable # 顯示ansible-doc的版本號查看模塊列表:
connection debugging)
--version show program's version number and exit
5.2 ansible
命令的具體格式如下:
ansible <host-pattern> [-f forks] [-m module_name] [-a args]
也可以通過ansible -h
來查看幫助,下面我們列出一些比較常用的選項,並解釋其含義:
-a MODULE_ARGS
#模塊的參數,如果執行默認COMMAND的模塊,即是命令參數,如: “date”,“pwd”等等
-k
,--ask-pass
#ask for SSH password。登錄密碼,提示輸入SSH密碼而不是假設基於密鑰的驗證
--ask-su-pass
#ask for su password。su切換密碼
-K
,--ask-sudo-pass
#ask for sudo password。提示密碼使用sudo,sudo表示提權操作
--ask-vault-pass
#ask for vault password。假設我們設定了加密的密碼,則用該選項進行訪問
-B SECONDS
#後臺運行超時時間
-C
#模擬運行環境並進行預運行,可以進行查錯測試
-c CONNECTION
#連接類型使用
-f FORKS
#並行任務數,默認爲5
-i INVENTORY
#指定主機清單的路徑,默認爲/etc/ansible/hosts
--list-hosts
#查看有哪些主機組
-m MODULE_NAME
#執行模塊的名字,默認使用 command 模塊,所以如果是隻執行單一命令可以不用 -m參數
-o
#壓縮輸出,嘗試將所有結果在一行輸出,一般針對收集工具使用
-S
#用 su 命令
-R SU_USER
#指定 su 的用戶,默認爲 root 用戶
-s
#用 sudo 命令
-U SUDO_USER
#指定 sudo 到哪個用戶,默認爲 root 用戶
-T TIMEOUT
#指定 ssh 默認超時時間,默認爲10s,也可在配置文件中修改
-u REMOTE_USER
#遠程用戶,默認爲 root 用戶
-v
#查看詳細信息,同時支持-vvv
,-vvvv
可查看更詳細信息
5.3 ansible-playbook
該命令用來執行劇本
默認爲10s,也可在配置文件中修改
-u REMOTE_USER
#遠程用戶,默認爲 root 用戶
-v
#查看詳細信息,同時支持-vvv
,-vvvv
可查看更詳細信息
5.3 ansible-playbook
該命令用來執行劇本