Linux 原始碼安裝Ansible 參考篇

藥罐發表於2022-02-14

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 相關文章)

相關文章