ansible系列第二篇(模塊使用)
-
模塊使用
- 設置ansible提權
在hosts文件加入sudo提權的密碼:
18.18.23.102 ansible_become_pass=‘passwd‘
執行:
ansible test -S -R root -m shell -a "ls -l /"
- 查看ansible有那些模塊:
ansible-doc -l
-
獲取各個模塊詳細幫助信息
ansible-doc -s ping
- ping模塊:
ansible test -m ping
- 從受控主機拉取文件:
調用模塊並傳入模塊所需要的參數
ansible test -m fetch -a "src=/etc/passwd dest=/automation/matchine"
ansible會自動在管控端創建各個主機對應的目錄。
-
文件操作模塊
查看模塊的幫助方式: ansible-doc -s modulename
-
copy模塊
-
常用參數
src參數: copy文件或目錄。
dest參數: 指定文件被拷貝到遠程主機的哪個目錄中。
content參數: 使用content直接指定文件內容。
force參數: 默認值yes,覆蓋。為no時,不執行覆蓋操作。
backup參數: yes,先備份,再拷貝文件到遠程主機。
mode參數: 文件權限。
owner參數: 文件屬主。
group參數: 文件屬組。
-
file模塊
-
常用參數:
path參數: 指定文件或目錄。
state參數: absent,刪除文件或目錄。touch文件,link創建軟鏈接文件。
recurse參數: yes時可遞歸修改目錄中文件的屬性。
例如: 創建test.txt文件: ansible test -m file -a "path=/home/yuan/test.txt state=touch" ansible test -S -R root -m file -a "path=/opt/abc.txt state=touch" 刪除test.txt文件: ansible test -m file -a "path=/home/yuan/test.txt state=absent" ansible test -S -R root -m file -a "path=/opt/abc.txt state=absent" 創建目錄hello: ansible test -m file -a "path=/home/yuan/hello state=directory" 創建軟鏈接文件: 軟鏈接名為go, ansible test -m file "path=/home/yuan/bin/linkfile state=link src=/home/yuan/services/go/bin/gofile" 遞歸創建目錄並遞歸修改屬主和屬組: ansible test -S -R root -m file -a "path=/abc/test/aaa state=directory owner=yuan group=yuan recurse=yes"
- blockinfile模塊
在指定文件插入文本.
-
常用參數:
path:文件路徑
block: 指定文本
state: 執行插入,更新,刪除操作。
backup: 是否在修改文件之前對文件進行備份。
create: 文件不存在,是否創建文件。
- lineinfile模塊
查看一行文本是否存在於指定文件中或從文件中刪除指定文本。
- find模塊:
在被控機查找符合條件的文件。
-
常用參數:
paths: 在哪個目錄查找。
recurse: 遞歸查找。
hidden: yes時可查找隱藏文件。
file_type: 指定文件類型。
patterns:通配符或正則表達式匹配文件。
contains: 根據文章內容查找文件。
age: 根據時間範圍查找文件。
size: 根據文件大小查找文件。
- replace模塊:
根據指定的正則表達式替換文件中的字符串。
-
-
命令行模塊:
- command模塊:
在被控機上執行命令。
-
參數:
free_form:指定遠程執行命令
chdir: 指定一個目錄。
creates: 指定文件存在就不執行。
removes: 指定文件不存在,就不執行對應命令。
- shell模塊
在被控機執行命令時,會經過被控機的/bin/sh程序處理。
- script模塊
在被控機上執行管控機上的腳本。
參數和command模塊類似。
例如: $ ansible test -m script -a "/home/yuan/abc.sh"
-
系統類模塊
- cron模塊
管理被控機的計劃任務。
-
參數:
minute: 設定分鐘。
hours: 設定小時。
day: 設定天數
month: 設定月
weekday: 設定周幾
special_time: @開頭的時間設定格式使用該參數設置。可用值:reboot,yearly或annually(每年),monthly(每月),weekly(每周),daily(每天),hourly(每小時).
user: 設置計劃任務屬於哪個用戶。
job: 指定任務中需要執行的命令或腳本。
name: 設置計劃任務名稱。
state: 根據任務名稱修改或刪除任務。
例如: 給普通用戶設置計劃任務: ansible test -m cron -a "name=‘echo‘ minute=1 hour=* job=‘echo xiao3 >> /home/yuan/abc.txt‘" 配置重啟時執行該計劃任務: ansible test -S -R root -m cron -a "name=‘reboot‘ special_time=reboot job=‘echo reboot xiao3 >> /home/yuan/abc.txt‘" 刪除計劃任務: ansible test -S -R root -m cron -a "name=‘reboot‘ state=absent"
- service模塊
管理被控機的服務。service模塊和systemd模塊類似。
-
參數:
name: 服務名稱
state: 指定服務的狀態。started,stopped,restarted,reloaded.
enabled: 指定是否將服務設置為開機自啟。
例如: 啟動mysql服務: ansible test -S -R root -m systemd -a "name=mysql state=started 設置開機自啟: ansible test -S -R root -m systemd -a "name=mysql enabled=yes"
- user模塊:
管理被控機的用戶。 - group模塊:
管理被控機的組。
-
包管理模塊:
- yum_repository模塊
管理被控機為centos系列的yum倉庫。 - yum模塊:
在被控機為centos系列通過yum源管理軟件包。 - apt模塊:
在被控機為debian系列通過apt源管理軟件包例如: 安裝tree命令: ansible test -S -R root -m apt -a "name=tree state=latest update_cache=yes"
微信公眾號:
歡迎各位大佬投稿和關註,非常感謝,如對文章內容有什麽意見,也可以多多指出。
- yum_repository模塊
ansible系列第二篇(模塊使用)