自動化運維工具--Ansible經常使用模塊

注意:-a 參數後的命令用單引號;雙引號有可能會出問題,特別是在user模塊html

模塊一:測試目標主機是否在線,ping模塊web

主機若是在線,則回覆Pongshell

[root@ansible ~]# ansible web -m ping
192.168.30.36 | SUCCESS => {
    "changed": false, 
    "ping": "pong"
}
192.168.30.32 | SUCCESS => {
    "changed": false, 
    "ping": "pong"
}

模塊二:command模塊和shell模塊緩存

用於在各被管理主機節點運行指定的命令服務器

shell與command的區別:command模塊是執行ansible自帶模塊執行,若是要用> < | & ‘ ‘等管道,須要使用shell模塊工具

[root@ansible tmp]# ansible web -m command -a 'uptime'
192.168.30.32 | SUCCESS | rc=0 >>
 21:10:43 up 138 days,  1:34,  1 user,  load average: 0.00, 0.01, 0.05
192.168.30.36 | SUCCESS | rc=0 >>
 21:08:30 up 95 days,  3:02,  4 users,  load average: 0.00, 0.00, 0.00

shell模塊:測試

[root@ansible tmp]# ansible web -m shell -a 'cat /etc/fstab | grep ^UUID'
192.168.30.36 | SUCCESS | rc=0 >>
UUID=28b3513d-9e6f-42a8-ade0-7700573fed2a /boot                   ext4    defaults        1 2
192.168.30.32 | SUCCESS | rc=0 >>
UUID=de2e369a-c0e8-4188-89e0-db1f4aded764 /boot                   xfs     defaults        0 0

相關選項以下:fetch

creates:一個文件名,當文件名存在,則該命令不執行
chdir:在執行指令以前,先切換到該目錄
free_from:要執行的Linux指令
removes:一個文件名,當文件名不存在,則該命令不執行
executable:切換shell來執行指令,該執行路徑必須是一個絕對路徑

參考:<https://docs.ansible.com/ansible/latest/modules/shell_module.html>ui

模塊三:遠程複製備份--copy模塊加密

[root@ansible tmp]# ansible web -m copy -a 'src=/etc/hosts dest=/tmp/hosts'

相關選項:

backup:在覆蓋前,將源文件備份,備份文件包含時間信息,有倆選項:yes|no
content:用於替代」src」,能夠直接設定指定文件的值
dest:必選項,要將源文件複製到遠程主機的絕對路徑,若是源文件是一個目錄,那麼該路徑必須是個目錄
directory_mode:遞歸設定目錄的權限,默認爲系統默認權限
force:若是目標主機包含該文件,但內容不一樣,若是設置爲yes,則強制覆蓋,若是爲no,則只有當目標主機的目標位置不存在該文件時,才複製。默認爲yes
others:全部的file模塊裏的選項均可以在這裏使用
src:被複制到遠程主機的本地文件,能夠是絕對路徑,也能夠是相對路徑。若是路徑是一個目錄,他將遞歸複製。這種狀況路徑使用」/」來結尾,則只複製目錄裏的內容,若是沒有使用「/」,則包含目錄在內的所有內容複製,相似與rsync。
owner:指定屬主
group:指定屬組
mode:指定權限,能夠以數字指定好比0644

參考:<https://docs.ansible.com/ansible/latest/modules/copy_module.html>

模塊四:對遠程文件管理--file模塊

修改文件權限:
[root@ansible ~]# ansible web -m file -a 'path=/srv/a.txt mode=600 owner=snow group=snow'
建立一個文件:
[root@ansible ~]# ansible web -m file -a 'dest=/srv/a.txt state=touch'
建立一個目錄文件:
[root@ansible ~]# ansible web -m file -a 'path=/srv/haha mode=600 state=directory'
建立一個軟連接:
[root@ansible ~]# ansible web -m file -a 'dest=/srv/a.lnk src=/srv/a.txt state=link'
刪除文件:
[root@ansible ~]# ansible web -m file -a 'path=/srv/a.lnk state=absent'

相關選項:

force:須要在兩種狀況下強制建立軟連接,一種源文件不存在,但以後會創建的狀況;另外一種是目標軟連接存在,須要先取消以前的連接,再建立新連接,有兩個選項:yes|no
path:必選項,定義文件/目錄的路徑(alias:dest,name)
recurse:遞歸設置文件的屬性,只對目錄有效
src:被連接的源文件路徑,只能用於state=link狀況
dest:目標文件路徑,只能用於state-link狀況
state:
        directory:若是目錄文件不存在,就建立目錄文件
        *file:即便文件不存在也會被建立
        link:建立軟連接
        hard:建立硬連接
        touch:若是文件不存在,則會建立一個新的文件,若是文件或目錄已存在,則更新其最後修改時間
        absent:刪除目錄、文件或者取消連接文件

參考:<https://docs.ansible.com/ansible/latest/modules/file_module.html>

fetch模塊: 從遠程服務器拉取文件至本機,只能fetch文件,不能fetch目錄,若是拉目錄,先tar/zip 再拉到本機便可。

使用參考:<https://docs.ansible.com/ansible/latest/modules/fetch_module.html>

模塊五:程序包管理工具--yum模塊

安裝程序包(可接版本號):
[root@ansible ~]# ansible web -m yum -a 'name=httpd state=present'
安裝最新程序包:
[root@ansible ~]# ansible web -m yum -a 'name=httpd state=latest'
卸載程序包:
[root@ansible ~]# ansible web -m yum -a 'name=httpd state=absent'

相關選項:

conf_file            #設定遠程yum安裝時所依賴的配置文件。如配置文件沒有在默認的位置。
disable_gpg_check    #是否禁止GPG checking,只用於`present' or `latest'。
disablerepo          #臨時禁止使用yum庫。 只用於安裝或更新時。
enablerepo           #臨時使用的yum庫。只用於安裝或更新時。
name=                #所安裝的包的名稱
state=               #present安裝, latest安裝最新的, absent 卸載軟件。
update_cache         #強制更新yum的緩存

參考:<https://docs.ansible.com/ansible/latest/modules/yum_module.html>

注意:此模塊只能在Python2上使用,在Python3上須要使用dnf模塊用於包管理

使用參考:<https://docs.ansible.com/ansible/latest/modules/dnf_module.html>

模塊六:服務程序管理--Service模塊

啓動服務:
[root@ansible ~]# ansible web -m service -a 'name=httpd state=started'
開機啓動服務:
[root@ansible ~]# ansible web -m service -a 'name=httpd enabled=yes'

相關選項:

arguments         #命令行提供額外的參數
enabled           #設置開機啓動。
name=             #服務名稱
runlevel          #開機啓動的級別,通常不用指定。
sleep             #在重啓服務的過程當中,是否等待。如在服務關閉之後等待2秒再啓動。
state     #started啓動服務, stopped中止服務, restarted重啓服務, reloaded重載配置

參考:<https://docs.ansible.com/ansible/latest/modules/service_module.html>

模塊七:管理計劃任務--cron模塊

[root@ansible ~]# ansible web -m cron -a 'name="sync time" minute=*/10 job="/usr/sbin/ntpdate ntp.aliyun.com"'

相關選項:

backup=        # 若是設置,建立一個crontab備份
cron_file=     #若是指定, 將使用這個文件替換遠程主機上cron.d目錄下用戶的任務計劃,而不是單個用戶計劃任務
day=           # 日應該運行的工做( 1-31, *, */2, etc )
hour=          # 小時 ( 0-23, *, */2, etc )
minute=        #分鐘( 0-59, *, */2, etc )
month=         # 月( 1-12, *, */2, etc )
weekday        # 周 ( 0-6 for Sunday-Saturday, *, etc )
job=           #指明運行的命令是什麼
name=          #定時任務描述
reboot         # 任務在重啓時運行,不建議使用,建議使用special_time
special_time   # 指定何時執行,參數:reboot,annually,monthly,weekly,daily,hourly
state          #指定狀態,prsent表示添加定時任務,也是默認設置,absent表示刪除定時任務
user           # 以哪一個用戶的身份執行

參考:<https://docs.ansible.com/ansible/latest/modules/cron_module.html>

模塊八:遠程主機執行本地腳本--script模塊

[root@ansible ~]# ansible web -m script -a '/tmp/a.sh'

相關選項:

creates:一個文件名,當文件名存在,則該命令不執行
chdir:在執行指令以前,先切換到該目錄
free_from:要執行的Linux指令
removes:一個文件名,當文件名不存在,則該命令不執行
executable:切換shell來執行指令,該執行路徑必須是一個絕對路徑
decrypt:使用Vault控制源文件的自動解碼,選項yes|no

參考:<https://docs.ansible.com/ansible/latest/modules/script_module.html>

模塊九:用戶管理--user模塊

建立加密密碼:
[root@ansible ~]# echo 123456 | openssl passwd -1 -stdin
$1$wMroVeEW$2ImLQiNupnwDJ5nk86F2X0
建立新用戶:
[root@ansible ~]# ansible web -m user -a 'name=wolf system=yes password=$1$wMroVeEW$2ImLQiNupnwDJ5nk86F2X0 state=present'
更新用戶密碼:
[root@ansible ~]# ansible web -m user -a 'name=wolf update_password=always password=$1$wMroVeEW$2ImLQiNupnwDJ5nk86F2X0'
刪除用戶:
[root@ansible ~]# ansible web -m user -a 'name=wolf remove=yes state=absent'

相關選項:

comment    # 用戶的描述信息
createhom  # 是否建立家目錄,yes,默認項,即建立家目錄;no,建立用戶時不建立家目錄.
force      # 在使用`state=absent'是, 行爲與`userdel --force'一致.
group      # 指定基本組
groups     # 指定附加組,若是指定爲('groups=')表示刪除全部組
home       # 指定用戶家目錄
login_class     #能夠設置用戶的登陸類 FreeBSD, OpenBSD and NetBSD系統.
move_home       # 若是設置爲`home='時, 試圖將用戶主目錄移動到指定的目錄
name=           # 指定用戶名
non_unique      # 該選項容許改變非惟一的用戶ID值
password        # 指定用戶密碼,password參數須要接受md5加密後的值
remove          # yes:刪除家目錄,須要指定此參數;no:默認項,刪除用戶時默認不刪除用戶家目錄.
shell           # 指定默認shell
state           #設置賬號狀態,默認值爲present表示建立,可不寫,指定值爲absent表示刪除
system          # 當建立一個用戶,設置這個用戶是系統用戶。這個設置不能更改現有用戶。
uid             #指定用戶的uid
update_password # 更新用戶密碼,always:新密碼和舊密碼不一樣時進行修改,on_create:爲新建用戶指定密碼
expires         #指明密碼的過時時間

參考:<https://docs.ansible.com/ansible/latest/modules/user_module.html>

模塊十:收集遠程主機的信息--setup模塊

收集可用的facts用於內建變量。每一個主機的各類信息,cpu顆數、內存大小等。會存在facts中的某個變量中。調用後返回不少對應主機的信息,在後面的操做中能夠根據不一樣的信息來作不一樣的操做。使用filter參數過濾,如redhat系列用yum安裝,而debian系列用apt來安裝軟件

[root@ansible ~]# ansible web -m setup –a ‘filter=ansible_*_mb’

參考:<https://docs.ansible.com/ansible/latest/modules/setup_module.html>

相關文章
相關標籤/搜索