ansible模塊詳解


【簡單介紹】

Ansible是一種agentless(基於ssh),可實現批量配置、命令執行和控制,基於Python實現的自動化運維工具。

有以下兩個特性:

  1. 模塊化:通過調用相關模塊,完成指定任務,且支持任何語言編寫的自定義模塊
  2. 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"
ansible all -m shell -a "echo "test" | passwd --stdin test1"

   

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

statelink的時候,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

計划定時執行任務

相關參數:

minutehourdaymonthweekday

計划時間,默認為*

name

必選。任務描述

job

任務。要加引號

state

present - 創建
adsent -
刪除

示例:

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

presentinstalled/presentlatest(最新)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

startedstoppedrestarted

enable

truefalse

runlevel

運行級別

示例:

ansible host1 -m service -a "name=nginx state=started enabled=yes"

   

group

管理用戶組模塊

相關參數:

name

組名稱

gid

指定組的GID

state

presentabsent

system

yesno

示例:

ansible host1 -m group -a "name=test_grp state=present"

   

user

管理用戶模塊

相關參數:

name

用戶名

password

為用戶設置登陸密碼,此密碼是明文密碼加密后的密碼

update_password

always -> 只有當密碼不相同時才會更新密碼(默認)
on_create ->
只為新用戶設置密碼

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"

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM