Linux中ansible批量管理軟件部署及劇本編寫

服務器版本信息:html

Centos6.9python

[root@db02 ~]# uname -a
Linux db02 2.6.32-696.el6.x86_64 #1 SMP Tue Mar 21 19:29:05 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

ansible軟件介紹

ansible是一個基於Python開發的自動化運維工具!linux

其功能實現基於SSH遠程鏈接服務!web

ansible能夠實現批量系統配置、批量軟件部署、批量文件拷貝、批量運行命令等功能shell

ansible官方資料vim

官網:http://www.ansible.com/homebash

官網文檔:http://docs.ansible.com/ansible/index.html服務器

ansible軟件特色

  •   不須要單獨安裝客戶端,基於系統自帶的sshd服務,sshd就至關於ansible的客戶端
  •   不須要服務端
  •   依靠大量的模塊實現批量管理
  •   配置文件/etc/snsible/ansible.cfg,不用配置

ansible輸出結果的顏色

  • 輸出內容顯示綠色:表示執行成功,當沒有任何改變
  • 輸出內容顯示黃色:表示執行成功,但對被管理主機進行了改變
  • 輸出內容顯示紅色:表示執行失敗

ansible參數

命令參數app

參數說明運維

-m   MODULE_NAME

--module-name=MODULE_NAME

module name to execute (default=command)

相應名稱的模塊被執行(默認模塊爲 command );

-m後邊是模塊的名字

-a   MODULE_ARGS

--args=MODULE_ARGS

module arguments

模塊參數信息;

-a後面是要執行的命令;也能夠寫一個 ip ,針對一臺機器來執行命令

-C,--check

don’t make any changes; instead, try to predict some of the changes that may occur

不作任何改變;反而,只是嘗試預言一些可能出現的改變

--syntax-check

perform a syntax check on the playbook, but do not execute it 執行語法檢查在劇本上,可是並不執行劇本

ansible部署

第一步、首先部署ssh+key免密碼登錄方式

ssh+key部署:

http://www.cnblogs.com/2lianzhang/p/8058661.html

第二步、被管理端安裝libselinux

yum install libselinux-python -y

第三步、服務端安裝ansible,配置文件編寫

yum install ansible -y

ansible的重要目錄

/etc/ansible/hosts                  --- 定義anisble軟件能夠管理的主機信息

/usr/bin/ansible                     --- ansible執行命令

/usr/bin/ansible-playboot      --- ansible執行劇本命令

/etc/ansible/hosts                 配置文件編寫舉例

在配置文件中添加被管理主機的ip模塊

[name]
172.16.1.21
172.16.1.11
172.16.1.1
在/etc/ansible/host文件最後添加[]下面接想要管理的主機ip,[]中起任意名字

測試控制這三臺主機

命令語法:

ansible  name -m shell -a "hostname"
ansible    ---- 命令
name       ---- 主機模塊名稱
-m         ---- 指定模塊的參數
shell      --- 模塊名稱(不一樣模塊不一樣名稱)
-a         --- 指定利用模塊執行的動做參數
"hostname" ---- 在被控主機上批量執行的操做 
命令格式

執行結果

[root@m01 scripts]# ansible name -m shell -a "hostname"

172.16.1.21 | SUCCESS | rc=0 >>

backup

172.16.1.11 | SUCCESS | rc=0 >>

nfs01

172.16.1.1 | SUCCESS | rc=0 >>

web01

這樣就已經能夠批量控制多臺主機了,主要配置中須要注意的是ssh+key的配置。

若是沒有配置ssh+key密鑰分發的話,能夠在/etc/ansible/host文件配置管理主機的時候 在ip後面空格接:ansible_ssh_user=用戶 ansible_ssh_pass=密碼,這樣也能夠管理

ansible幾個經常使用模塊

ansible幫助:

ansible-doc -l         ---列出全部模塊信息
ansible-doc -s 模塊名   ---看執行模塊信息

經常使用模塊

模塊說明

command  (重要模塊)

執行命令模塊,ansible命令執行默認模塊

shell  (重要模塊)

執行shell腳本模塊

script  (重要模塊)

把腳本發到客戶端,而後執行;執行腳本命令在遠端服務器上

copy   (重要模塊)

把本地文件發送到遠端

file

設定文件屬性模塊

service

系統服務管理模塊

cron

計劃任務管理模塊

yum

yum軟件包安裝管理模塊

mount

掛載模塊

synchronize

使用rsync同步文件模塊

command模塊

ansible中的遠程執行命令模塊

  • 命令模塊中的多個參數設置用空格進行分隔 
  • 命令模塊中不能出現"<" ">" "|" ";" "&"

參數

說明

chdir

在執行命令以前,經過cd命令進入到指定目錄中
# ansible oldboy -m command -a "chdir=/tmp ls"

creates

定義一個文件是否存在,若是不存在運行相應命令;若是存在跳過此步驟
- name: Run the command if the specified file does not exist.
command: /usr/bin/make_database.sh arg1 arg2 creates=/path/to/database

executable

改變shell使用command進行執行,而且執行時要使用絕對路徑

free_form

free_form

命令模塊採用自由形式命令運行;便可以輸入任意linux命令

removes

定義一個文件是否存在,若是存在運行相應命令;若是不存在跳過此步驟

warn
(added in 1.8)

若是ansible配置文件中定義了命令警告,若是參數設置了no/false,將不會警告此行命令

實例:

chdir參數:在執行命令以前,經過cd命令進入到指定目錄

[root@m01 scripts]# ansible oldboy -m command -a "chdir=/tmp pwd"

172.16.1.21 | SUCCESS | rc=0 >>

/tmp

172.16.1.11 | SUCCESS | rc=0 >>

/tmp

172.16.1.1 | SUCCESS | rc=0 >>

/tmp
chdir參數

creates參數:定義一個文件是否存在,若是不存在運行相應命令;若是存在跳過此步驟

[root@m01 scripts]# ansible name -m command -a "pwd creates=/tmp/oldboy.txt"

172.16.1.21 | SUCCESS | rc=0 >>

/root

172.16.1.11 | SUCCESS | rc=0 >>

/root

172.16.1.1 | SUCCESS | rc=0 >>

/root
command模塊creates參數

shell模塊

參數

說明

chdir

在執行命令以前,經過cd命令進入到指定目錄中
# ansible oldboy -m command -a "chdir=/tmp ls"

creates

定義一個文件是否存在,若是不存在運行相應命令;若是存在跳過此步驟
- name: Run the command if the specified file does not exist.
  command: /usr/bin/make_database.sh arg1 arg2 creates=/path/to/database

executable

改變shell使用command進行執行,而且執行時要使用絕對路徑

free_form

free_form

命令模塊採用自由形式命令運行;便可以輸入任意linux命令

removes

定義一個文件是否存在,若是存在運行相應命令;若是不存在跳過此步驟

warn
(added in 1.8)

若是ansible配置文件中定義了命令警告,若是參數設置了no/false,將不會警告此行命令

 shell模塊相似於command模塊,最大區別是shell模塊能夠執行腳本

[root@m01 scripts]# ansible name -m shell -a "sh /server/scripts/name.sh"
172.16.1.21 | SUCCESS | rc=0 >>
nfs01

172.16.1.11 | SUCCESS | rc=0 >>
backup
說明:shell模塊在遠程執行腳本時,遠程主機上必定要有相應腳本
shell腳本執行

script模塊

在本地執行腳本時,將腳本中的內容傳輸到遠程節點上運行

creates
(added in 1.5)

定義一個文件是否存在,若是不存在運行相應命令;若是存在跳過此步驟
- name: Run the command if the specified file does not exist.

command: /usr/bin/make_database.sh arg1 arg2 creates=/path/to/database

free_form

命令模塊採用自由形式命令運行;便可以輸入任意linux命令

removes
(added in 1.5)

定義一個文件是否存在,若是存在運行相應命令;若是不存在跳過此步驟

 實例:

[root@m01 scripts]# ansible name -m script -a "/tmp/name.sh"
172.16.1.21 | SUCCESS => {
    "changed": true, 
    "rc": 0, 
    "stderr": "Shared connection to 172.16.1.21 closed.\r\n", 
    "stdout": "nfs01\r\n", 
    "stdout_lines": [
        "nfs01"
    ]
}
172.16.1.11 | SUCCESS => {
    "changed": true, 
    "rc": 0, 
    "stderr": "Shared connection to 172.16.1.11 closed.\r\n", 
    "stdout": "backup\r\n", 
    "stdout_lines": [
        "backup"
    ]
}
說明:不須要將腳本傳輸到遠程節點上,腳本自己不用進行受權,便可利用script模塊批量執行腳本
遠程執行腳本

copy模塊

將本地數據傳輸到遠端,或者將遠程節點上的數據進行移動

選項參數

選項說明

backup (重要參數)

建立備份文件包含時間戳信息,以便可以還原回原文件,在某種狀況原文件被覆蓋錯誤時。

content

當使用代替src參數時,將文件的內容直接設置爲指定值。遠端建立有指定內容文這是隻是簡單值,對於任何複雜或者有格式化的內容,請切換到template模塊

dest

文件應該被拷貝到的遠程絕對路徑信息。若是src是一個目錄,dest也必須是目錄

directory_mode
(added in 1.5)

當遞歸複製設置目錄權限時,若是沒有設置權限,將使用系統默認這個權限值設置在目錄上只對於最近建立的,而且對於已經存在的沒有效果

force

默認爲yes,當遠程文件內容和源文件內容不一樣時,將覆蓋目標文件若是爲no,文件將只被傳輸,在目標主機不存在此文件時

別名:thirsty

group

定義所擁有文件/目錄的所屬組名稱,相似交由chown命令進行處理

mode

定義文件或目錄的權限信息;就像使用/usr/bin/chmod 設定八進制數(如0644)取消掉前導零可能會有意想不到的結果。做爲1,8版本,能夠指定爲符號模式(如 u+rwx or u=rw,g=r,o=r)

owner

定義所擁有文件/目錄的所屬用戶名稱,相似交由chown命令進行處理

src

本地路徑文件複製到遠程服務器;能夠是絕對路徑也能夠是相對路徑若是路徑是一個目錄,將會遞歸複製。在這種狀況下,若是路徑以「/」結束,只將在該目錄的內容複製到目的地不然,若是它不以「/」結束,目錄和目錄下全部內容都會被複制以上這種複製方式相似於rsync

remote_src

若是這個值設置爲True,將到遠程目標主機的機器上搜索

validate

在文件複製到相應目錄位置以前,運行驗證命令要驗證的文件的路徑經過%s傳遞,而且要在下面的例子中顯示

實例:

[root@m01 scripts]# ansible name -m copy -a "src=/etc/hosts dest=/tmp/ mode=0777" 
172.16.1.21 | SUCCESS => {
    "changed": true, 
    "checksum": "da5234fc498b2c3bf8b98f6b08fe1d6d96e653c2", 
    "dest": "/tmp/hosts", 
    "gid": 0, 
    "group": "root", 
    "md5sum": "2253445a36ed3910d50887a6eb1e4b79", 
    "mode": "0777", 
    "owner": "root", 
    "size": 393, 
    "src": "/root/.ansible/tmp/ansible-tmp-1508394462.54-228657061248374/source", 
    "state": "file", 
    "uid": 0
}
172.16.1.11 | SUCCESS => {
    "changed": true, 
    "checksum": "da5234fc498b2c3bf8b98f6b08fe1d6d96e653c2", 
    "dest": "/tmp/hosts", 
    "gid": 0, 
    "group": "root", 
    "md5sum": "2253445a36ed3910d50887a6eb1e4b79", 
    "mode": "0777", 
    "owner": "root", 
    "size": 393, 
    "src": "/root/.ansible/tmp/ansible-tmp-1508394462.62-205181338927486/source", 
    "state": "file", 
    "uid": 0
}   
拷貝文件

說明:

1. 若是指定的目標目錄不存在,系統會自動建立,不然源目錄會放到目標目錄下面去

2. 若是copy的是文件,dest指定的名字和源若是不一樣,而且它不是已經存在的目錄,至關於copy過去後在重命名;

3. 若是dest是目標機器上已經存在的目錄,則會直接把文件copy到該目錄下面。

4. 設定的用戶和組oldboy在全部客戶端必須存在

 給文件加內容:

[root@m01 scripts]# ansible name -m copy -a "content=lyq.com\n dest=/tmp/1"
172.16.1.11 | SUCCESS => {
    "changed": true, 
    "checksum": "31f9b45eca1a36069a4517868a948b369228aa75", 
    "dest": "/tmp/1", 
    "gid": 0, 
    "group": "root", 
    "md5sum": "ae41cc8f2c5a90e7e94b1d9f6616a916", 
    "mode": "0644", 
    "owner": "root", 
    "size": 7, 
    "src": "/root/.ansible/tmp/ansible-tmp-1508465641.79-151255543511039/source", 
    "state": "file", 
    "uid": 0
}
172.16.1.21 | SUCCESS => {
    "changed": true, 
    "checksum": "31f9b45eca1a36069a4517868a948b369228aa75", 
    "dest": "/tmp/1", 
    "gid": 0, 
    "group": "root", 
    "md5sum": "ae41cc8f2c5a90e7e94b1d9f6616a916", 
    "mode": "0644", 
    "owner": "root", 
    "size": 7, 
    "src": "/root/.ansible/tmp/ansible-tmp-1508465641.82-210493742853029/source", 
    "state": "file", 
    "uid": 0
}
加內容

file模塊

設置文件屬性

 

參數

說明

force

強行建立符號連接的兩種狀況:

源文件不存在(可是往後會出現)

目標存在而且是一個文件(所以,咱們須要將「路徑」文件取消,並建立「src」文件的符號連接)

group

定義所擁有文件/目錄的所屬組名稱,相似交由chown命令進行處理

mode

定義文件或目錄的權限信息;就像使用/usr/bin/chmod 設定八進制數(如0644)取消掉前導零可能會有意想不到的結果。做爲1,8版本,能夠指定爲符號模式(如 u+rwx or u=rw,g=r,o=r)

owner

定義所擁有文件/目錄的所屬用戶名稱,相似交由chown命令進行處理

path

文件路徑管理:

別名方式:dest,name

recurse

遞歸設置指定文件屬性(這個參數值應用對於state=directory)

src

要連接的文件路徑(只能應用 state=link),接受絕對 相對以及不存在的路徑相對路徑不能擴展

state

(重要參數)

若是指定參數爲directory
# 全部不存在的子目錄將會被建立,而且從1.7開始支持設置目錄權限
若是指定參數爲file
# 若是文件不存在將不能被建立,若是想建立能夠參考copy和template模塊
若是指定參數爲link
# 符號連接將被建立或更改。
若是指定參數爲hard
# 便會建立出硬連接
若是指定參數爲absent
# 目錄將被遞歸刪除以及文件,而連接將被取消連接。
# 請注意,定義文件不存在不會失敗,只是輸出沒有發生任何改變的結果
若是指定參數爲touch
# 若是路徑不存在將建立一個空文件,若是文件或目錄存在將接收更新的文件訪問和修改時間(相似於「touch」從命令行工做的方式)。

實例:

建立目錄/刪除目錄

[root@m01 scripts]# ansible name -m file -a "dest=/tmp/lyq_dir state=directory"
172.16.1.11 | SUCCESS => {
    "changed": true, 
    "gid": 0, 
    "group": "root", 
    "mode": "0755", 
    "owner": "root", 
    "path": "/tmp/oldboy_dir", 
    "size": 4096, 
    "state": "directory", 
    "uid": 0
}
172.16.1.21 | SUCCESS => {
    "changed": true, 
    "gid": 0, 
    "group": "root", 
    "mode": "0755", 
    "owner": "root", 
    "path": "/tmp/oldboy_dir", 
    "size": 4096, 
    "state": "directory", 
    "uid": 0
}
[root@m01 scripts]# ansible name -m file -a "dest=/tmp/lyq_dir state=absent"
172.16.1.11 | SUCCESS => {
    "changed": true, 
    "path": "/tmp/oldboy_dir", 
    "state": "absent"
}
172.16.1.21 | SUCCESS => {
    "changed": true, 
    "path": "/tmp/oldboy_dir", 
    "state": "absent"
}
建立/刪除目錄

建立文件/刪除文件

[root@m01 scripts]# ansible name -m file -a "dest=/tmp/lyq_file state=touch"
172.16.1.11 | SUCCESS => {
    "changed": true, 
    "dest": "/tmp/oldboy_file", 
    "gid": 0, 
    "group": "root", 
    "mode": "0644", 
    "owner": "root", 
    "size": 0, 
    "state": "file", 
    "uid": 0
}
172.16.1.21 | SUCCESS => {
    "changed": true, 
    "dest": "/tmp/oldboy_file", 
    "gid": 0, 
    "group": "root", 
    "mode": "0644", 
    "owner": "root", 
    "size": 0, 
    "state": "file", 
    "uid": 0
}
[root@m01 scripts]# ansible name -m file -a "dest=/tmp/lyq_file state=absent"
172.16.1.11 | SUCCESS => {
    "changed": true, 
    "path": "/tmp/oldboy_file", 
    "state": "absent"
}
172.16.1.21 | SUCCESS => {
    "changed": true, 
    "path": "/tmp/oldboy_file", 
    "state": "absent"
}
建立/刪除文件

建立軟鏈接/刪除軟鏈接

[root@m01 scripts]# ansible name -m file -a "src=/tmp/lyq_file dest=/tmp/lyq_file_link state=link"
172.16.1.11 | SUCCESS => {
    "changed": true, 
    "dest": "/tmp/oldboy_file_link", 
    "gid": 0, 
    "group": "root", 
    "mode": "0777", 
    "owner": "root", 
    "size": 16, 
    "src": "/tmp/oldboy_file", 
    "state": "link", 
    "uid": 0
}
172.16.1.21 | SUCCESS => {
    "changed": true, 
    "dest": "/tmp/oldboy_file_link", 
    "gid": 0, 
    "group": "root", 
    "mode": "0777", 
    "owner": "root", 
    "size": 16, 
    "src": "/tmp/oldboy_file", 
    "state": "link", 
    "uid": 0
}
[root@m01 scripts]# ansible name -m file -a "dest=/tmp/lyq_file_link state=absent"
172.16.1.21 | SUCCESS => {
    "changed": true, 
    "path": "/tmp/oldboy_file_link", 
    "state": "absent"
}
172.16.1.11 | SUCCESS => {
    "changed": true, 
    "path": "/tmp/oldboy_file_link", 
    "state": "absent"
}
建立/刪除軟鏈接

fetch模塊

將遠程主機上的文件,拉取到本地

 

參數

說明

dest

定義一個保存文件的目錄(將遠程主機拉去過來的文件保存在本地的路徑信息)

src

指定從遠程主機要拉取的文件信息

flat

默認設置爲no,若是設置爲yes,將不顯示路徑信息

 實例:

從遠程主機拉取文件

[root@m01 scripts]# ansible name -m fetch -a "dest=/tmp src=/tmp/1"
172.16.1.11 | SUCCESS => {
    "changed": true, 
    "checksum": "31f9b45eca1a36069a4517868a948b369228aa75", 
    "dest": "/tmp/172.16.1.11/tmp/1", 
    "md5sum": "ae41cc8f2c5a90e7e94b1d9f6616a916", 
    "remote_checksum": "31f9b45eca1a36069a4517868a948b369228aa75", 
    "remote_md5sum": null
}
172.16.1.21 | SUCCESS => {
    "changed": true, 
    "checksum": "31f9b45eca1a36069a4517868a948b369228aa75", 
    "dest": "/tmp/172.16.1.21/tmp/1", 
    "md5sum": "ae41cc8f2c5a90e7e94b1d9f6616a916", 
    "remote_checksum": "31f9b45eca1a36069a4517868a948b369228aa75", 
    "remote_md5sum": null
}
遠程拉取

flat  默認設置爲no,若是設置爲yes,將不顯示路徑信息

[root@m01 scripts]# ansible name -m fetch -a "dest=/tmp/ src=/tmp/1 flat=yes"
172.16.1.21 | SUCCESS => {
    "changed": true, 
    "checksum": "31f9b45eca1a36069a4517868a948b369228aa75", 
    "dest": "/tmp/1", 
    "md5sum": "ae41cc8f2c5a90e7e94b1d9f6616a916", 
    "remote_checksum": "31f9b45eca1a36069a4517868a948b369228aa75", 
    "remote_md5sum": null
}
172.16.1.11 | SUCCESS => {
    "changed": true, 
    "checksum": "31f9b45eca1a36069a4517868a948b369228aa75", 
    "dest": "/tmp/1", 
    "md5sum": "ae41cc8f2c5a90e7e94b1d9f6616a916", 
    "remote_checksum": "31f9b45eca1a36069a4517868a948b369228aa75", 
    "remote_md5sum": null
}
View Code

mount模塊

控制激活和配置掛載點模塊

參數

說明

fstype

指定掛載文件類型

path

指定掛載點

opts

設定掛載的參數選項信息

src

要被掛載的目錄設備信息(共享目錄)

boot
(added in 2.2)

肯定是否在啓動時文件系統被掛載
只應用在solaris系統上

dump

Dump(參見 fstab5)。注意若是設置爲null或狀態設置爲present,它將中止工做,並將在隨後的運行中複製條目
對solaris系統沒有效果

state

若是爲mounted在fstab文件中的設備將被激活掛載和適當配置

# 若是爲unmounted設備將被卸載並不會改變fstab文件信息bsent和present只處理fstab,但不影響目前的掛載

 cron模塊

定時任務模塊

 

參數

說明

minute

hour

day

month

weekday

job

定時任務中要執行的操做

name

定義定時任務的描述信息

state=absent

刪除定時任務

disabled

註釋定時任務

實例:

建立定時任務

[root@m01 ~]# ansible name -m cron -a "minute=0 hour=0 job='/bin/sh /tmp/name.sh >/dev/null'" 
172.16.1.21 | SUCCESS => {
    "changed": true, 
    "envs": [], 
    "jobs": [
        "None"
    ]
}
172.16.1.11 | SUCCESS => {
    "changed": true, 
    "envs": [], 
    "jobs": [
        "None"
    ]
}
建立定時任務

刪除定時任務

[root@m01 ~]# ansible name -m cron -a "minute=0 hour=0 job='/bin/sh /tmp/name.sh >/dev/null' state=absent"
刪除定時任務

註釋定時任務

[root@m01 ~]# ansible name -m cron -a "minute=0 hour=0 job='/bin/sh /tmp/name.sh >/dev/null' state=disabled"
註釋定時任務

user模塊

管理用戶帳戶

參數

說明

append

若是爲yes,將只添加組,而不是將它們設置爲組中的列表

name

要操做的用戶名稱

shell

指定用戶的使用命令路徑(如:/bin/bash)

comment

可選設置用戶帳號描述信息(又稱爲 GECOS)

createhome

除非設置爲no,不然當建立帳戶或不存在主目錄時,將爲用戶建立一個主目錄

user

建立,移除或修改的用戶名稱信息
別名:user

uid

可選設置用戶UID信息

 實例:

[root@m01 ansible-playbook]# ansible 172.16.1.1 -m user -a "user=lyq uid=2222"
172.16.1.1 | SUCCESS => {
    "append": false, 
    "changed": true, 
    "comment": "", 
    "group": 500, 
    "home": "/home/lyq", 
    "move_home": false, 
    "name": "lyq", 
    "shell": "/bin/bash", 
    "state": "present", 
    "uid": 2222
}
建立用戶

ansible劇本

 檢查劇本:

ansible-playbook --syntax-check 劇本名    ----進行劇本配置信息語法檢查

ansible-playbook -C 劇本名                ----模擬劇本執行

ansible核心功能

  • pyYAML  -----用於ansible編寫劇本所使用的語言格式
  • paramiko ---遠程鏈接與數據傳輸
  • Jinja2        -----用於編寫ansible的模塊信息

ansible劇本編寫規則

pyYAML語法規則

一:縮進

yaml使用一個固定的縮進風格表示數據層結構關係,Saltstack須要每一個縮進級別由兩個空格組成。必定不能使用tab鍵(tab在vim編輯中是8個空格)

二:冒號

每一個冒號後面必定要有一個空格(以冒號結尾不須要空格,表示文件路徑的模版能夠不須要空格)

三:短橫線

  • 想要表示列表項,使用一個短橫槓加一個空格。多個項使用一樣的縮進級別做爲同一個列表的一部分。
  • 核心規則:有效的利用空格進行劇本的編寫,劇本編寫是不支持tab的。

ansible-playbook編寫格式

劇本開頭,能夠不寫

這兩項必需要寫:

- hosts:(空格)all   處理全部服務器,找到全部服務器
  tasks:            劇本要乾的事

檢查劇本命令

ansible-playbook --syntax-check 劇本   ----進行劇本配置信息語法檢查
ansible-playbook -C 劇本               ----模擬劇本執行

劇本實例

rsync一鍵部署劇本:

- name: 後面是能夠加入提示信息的

複製代碼
[root@m01 ansible-playbook]# vim rsync.yml
- hosts: 172.16.1.21
  tasks:
    - name:
      yum: name=rsync state=installed
    - name:
      copy: src=/tmp/rsyncd.conf dest=/etc/
    - name:
      shell: userdel -r rsync && useradd rsync -M -s /sbin/nologin
    - name:
      shell: mkdir -p /backup/ && chown rsync.rsync /backup
    - name:
      copy: src=/tmp/rsync.password dest=/etc/
    - name:
      shell: rsync --daemon creates=/var/run/rsyncd.pid
- hosts: 172.16.1.11
  tasks:
    - name:
      copy: content=lyq123 dest=/etc/rsync.password
複製代碼

寫的很差的地方,請你們多多包涵

相關文章
相關標籤/搜索