【Ansible】ad-hoc與常用模塊
什么是ad-hoc

ad-hoc 簡而言之就是 “臨時命令”,執行完即結束,并不會保存;
ansible工具通過 ssh 協議 ,實現對遠程主機的配置管理,應用部署、任務執行等功能;
命令使用格式;
ansible
--version #ansible版本信息
-v #顯示詳細信息
-i #主機清單文件路徑,默認是在/etc/ansible/hosts
-m #使用的模塊名稱,默認使用command模塊
-a #使用的模塊參數,模塊的具體動作
-k #提示輸入ssh密碼,而不使用基于ssh的密鑰認證
-C #模擬執行測試,但不會真的執行
-T #執行命令的超時
--become-user #指定sudo時的用戶名稱,默認為root
命令示例:
ansible 'groups' -m command -a 'df -h'
執行過程:
1.加載自己的配置文件,默認 /etc/ansible/ansible.cfg ;
2.查找對應的主機配置文件,找到要執行的主機或者組;
3.加載自己對應的模塊文件,如 command ;
4.通過 ansible 將模塊或命令生成對應的臨時 py 文件,并將該文件傳輸至遠
程服務器對應執行用戶 $HOME/.ansible/tmp/ansible-tmp-number/XXX.PY ;
5.執行用戶家目錄的 `` 文件;
6.給文件 +x 執行;
7.執行并返回結果;
8.刪除臨時 py 文件, sleep 0 退出;
執行狀態
使用 ad-hoc 執行一次遠程命令,注意觀察返回結果的顏色;
綠色: 代表被管理端主機沒有被修改
黃色: 代表被管理端主機發現變更
紅色: 代表出現了故障,注意查看提示
常用模塊
查看所有的模塊
[root@manger ~]# ansible-doc -l
查看模塊的詳細文檔
[root@manger ~]# ansible-doc copy
查看模塊的所有方法
[root@manger ~]# ansible-doc -s copy
模塊介紹
command模塊
功能:在遠程主機執行 Shell 命令;此為默認模塊,可忽略 -m 選項;
chdir chdir /opt 執行ansible時,切換到指定的目錄
creates creates /data/file 如果文件存在,則跳過執行
removes removes /data/file 如果文件存在,則執行
shell模塊
功能:在遠程主機執行 Shell 命令,執行管道等特殊符號的操作;
chdir chdir /opt 執行ansible時,切換到指定的目錄
creates creates /data/file 如果文件存在,則跳過執行
removes removes /data/file 如果文件存在,則執行
script模塊
功能:在被控節點,運行 Ansible 主機的腳本;
yum模塊
功能:管理各個操作系統的軟件包;
name: httpd、nginx、... 指定安裝軟件包名或軟件包URL
state:present(Defaults)、absent、latest? ?指定yum對應的方法
enablerepo: epel、base、... 允許從哪些倉庫獲取軟件
disablerepo :epel、base、... 禁止從哪些倉庫獲取軟件
exclude :kernel、... 排除某些軟件包
download_only: yes、no 僅下載軟件包,不安裝
copy模塊
功能:從 ansible 服務端主控端復制文件到遠程主機;
src 復制本地目錄下的文件至遠程服務器
dest 文件復制到遠程的絕對路徑
owner root(Defaults) 文件復制到遠程并設定屬主
group root(Defaults) 文件復制到遠程并設定屬組
mode file=644,directory=755 文件復制到遠程并設定權限
backup yes 備份被修改前的配置文件
content 新建文件并給文件添加內容
file模塊
功能:為被控端創建文件或目錄,設定權限屬性;
path 指定遠程服務器的路徑
recurse 遞歸方式(可以是遞歸授權)
state touch、directory、link、absent 文件復制到遠程的狀態
owner root(Defaults) 文件復制到遠程并設定屬組
group root(Defaults) 備份被修改前的配置文件
mode file=644,directory=755 文件復制到遠程并設定權限
lineinfile模塊
功能:修改或刪除文件內容,與系統中的 sed 命令類似;
path 指定要操作的文件
regexp 使用正則表達式匹配對應的行
line 修改為新的內容
insertafter 將文本插入到“指定的行”之后
insertbefore 將文本插入到“指定的行”之前
state absent、present(Defaults) 刪除對應的文本時,需要
state=absent
backrefs yes、no 1.支持后向引用、2.當未匹配到內容則不操作文件
backup 是否在修改文件之前對文件進行備份
create 當要操作的文件并不存在時,是否創建對應的文件
systemd模塊
功能:管理服務啟動與停止,與 service 模塊用法一致;
name httpd、nginx、... 定義要啟動服務的名稱
state started、stopped、restarted、
reloaded 指定服務狀態
enabled yes、no 允許服務開機自啟或禁止服務開機自啟
group模塊
功能:管理被控端用戶組;
name 指定創建的組名
gid 為組設置可選gid
state present(Default)、absent 是否將組創建在遠程主機上
system yes、no(Default) 是否創建系統組
user模塊
功能:管理被控端用戶;
name 創建或刪除的用戶名
uid 為用戶設置可選uid
group 為用戶設置主要的組
groups 為用戶設置附加的組
shell present(Default)、 absent 為用戶設置登陸時的Shell
create_home yes(Default)、no 為用戶創建主目錄
state present(Default)、 absent 用戶是否應該存在
remove yes、no(Default) 刪除與用戶關聯的目錄,只有當 state=absent時生效
generate_ssh_key yes、no(Default) 為相關用戶生成ssh密鑰。不會覆蓋現有的ssh密鑰
ssh_key_bits 2048 創建用戶ssh密鑰中位數
ssh_key_file .ssh/id_rsa(Default) 可以實現ssh密鑰改名,或變更存放ssh密鑰位置
cron模塊
功能:管理被控端計劃任務;
name 定時任務基本描述
job 定時任務要執行的命令
minute (Default)、0-59 分
hour (Default)、0-23 時
day (Default)、1-31 日
month (Default)、1-12 月
weekday (Default)、0-6 周
mount模塊
功能:管理被控端設備掛載;
src 本地或遠程設備的路徑
path 設備掛載至本地的路徑
fstype xfs、nfs... 文件系統類型
opts defaults、ro... 掛載的參數
state absent、mounted、unmounted 掛載的狀態
hostname模塊
功能:管理被控端主機名稱;
archive模塊
功能:打包與壓縮;
path 要壓縮的文件或目錄
dest 壓縮后的文件
format bz2、gz、tar、xz、zip 指定打包壓縮的類型
unarchive模塊
功能:解包與解壓縮;
src 要解壓的軟件包路徑
dest 解壓到目標位置
remote_src yes、no(default) yes:要解壓的包在被控端、no:要解壓的包 在控制
selinux模塊
功能:管理 SELINUX 防火墻;
state enforcing、permissive、disabled Selinux模式
ssh
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。