1、需求:

需要在多臺主機上,傳送檔案、執行命令,進行快速部署

2、ansible 遠端複製檔案

例子:在當前節點(20.88.14.7) 上向其他指定的節點發送檔案

(1)建立host---基於密碼連線其他節點

vim  host

[ip_list]
20.88.14.8 ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass="root"
20.88.14.9 ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass="root"

(2)建立測試檔案

vim test_ansible.sh

(3)遠端複製檔案到各個節點

ansible ip_list -i ./host -m copy -a "src=./test_ansible.sh dest=/root/"

解釋:

-i :指定hosts檔案路徑, 預設default=/etc/ansible/hosts

-m :要執行的模組,預設為command(這裡使用的是copy模組,更多模組見 後文,4(3)ansible常用模組)

-a:指定模組的引數 (可增加許可權引數:owner=root mode=777)

copy模組:

[root@node1 ~]# ansible-doc -s copy
- name: 將檔案複製到被管理主機
action: copy
backup # 建立一個備份檔案包括時間戳資訊,如果以某種方式重創錯了,還可以拿回原始檔案
content # 取代src=,表示直接用此處指定的資訊生成為目標檔案內容;
dest= # 遠端節點存放檔案的路徑,必須是絕對路徑
directory_mode # 遞迴複製設定目錄許可權,預設為系統預設許可權
force # 如果目標主機包含該檔案,但內容不同,如果設定為yes,則強制覆蓋,如果設定為no,則只有當目標主機的目標位置不存在該檔案時,才複製。預設為yes
group # 複製到遠端主機後,指定檔案或目錄的屬
mode # 複製到遠端主機後,指定檔案或目錄許可權,類似與 'chmod' 指明如 0644
owner # 複製到遠端主機後,指定檔案或目錄屬主
src # 要複製到遠端主機的檔案在本地的地址,可以是絕對路徑,也可以是相對路徑。如果路徑是一個目錄,它將遞迴複製。
           在這種情況下,如果路徑使用"/"來結尾,則只複製目錄裡的內容,如果沒有使用"/"來結尾,則包含目錄在內的整個內容全部複製,類似於rsync。

(4)執行結果:

當前節點執行成功的結果:

其他節點:

3、ansible  遠端執行命令,修改 test_ansible.sh 的名字為 test_ansible_new.sh

(1)建立host---基於密碼連線其他節點

  同前

(2)遠端執行命令,改名

ansible ip_list -i ./host -m command -a "mv /root/test_ansible.sh /root/test_ansible_new.sh"

解釋:

command模組(命令模組,預設模組,用於在遠端主機執行命令,缺點:執行的命令中無法使用變數,管道。如果需要使用管道、變數,請使用raw模組,或者shell模組)
[root@node1 ~]# ansible-doc -s command

chdir           # 在執行命令之前,先切換到該目錄
creates # 一個檔名,當這個檔案存在,則該命令不執行,可以用來做判斷
executable # 切換shell來執行命令,需要使用命令的絕對路徑
free_form= #要執行的Linux指令,一般使用Ansible的-a引數代替。
removes #一個檔名,這個檔案不存在,則該命令不執行,與creates相反的判斷
 

(3)執行結果

本節點(20.88.14.7):

其他節點:

4、參考:

(1)ansible的安裝和連線

https://www.cnblogs.com/yanjieli/p/10969089.html

(2)ansible常用引數

https://www.cnblogs.com/tyk3201/p/12383081.html

(3)ansible常用模組

https://www.cnblogs.com/ccorz/p/ansible-chang-yong-mo-kuai.html

owner  [ˈəʊnə(r)]  詳細X
基本翻譯
n. 所有人,物主
網路釋義
Owner: 所有者
beneficial owner: 受益所有人
co-owner: 共同擁有人