【簡單介紹】
Ansible是一種agentless(基於ssh),可實現批量配置、命令執行和控制,基於Python實現的自動化運維工具。
有以下兩個特性:
- 模塊化:通過調用相關模塊,完成指定任務,且支持任何語言編寫的自定義模塊
- playbook:劇本,可根據需要一次執行完劇本中的所有任務或某些任務
本次主要介紹ansible的基本模塊。
【command】
在遠程主機上執行命令。
不加 -m 選項的時候,默認執行command。
相關參數:
chdir |
在此目錄下執行命令 |
creates |
指定文件存在時,不執行 |
removes |
指定文件不存在時,不執行 |
示例:
ansible host1 -m command -a "ls" ansible host1 -m command -a "chdir=/testdir ls" |
【setup】
收集遠程主機的一些基本信息。
相關參數:
filter |
條件過濾 |
示例:
# 獲取主機的ipv4信息 ansible host1 -m setup -a "filter=ansible_all_ipv4_addresses" # 獲取主機內存信息 ansible host1 -m setup -a "filter=ansible_memory_mb" ansible host1 -m setup -a "filter=*mb" |
其他信息:
ansible_all_ipv4_addresses |
顯示ipv4的信息 |
ansible_devices |
顯示磁盤設備信息 |
ansible_distribution |
顯示是什么系統,例centos,suse等 |
ansible_distribution_major_version |
顯示是系統主版本 |
ansible_distribution_version |
顯示系統版本 |
ansible_machine |
顯示系統類型,例32位,還是64位 |
ansible_eth0 |
顯示eth0的信息 |
ansible_hostname |
顯示主機名 |
ansible_kernel |
顯示內核版本 |
ansible_lvm |
顯示lvm相關信息 |
ansible_memtotal_mb |
顯示系統總內存 |
ansible_memfree_mb |
顯示可用系統內存 |
ansible_memory_mb |
詳細顯示內存情況 |
ansible_swaptotal_mb |
顯示總的swap內存 |
ansible_swapfree_mb |
顯示swap內存的可用內存 |
ansible_mounts |
顯示系統磁盤掛載情況 |
ansible_processor |
顯示cpu個數(具體顯示每個cpu的型號) |
ansible_processor_vcpus |
顯示cpu個數(只顯示總的個數) |
【shell】
讓遠程主機在shell進程下執行命令,可支持shell的特性(如管道等)。
參數與command相同,不做贅述。
示例:
ansible host1 -m shell -a "chdir=/testdir cat test" |
【copy】
把本地文件復制到遠程主機上。
相關參數:
dest |
必選。遠端路徑,可以是文件/目錄。 |
src |
與content其一必選。源文件/目錄,如果以"/"結尾,復制內容,否則,復制包括目錄在內的所有內容。 |
content |
與src其一必選。直接設定目的文件的值,此時dest必須是文件。 |
backup |
覆蓋之前備份源文件。yes/no |
directory_mode |
遞歸設定目標目錄的權限。 |
follow |
支持link文件復制 |
force |
覆蓋遠程主機不一致的內容 |
group |
設定遠程主機目錄的組名 |
mode |
設定遠程主機文件及目錄的權限 |
owner |
設定遠程主機目錄的用戶名 |
示例:
ansible host1 -m copy -a 'src=/etc/passwd dest=/tmp mode=755 owner=root' ansible host1 -m copy -a 'content="HELLO" dest=/tmp mode=755 owner=root' |
【file】
設置文件屬性
相關參數:
path |
必選。用於指定要操作的文件或者目錄。 |
state |
屬性。此參數需靈活使用,后面會介紹 |
src |
當state設置為link或者hard的時候,此參數為鏈接文件的源文件。 |
dest |
當state設置為link或者hard的時候,此參數為鏈接文件路徑。 |
force |
當state為link的時候,force設置為yes,則就算文件不存在,依舊創建鏈接文件。 |
group |
同上 |
mode |
同上 |
owner |
同上 |
recurse |
被操作的文件為目錄,將其設置為yes,可遞歸修改屬性。 |
示例:
ansible host1 -m file -a "path=/test owner=test group=test mode=0644" ansible host1 -m file -a "src=/test dest=/testlink owner=root group=root state=link" ansible ansible-demo3 -m file -a "path=/test state=touch" |
state:
directory |
目錄。不存在則創建 |
touch |
文件。不存在則創建 |
file |
文件。不存在則跳過 |
link |
創建軟連接 |
hard |
創建硬鏈接 |
absent |
刪除目錄,文件或者取消鏈接 |
【cron】
計划定時執行任務
相關參數:
minute、hour、day、month、weekday |
計划時間,默認為* |
name |
必選。任務描述 |
job |
任務。要加引號 |
state |
present - 創建 |
示例:
ansible host1 -m cron -a " name='crontab test' minute=5 hour=1 job='echo test' " ansible host1 -m cron -a " name='crontab day test' minute=1 hour=1 day=*/3 job='echo test' |
【yum】
管理安裝相關程序包
相關參數:
name |
程序包名稱,可帶版本號 |
state |
present、installed/present、latest(最新)、removed/absent |
enablerepo |
指定安裝軟件包時臨時啟用的 yum 源 |
disablerepo |
指定安裝軟件包時臨時禁用的 yum 源 |
disable_gpg_check |
禁用對 rpm 包的公鑰 gpg 驗證 |
示例:
ansible host1 -m yum -a 'name=nginx state=installed disable_gpg_check=yes' |
【service】
管理服務
相關參數:
name |
服務名稱 |
state |
started、stopped、restarted |
enable |
true、false |
runlevel |
運行級別 |
示例:
ansible host1 -m service -a "name=nginx state=started enabled=yes" |
【group】
管理用戶組模塊
相關參數:
name |
組名稱 |
gid |
指定組的GID |
state |
present、absent |
system |
yes、no |
示例:
ansible host1 -m group -a "name=test_grp state=present" |
【user】
管理用戶模塊
相關參數:
name |
用戶名 |
password |
為用戶設置登陸密碼,此密碼是明文密碼加密后的密碼 |
update_password |
always -> 只有當密碼不相同時才會更新密碼(默認) |
shell |
用戶的shell設定 |
groups |
用戶組設定 |
home |
指定用戶的家目錄 |
state |
present/absent |
append |
yes -> 增量添加group no -> 全量變更group,只設置groups指定的group組(默認) |
remove |
配合state=absent使用,刪除用戶的家目錄 -> remove=yes |
expires |
設置用戶的過期時間,值是一個時間戳 |
示例:
ansible host1 -m user -a "name=test2 state=present groups=test2,test_grp shell=/bin/bash append=yes" |