環境聲明
- Vmware虛擬主機 Ansible服務器 Centos7.7
- Azure虛擬機 Ansible客戶機 Centos7.7
- 阿里雲 ECS Ansible客戶機 Centos7.7
- Aws EC2 Ansible客戶機 Centos7.7
Ansible模塊
藉助ssh協議,Ansible實現了ansible服務器與客戶機之間的通信,基於各個模塊完成所需的各種功能。本文將介紹常用的模塊及用法。
在開始實踐各項功能之前,請確保您已經在主機配置清單中配置好了主機的連接信息,以方便進行下面的實踐。
Ansible常用模塊包括shell模塊、複製模塊、用戶模塊、軟件包管理、服務模塊、文件模塊、收集模塊等。
如果需要獲取模塊的詳細用法,可以使用ansible-doc [模塊名]獲取詳細信息
- shell模塊
shell模塊的標識符爲shell,語句結構爲
ansible [操作對象] -m shell -a '[操作語句]'
操作語句與普通shell語句語法類似
舉例`:安裝apache
ansible host2 -m shell -a 'yum -y install httpd' -o
獲取負載均衡信息
ansible host2 -m shell -a 'uptime' -o
- 複製模塊
複製模塊的標識符爲copy,語法結構爲
ansible [操作對象] -m copy -a '操作語句'
操作語句結構參數化,類似變量的聲明與賦值,可選參數
src=源地址變更
owner=屬主
group=屬組
mode=權限
更多參數可以參考ansible-doc copy
舉例:複製文件/etc/file1到/tmp/file2`
ansible host1 -m copy -a 'src=/etc/file1=/tmp/file2 mode=777 owner=root'`
- 用戶模塊
用戶模塊的標識符爲user,語法結構爲
ansible [操作對象] -m user -a '操作語句
操作語句參數化,類似變量聲明與賦值,常見可選參數
name=用戶名
state=操作類型
password=加密後的密碼
更多參數可以參考ansible-doc user
舉例:創建用戶
ansible host1 -m user -a 'name=test state=present password=[加密後的密碼]'
計算加密密碼`
echo '明文密碼''openssl passwd -1 -stdin`
- 軟件包管理模塊
以Centos的yum安裝爲例,標識符爲yum,語法結構爲
ansible [操作對象] -m yum -a '操作語句'
操作語句參數化,類似變量聲明與賦值,常見可選參數
name=軟件包名
state=版本
更多參數可以參考ansible-doc yum
舉例:安裝httpd
ansible host2 -m yum -a 'name="httpd" state=latest'`
- 服務模塊
服務模塊標識符爲service,語法結構爲
ansible [操作對象] -m service -a '操作語句'
操作語句參數化,類似變量聲明與賦值,常見可選參數
name=服務名
state=操作符
更多可選參數可以參考ansible-doc service
舉例:啓動httpd並設置開機自啓動
ansible host2 -m service -a 'name=httpd state=started enabled=no'`
- 文件模塊
文件模塊標識符爲file,語法結構爲
ansible [操作對象] -m file -a '
操作語句操作語句參數化,類似變量聲明與賦值,常見可選參數
path=文件名
state=操作符
更多可選參數可以參考ansible-doc file
舉例:創建權限爲777的文件/tmp/test.txt
ansible host1 -m file -a 'path=/tmp/test.txt mode=777 state=touch'
- 收集模塊
文件操作標識符爲setup,語法結構爲
ansible [操作對象] -m setup '[操作語句]'
操作語句爲空,獲取所有信息
使用filter=變量名可獲取指定信息
更多可選參數可以參考ansible-doc setup
舉例:獲取Ipv4地址
ansible host1 -m setup -a 'filter=ansible_all_ipv4_addresses'
總結
- Ansible的操作基於模塊工作,每個模塊的工作方式可以使用"ansible-doc [模塊]"來查詢
- shell模塊類似於萬能模塊,能夠實現其他模塊的各種功能。但是其他模塊操作語句參數化的處理,能夠使得操作更加明晰。同時爲接下來使用YAML語言編寫劇本提供了幫助。
個人博客同步更新