Ansible常用模組詳解
阿新 • • 發佈:2022-05-23
參考來源:http://www.yunweipai.com/34676.html
Ansible基於多模組管理,常用Ansible模組:command(預設)、shell、script、yum、copy、File、async、docker、cron、mysql_user、ping、sysctl、user、acl、add_host、easy_install、haproxy等。
Ansible批量管理之前,需將被管理的伺服器IP列表新增至/etc/ansible/hosts檔案中,可自定義分組。
Ansible常用引數如下:
-v //列印詳細模式; -i //指定hosts檔案路徑;-f //指定fork開啟同步程序的個數,預設5; -m //指定module名稱,預設模組command; -a //module模組的引數或者命令; -k //輸入遠端被管理端密碼; –sudo //基於sudo使用者執行; -K //提示輸入sudo密碼與sudo一起使用; -u //指定移動端的執行使用者; -C //測試執行過程,不改變真實內容,相當於預演; -T //執行命令超時時間,預設為10秒; --version //檢視Ansible軟體版本資訊
//#若多臺遠端主機使用者名稱密碼不一致時,可在hosts配置檔案中做配置;
[database]
192.168.1.1 ansible_user=root ansible_password=Pan@#123
192.168.1.2 ansible_user=root ansible_password=Pass!@#123
//#也可做免密,(推薦)
ssh-keygen //生成祕鑰檔案,家目錄.ssh下會生成鎖id_rsa.pub、祕鑰id_rsa兩個檔案 ls /root/.ssh/id_rsa* //祕鑰存放路徑 ssh-copy-id -i ~/.ssh/id_rsa.pub 192.168.1.2 //拷貝鎖檔案至被控端
- ping模組,用於判斷遠端客戶端是否線上。
Ansible批量管理基於SSH,遠端執行命令時需要使用者名稱密碼,也可以加入 '-k ' 引數手動輸入密碼,或基於ssh-keygen免祕鑰。
ansible all -k -m ping //all表示hosts列表中所有主機,也可指定具體IP或分組 ansible panwei -k -m ping //panwei表示hosts列表中的一個分組 ansible 10.226.35.58 -k -m ping //表示只ping10.226.35.58這一個主機 ansible panwei -k -m ping -i /etc/ansible/hosts //-i表示指定hosts檔案路徑,預設可省略
- command模組,為ansible預設模組,用於執行Linux基礎命令,可以執行遠端伺服器命令執行、任務執行等操作。
command為預設模組,可忽略-m選項。
# command模組使用詳解:
chdir //執行命令前,切換到目錄; creates //當該檔案存在時,則不執行該步驟; executable //自版本2.4起刪除了executable引數,請改用shell模組; free_form //需要執行的指令碼; removes //當該檔案不存在時,則不執行該步驟; warn //如果在ansible.cfg中存在告警,如果設定了False,不會警告此行。
# 舉例
ansible all -k -m command -a "date" //表示檢視所有主機系統時間
ansible panwei -k -m command -a "date" //表示只看panwei這個組的主機系統時間
ansible 10.226.35.58 -k -m command -a "date" //表示只看10.226.35.58的主機系統時間
ansible 10.226.34.15* -k -m command -a "df -Th" //#正則模式,表示指定多個或想要看的幾個主機
ansible 10.226.34.159,10.226.35.58 -k -m command -a "df -Th"
ansible panwei -k -m command -a "df -Th" //#其他舉例,指令需要雙引號引起來
ansible panwei -k -m command -a "free -h"
ansible panwei -k -m command -a "ifconfig"
ansible panwei -k -m command -a "lscpu"
ansible panwei -k -m command -a "ping -c3 baidu.com"
ansible panwei -k -m command -a "yum install mariadb mariabd-server -y"
- copy模組,用於檔案或者目錄拷貝,支援檔案、目錄、許可權、使用者組功能。
# copy模組使用詳解: src //Ansible端原始檔或者目錄,空資料夾不拷貝; content //用來替代src,用於將指定檔案的內容,拷貝到遠端檔案內; dest //客戶端目標目錄或者檔案,需要絕對路徑; backup //拷貝之前,先備份遠端節點上的原始檔案; directory_mode //用於拷貝資料夾,新建的檔案會被拷貝,而老舊的不會被拷貝; follow //支援link檔案拷貝; force //覆蓋遠端主機不一致的內容; group //設定遠端主機資料夾的組名; mode //指定遠端主機檔案及檔案及的許可權; owner //設定遠端主機資料夾的使用者名稱。
#舉例: ansible panwei -k -m copy -a 'src=/etc/passwd dest=/tmp/ mode=755 owner=root' //表示將ansible端原始檔拷貝到目標主機,指令需要單引號引起來 ansible panwei -k -m copy -a 'content="Hello World" dest=/tmp/test.txt mode=755 owner=root' // ansible panwei -k -m copy -a 'content="Hello World" dest=/tmp/test.txt mode=755 owner=root backup=yes' //
- yum模組,用於軟體的安裝、升級、解除安裝。
# YUM模組使用詳解: conf_file //設定遠端yum執行時所依賴的yum配置檔案 disable_gpg_check //安裝軟體包之前是否檢查gpg key; name //需要安裝的軟體名稱,支援軟體組安裝; update_cache //安裝軟體前更新快取; enablerepo //指定repo源名稱; skip_broken //跳過異常軟體節點; state //軟體包狀態,包括:安裝(installed、present、latest)、解除安裝(absent、removed)。
#舉例 ansible panwei -k -m yum -a "name=nginx,keepalived state=installed" //表示安裝Nginx、keepalived,指令需要雙引號引起來 ansible panwei -k -m yum -a "name=nginx,keepalived state=removed" //表示解除安裝Nginx、keepalived ansible panwei -k -m yum -a "name=nginx,keepalived state=installed disable_gpg_check=no" ////表示安裝Nginx、keepalived,不檢查key
- file模組,用於對檔案的建立、刪除、修改、許可權、屬性的維護和管理。
# File模組使用詳解: src //ansible端原始檔或者目錄; follow //支援link檔案拷貝; force //覆蓋遠端主機不一致的內容; group //設定遠端主機資料夾的組名; mode //指定遠端主機檔案及檔案及的許可權; owner //設定遠端主機資料夾的使用者名稱; path //目標路徑,也可以用dest,name代替; state //狀態包括:file、link、directory、hard、touch、absent; attributes //檔案或者目錄特殊屬性。
#舉例 ansible panwei -k -m file -a "path=/tmp/wps/ state=directory mode=755" //表示給目標主機建立目錄並賦755 ansible panwei -k -m file -a "path=/tmp/`date +%F` state=directory mode=755" ansible panwei -k -m file -a "path=/tmp/wps/aaa.md state=touch mode=755" //表示給目標主機建立檔案並賦755 ansible panwei -k -m file -a "path=/tmp/wps/ state=absent" //表示刪除目標主機上指定的目錄
- user模組,用於作業系統使用者、組、許可權、密碼等操作。
# user模組使用詳解: system //預設建立為普通使用者,為yes則建立系統使用者; append //新增一個新的組; comment //新增描述資訊; createhome //給使用者建立家目錄; force //用於刪除強制刪除使用者; group //建立使用者主組; groups //將使用者加入組或者附屬組新增; home //指定使用者的家目錄; name //表示狀態,是否create、remove、modify; password //指定使用者的密碼,此處為加密密碼; remove //刪除使用者; shell //設定使用者的shell登入環境; uid //設定使用者id; update_password //修改使用者密碼; state //使用者狀態,預設為present表示新建使用者。
#舉例 ansible panwei -k -m user -a "name=wps state=absent force=yes" //表示強制刪除wps使用者
- shell模組,用於遠端客戶端上執行各種Shell命令或者執行指令碼,遠端執行命令通過/bin/sh環境來執行,支援比command更多的指令.
# Ansible預設模組是command模組,也可修改預設模組為shell模組;在企業中推薦使用shell模組,它比command模組功能更強大;
# Shell模組使用詳解: chdir //執行命令前,切換到目錄; creates //當該檔案存在時,則不執行該步驟; executable //換用shell環境執行命令; free_form //需要執行的指令碼; removes //當該檔案不存在時,則不執行該步驟; warn //如果在ansible.cfg中存在告警,如果設定了False,不會警告此行。
#舉例 ansible panwei -k -m shell -a "ps -ef |grep sshd" //表示檢視遠端主機sshd程序 ansible 10.226.34.15* -k -m shell -a "/bin/bash /tmp/test.sh >>/tmp/test.log" //表示遠端執行shell指令碼,並輸出日誌 ansible panwei -k -m shell -a "mkdir -p data chdir=/tmp/ state=directory warn=no" //遠端執行建立目錄,執行之前切換到/tmp目錄,遮蔽警告資訊 ansible panwei -k -m shell -a "mkdir -p /data/sh/;cd /data/sh/;touch auto_install_nginx.sh;ls -l /data/sh/" //遠端客戶端執行多個命令時可用‘;’分割
- service模組,用於遠端客戶端各種服務管理,包括啟動、停止、重啟、重新載入等。
# service模組使用詳解: enabled //是否開啟啟動服務; name //服務名稱; runlevel //服務啟動級別; arguments //服務命令列引數傳遞; state //服務操作狀態,狀態包括started, stopped, restarted, reloaded。
# 舉例 ansible panwei -k -m service -a "name=nginx state=restarted" //遠端重啟nginx服務
- Script模組,在遠端主機上執行ansible伺服器上的指令碼。
#舉例
ansible panwei -k -m script -a "/data/test.sh"
....