1. 程式人生 > 其它 >Ansible常用模組詳解

Ansible常用模組詳解

參考來源: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"

....