Ansible 原始碼搭建配置
近期在學習自動化運維相關技術,文章主要模擬內網情況下對Ansible的安裝演示,原始碼安裝較為繁瑣、枯燥,尤其是在實際安裝過程中可能出現各式各樣的問題,所有在安裝過程中儘量保持與我演示的環境、安裝版本一致。
1.環境準備
實驗伺服器準備
# 伺服器端
192.168.238.134
# 被控端
192.168.238.135
192.168.238.136
系統版本
cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)
核心版本
uname -r
3.10.0-1160.31.1.el7.x86_64
準備依賴包環境
安裝python-devel和openssl-devel
yum -y install python-devel openssl-devel libffi-devel
下載原始碼包檔案到自定義檔案目錄
https://releases.ansible.com/ansible/ (ansible 官網下載地址)
https://pypi.org/ (模組包下載地址)
2.ansible 基本架構圖
2.1Ansible架構簡介
1.主機群(Host Inventory):定義ansible管理的主機
2.劇本(Playbooks):ansible的任務配置檔案,將多個任務定義在劇本中,由ansible自動執行
3.核心模組 (core modules)連線主機實現操作,它依賴於具體的模組來做具體的事情
4.擴充套件模組 (custom modules),根據自己的需求編寫具體的模組
5.外掛(Plugins):完成模組功能的補充
6.連線外掛(Connectior Plugins):ansible基於連線外掛連線到各個主機上,雖然ansible是使用ssh連線到各個主機的,但是它還支援其他的連線方法,所以需要有連線外掛
2.1Ansible 特點
1.不需要代理,不需要客戶端
2.沒有伺服器端,使用時直接使用命令
3.基於模組工作
4.預設基於ssh工作
5.支援YAML定義劇本
3.依次解壓、安裝原始碼包檔案
注:安裝過程中請依次進行如下順序安裝
安裝 setuptools
unzip setuptools-41.0.1.zip
cd setuptools-41.0.1
python setup.py install
安裝pycrypto
tar -xzf pycrypto-2.6.1.tar.gz
cd pycrypto-2.6.1
python setup.py install
安裝 PyYAML
tar -xzf PyYAML-5.1.tar.gz
cd PyYAML-5.1
python setup.py install
安裝MarkupSafe
tar -xzf MarkupSafe-1.1.1.tar.gz
cd MarkupSafe-1.1.1
python setup.py install
安裝Jinja2
tar -xzf Jinja2-2.10.1.tar.gz
cd Jinja2-2.10.1
python setup.py install
安裝ecdsa
tar -xzf ecdsa-0.13.2.tar.gz
cd ecdsa-0.13.2
python setup.py install
安裝simplejson
tar -xzf simplejson-3.16.0.tar.gz
cd simplejson-3.16.0
python setup.py install
安裝pycparser
tar -xzf pycparser-2.19.tar.gz
cd pycparser-2.19
python setup.py install
安裝cffi
tar -xzf cffi-1.12.3.tar.gz
cd cffi-1.12.3
python setup.py install
安裝ipaddress
tar -xzf ipaddress-1.0.22.tar.gz
cd ipaddress-1.0.22
python setup.py install
安裝six
tar -xzf six-1.12.0.tar.gz
cd six-1.12.0
python setup.py install
安裝asn1crypto
tar -xzf asn1crypto-0.24.0.tar.gz
cd asn1crypto-0.24.0
python setup.py install
安裝pyasn1
tar -xzf pyasn1-0.4.5.tar.gz
cd pyasn1-0.4.5
python setup.py install
安裝PyNaCl
tar -xzf PyNaCl-1.3.0.tar.gz
cd PyNaCl-1.3.0
python setup.py install
安裝cryptography
tar -xzf cryptography-2.6.1.tar.gz
cd cryptography-2.6.1
python setup.py install
安裝paramiko
tar -xzf paramiko-2.4.2.tar.gz
cd paramiko-2.4.2
python setup.py install
安裝ansible
tar -xzf ansible-latest.tar.gz
cd ansible-2.7.10/
python setup.py install
安裝完成後,檢查檢視ansible版本
ansible --version
4.生成金鑰檔案配置主機互信
ssh-keygen -t rsa
# 執行上述命令無需進行其它操作,一直點選Enter鍵即可
注:生成之後會在使用者的根目錄生成一個 “.ssh”的資料夾(使用 ls -a或 ll -a 命令可檢視)
檔案說明:
id_rsa : 生成的私鑰檔案
id_rsa.pub :生成的公鑰檔案
know_hosts : 已知的主機公鑰清單
如果希望ssh公鑰生效需滿足至少下面兩個條件:
(1).ssh目錄的許可權必須是700
(2).ssh/authorized_keys檔案許可權必須是600
4.1配置主機互信
將本機公鑰分發到其它被控制主機伺服器
使用ssh-copy-id 命令實現公鑰分發(也可使用其它命令如:scp命令)
ssh-copy-id root@192.168.238.135
ssh-copy-id root@192.168.238.136
注:如執行ssh-copy-id時報錯提示命令不存在,解決辦法參考下述,也可使用scp命令進行公鑰分發
yum -y install openssh-clients
5.Ansible 配置
5.1修改配置檔案
複製示例檔案為配置檔案
mkdir /etc/ansible
cp -r /usr/local/ansible/examples/* /etc/ansible/
將所有被管理的主機加入到/etc/ansible/hosts檔案中
1.1可以將所有主機寫入此檔案,那麼此後所做的操作就會影響所有寫入的主機;
1.2可以以[主機組名]的方式定義屬於同一組的所有主機,如定義[test]段,將所有的web主機的IP或者主機名寫入段中,此後就可以用ansible實施諸如servicehttpdstatus等僅對web主機所做的操作了,而其他主機則不會受影響,當然一個組中的主機也可以在其他組中出現,不一定每個組中的主機都不相同;
1.3可以用萬用字元的方式定義,如node[1:3].a.com,表示定義了node1.a.com node2..a.com和node3.a.com三臺主機;
1.4可以直接寫入主機IP,也可以寫入主機名,但是必須保證能解析這些主機名;
這裡我專門新增了一個未使用的伺服器IP(192.168.238.137)方便我們下述測試中觀察可達節點及不可達節點之間區別
5.2測試ansible受管節點是否可達
ansible test -m ping # 執行ping命令對test 組進行存活檢測,如對所有組進行檢測可使用 all替換test
6.Ansible 命令格式
ansible命令格式:
ansible <host-pattern> [-m module_name] [-a args] [options]
<host-pattern> :指定主機組或IP
[-m module_name] : 指定呼叫模組
[-a args] [options] : 傳遞給模組的引數
6.1Ansible常用命令
ansible test --list-hosts # 列出執行主機列表
ansible-doc -l # 檢視所有模組 (鍵入q退出)
ansible-doc command # 檢視command模組詳細資訊
ansible-doc -s command # 檢視command模組詳細用法
ansible test -m command -a 'df -h' # 對所有被控伺服器使用df -h 命令
ansible web -m command -a 'useradd Tom' # 批量新增使用者
想系統瞭解Ansible的同學也可以參考下如下連結文章
(http://www.ansible.com.cn/docs/intro_installation.html) (Ansible 中文指南)
(http://www.178linux.com/79792)(Ansible 相關文章)