一. Ansible的安裝
1.1 搭建epel源
編輯/etc/yum.repos.d/xxx.repo

1.2 搭建好后搜索ansible

1.3 安裝:
dnf install ansible.noarch
二. 用rpm包安裝ansible
2.1 ansible-2.9.11-1.el8.noarch
ansible rpm安裝包
提取碼:lx9z
2.2 sshpass-1.06-9.el8.x86_64
sshpass rpm安裝包
提取碼:5zm7
2.3 下載好之后將兩個安裝包匯入虛擬機中

2.4 開始解壓
unzip解壓兩個安裝包

解壓完成后開始安裝

注意:安裝時當檔案存在依賴性時,用dnf命令安裝依賴性檔案
或者用rpm忽略依賴性

三. ansible的基本資訊
| /etc/ansible/ansible.conf | 全域組態檔,默認很少修改 |
|---|---|
| /etc/ansible/hosts | 全域主機清單清單檔案 |
四. 構建ansible清單
清單就是ansible控制主機的串列
/etc/ansible/hosts ##全域清單檔案
4.1 直接書寫受管主機名或ip,每行一個
直接在清單中書寫
vim /etc/ansible/hosts
注意:在清單中可以填寫ip和主機名稱

測驗:
在測驗時在你的ansible主機中做好相應的決議
vim /etc/hosts

ansible-inventory all --list 查看清單

ansible all --list-hosts
顯示所有串列
格式:ansible list_name --list-hosts

ansible node1.westos.com --list-hosts
顯示node1.westos.com在哪一個組中

主機規格的范圍化操作
通過指定主機名稱或IP的范圍可以簡化Ansible主機清單
語法:
[start:end]

測驗:
:相當于從哪里到哪里

4.2 設定受管主機的組[組名稱]
vim /etc/ansible/hosts
注意:當有沒有分組的ip或者主機名要寫到開頭處,寫道末尾默認為最后一個清單

測驗:
ansible westos_list1 --list-hosts

ansible westos_list4 --list-hosts 嵌套清單

注意:當顯示的為嵌套清單時嵌套清單中的所有都會顯示出來
ansible ungrouped --list-hosts 不在任何組中的

ansible-inventory --list 顯示層級結構

4.3 指定其他清單檔案
vim inventory

測驗:
ansible westos_list1 -i /mnt/inventory --list-hosts
查看inventory中westos_list1的清單

五. ansible命令指定清單的正則運算式
5.1
* 表示所有
ansible 172.25.254. -i /mnt/inventory --list-hosts*
顯示inventory中符合172.25.254.*的所有條件

5.2
: 邏輯或
ansible westos_list1:westos_list2 -i /mnt/inventory --list-hosts
顯示inventory中westos_list1和westos_list2中的所有條件

5.3
:& 邏輯與
ansible “westos_list1:&westos_list2” -i /mnt/inventory --list-hosts
顯示inventory中westos_list1和westos_list2中共有的所有條件

5.4
:! 邏輯非
ansible ‘westos_list1:!westos_list2’ -i /mnt/inventory --list-hosts
顯示inventory中westos_list1中有卻westos_list2中沒有的所有條件

5.5
~ 以關鍵字開頭
ansible ~westos -i /mnt/inventory --list-hosts
顯示inventory中以westos開頭的所有清單

~(str1|str2) 以條件1或者條件2開頭
ansible ‘~(westos|192)’ -i /mnt/inventory --list-hosts
顯示inventory中以westos和192開頭的所有清單

六. Ansible組態檔引數詳解
ansible-doc -l
列出ansible的所有指令
注意:ansible一共有3387個指令

ansible 清單中組名稱 -m 模塊 -u remote_user
6.1 組態檔的分類與優先級
| /etc/ansible/ansible.cfg | 基本組態檔,找不到其他組態檔此檔案生效 |
|---|---|
| ~/.ansible.cfg | 用戶當前目錄中沒有ansible.cfg此檔案生效 |
| ./ansible.cfg | 優先級最高 |
vim /etc/ansible/ansible.cfg
編輯主組態檔

測驗:
連接成功

6.2 常用配置引數
| [default] | 基本資訊設定 |
|---|---|
| inventory= | 指定清單路徑 |
| remote_user= | 在受管主機上登陸的用戶名稱,未指定使用當前用戶 |
| ask_pass= | 是否提示輸入SSH密碼,如果公鑰登陸設定為false |
| library= | 庫檔案存放目錄 |
| local_tmp= | 本機臨時命令執行目錄 |
| remote_tmp= | 遠程主機臨時py命令檔案存放目錄 |
| forks= | 默認并發數量 |
| host_key_checking= | 第一次連接受管主機時是否要輸入yes建立host_key |
| sudo_user= | 默認sudo用戶 |
| ask_sudo_pass= | 每次在受控主機執行ansible命令時是否詢問sudo密碼 |
| module_name= | 默認模塊,默認使用command,可以修改為shell |
| log_path= | 日志檔案路徑 |
測驗:
編輯組態檔
vim /etc/ansible/ansible.cfg
remote_user=zyj
當不加用戶登陸時默認用戶為zyj

測驗修改結果

inventory=
指定清單路徑
指定清單路徑為/mnt/inventory

測驗修改結果

ask_pass=
是否提示輸入SSH密碼,如果公鑰登陸設定為false

修改后測驗對比:

當兩個主機間建立免密登陸時

當ask_pass=True時

測驗:
注意:當還為True時還需要輸入密碼才可以登錄

修改ask_pass=False時

測驗:
注意:不需要輸入密碼

module_name=
默認模塊,默認使用command,可以修改為shell

測驗:

修改默認為shell

測驗:

library=
庫檔案存放目錄
修改庫檔案存放目錄為/tmp

測驗:

local_tmp=
本機臨時命令執行目錄

測驗:

script表示在遠程主機中執行命令
當關閉時臨時也會消失

remote_tmp=
遠程主機臨時py命令檔案存放目錄

sudo_user=
默認sudo用戶
給普通用戶下方權限

測驗:
注意:這里第一個become相當于sudo

編輯組態檔使其簡化
| [privilege_escalation] | 身份資訊設定 |
|---|---|
| become= | 連接后是否自動切換用戶 |
| become_method= | 設定切換用戶的方式,通常用sudo |
| become_user= | 在受管主機中切換到的用戶,通常為root |
| become_ask_pass | 是否需要為become_method提示輸入密碼,默認為false |

測驗:

七. 構建用戶及ansible操作環境
cp /etc/ansible/ansible.cfg .
復制/etc/ansible/ansible.cfg到當前目錄

編輯組態檔(將沒有用的資料洗掉,洗掉之后的將按照默認操作)
注意:在當前目錄下的ansible.cfg優先讀取
vim ansible.cfg

修改默認訪問目錄為當前目錄的inventory并編輯

測驗:

END BYE
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/9250.html
標籤:其他
上一篇:Linux檔案操作命令大全
