Ansible常用模塊使用
Ansible官方提供了非常多的模塊,還有若幹第三方模塊,我們也可以自己編寫模塊。
Ansible對遠程服務器的操作實際是通過模塊完成的,先將模塊拷貝到遠程服務器,完成操作後,然後在遠程服務器上刪除該模塊。
查看模塊幫助信息:
查看模塊列表:
ansible-doc -l
查看具體模塊幫助信息,以file為例
ansible-doc file
ping模塊
測試現有的SSH參數能否連遠程服務器。
ansible webservers -m ping
遠程命令模塊
commond 不能使用管道,參數chdir可以切換到指定目錄,再執行命令。
raw 可以使用管道,相當於使用SSH直接執行Linux命令。
shell shell模塊可以執行遠程服務器上的腳本,腳本文件要使用絕對路徑
script 可以在遠程服務器上執行主控節點上的腳本文件。
ansible webservers -m script -a ‘test.sh‘
file模塊
file模塊用於對遠程服務器上的文件(包塊鏈接和目錄)進行操作,包括修改權限,修改屬主,創建刪除文件。
重要選項:
- path: 指定文件/目錄的路徑
- recurse: 遞歸設置目錄屬性
- group: 定義組
- mode: 定義權限
- src: 要被鏈接的源文件路徑
- dest: 被鏈接到的路徑
- owner 定義文件所屬主
- state: 取值為directory是,目錄不存在時,創建目錄,file時,即使文件不存在,文件也不會被創建,link和hard時,創建軟硬鏈接,tocuh時,同Linux,absent,刪除文件或者目錄或者鏈接。
#創建一個目錄
ansible webservers -m file -a ‘path=/tmp/dd state=directory mode=0755‘
#修改文件權限
ansible webservers -m file -a ‘path=/tmp/dd state=touch mode=0411‘
#創建一個軟鏈接
ansible webservers -m file -a ‘src=/tmp/dd dest=/tmp/ddl state=link‘
#修改所有者
ansible webservers -m file -a ‘path=/tmp/dd owner=scott group=scott‘ -become
#刪除文件
ansible webservers -m file -a ‘path=/tmp/ddl state=absent‘
copy模塊
類似於scp,將本地文件拷貝到遠程服務器,但是它更加強大,它還可以修改文件的權限和所屬。
- src: 文件地址,可以是相對路徑也可以是絕對路徑,以“/”結尾,復制目錄裏面的內容,如果沒使用“/”結尾則復制整個目錄。
- dest : 文件復制目的地,要使用絕對路徑
- force: 默認值是yes,表示目標主機包含該文件,內容不同時會強制覆蓋,如果為no,只有文件不存在時才會復制。
- backup: 默認是no,如果為yes,覆蓋前會將文件備份
- directory_mode: 遞歸設置目錄權限
- othes: 所有file的模塊選項都可以在這使用。
#復制文件並修改所屬主,如果文件已經存在,則進行備份。
ansible webservers -m copy -a ‘src=/tmp/data.txt dest=/tmp/data.txt owner=root backup=yes‘ -become
user/group
對用戶和組的操作。
# 創建一個用戶,並生成密鑰對。
ansible webservers -m user -a ‘name=dev1 comment="dev" group=root uid=1099 generate_ssh_key=yes ssh_key_bits=2048‘ -become
# 刪除用戶
ansible webservers -m user -a ‘name=dev1 state=absent‘ -become
yum/apt
安裝和刪除軟件
#安裝軟件
ansible webservers -m yum -a ‘name=git state=present‘ -become
#刪除軟件
ansible webservers -m yum -a ‘name=git state=absent‘ -become
Ansible常用模塊使用