企業——自動化部署 ansible 中的一些經常使用命令及經常使用模塊

一.ansible 命令詳解

  能夠經過 ansible -h 來查看幫助,下面咱們列出一些比較經常使用的選項,並解釋其含義:web

  -a MODULE_ARGS   ##模塊的參數,若是執行默認COMMAND的模塊,便是命令參數,如: 「date」,「pwd」等等
  -k--ask-pass   #ask for SSH password。登陸密碼,提示輸入SSH密碼而不是假設基於密鑰的驗證
    --ask-su-pass   #ask for su password。su切換密碼
  -K--ask-sudo-pass  #ask for sudo password。提示密碼使用sudo,sudo表示提權操做
    --ask-vault-pass  #ask for vault password。假設咱們設定了加密的密碼,則用該選項進行訪問
  -B SECONDS    #後臺運行超時時間
  -C   #模擬運行環境並進行預運行,能夠進行查錯測試
  -c CONNECTION   #鏈接類型使用
  -f FORKS   #並行任務數,默認爲5
  -i INVENTORY   #指定主機清單的路徑,默認爲/etc/ansible/hosts
  --list-hosts   #查看有哪些主機組
  -m MODULE_NAME   #執行模塊的名字,默認使用 command 模塊,因此若是是隻執行單一命令能夠不用 -m參數
  -o   #壓縮輸出,嘗試將全部結果在一行輸出,通常針對收集工具使用
  -S   #用 su 命令
  -R SU_USER   #指定 su 的用戶,默認爲 root 用戶
  -s   #用 sudo 命令
  -U SUDO_USER   #指定 sudo 到哪一個用戶,默認爲 root 用戶
  -T TIMEOUT   #指定 ssh 默認超時時間,默認爲10s,也可在配置文件中修改
  -u REMOTE_USER   #遠程用戶,默認爲 root 用戶shell

  -v   #查看詳細信息,同時支持-vvv-vvvv可查看更詳細信息ssh

 

二.經常使用的一些模塊

1.檢測連通性 ping:

  ansible all -m ping工具

 

2.command模塊:

  這個模塊能夠直接在遠程主機上執行命令,並將結果返回本主機。即 ssh 鏈接了遠程的操控的主機,由於以前配置了免密登陸,所以能夠鏈接。而後登陸到遠程主機以後,在遠程主機上執行後面的操做的命令。測試

  ansible web -m command -a 'hostname'fetch

 

 下面來看一看該模塊下經常使用的幾個命令:加密

  chdir    ##在執行命令以前,先切換到指定的目錄下spa

  executable   ##切換shell來執行命令,須要使用命令的絕對路徑code

  free_form     ##要執行的Linux指令,通常使用Ansible的-a參數代替。orm

  creates    ##一個文件名,當這個文件存在,則該命令不執行,能夠用來作判斷

  removes   ##一個文件名,這個文件不存在,則該命令不執行

 

示例:

  ansible web -m command -a 'chdir=/data/ ls'   ##先切換到 /data/ 目錄下,再執行 ls 命令

  ansible web -m command -a 'creates=/data/aaa.jpg ls'  ##若是 /data/aaa.jpg 存在,則不執行 ls 命令

  ansible web -m command -a 'removes=/data/aaa.jpg cat /data/a'  ##若是/data/aaa.jpg存在,則執行 cat 後面的操做

 

3.shell模塊:

  shell模塊能夠在遠程主機上調用shell解釋器運行命令,支持shell的各類功能,例如管道等。只要是shell命令,均可以經過這個模塊在遠程主機上運行。

  示例:ansible web -m shell -a ' cat /etc/passwd |grep root '

 

4.copy模塊:

  這個模塊用於將文件複製到遠程主機,同時支持給定內容生成文件和修改權限等。

  其相關選項以下:

  src    #被複制到遠程主機的本地文件。能夠是絕對路徑,也能夠是相對路徑。若是路徑是一個目錄,則會遞歸複製,用法相似於"rsync"
  content  #用於替換"src",能夠直接指定文件的值
  dest    #必選項,將源文件複製到的遠程主機的絕對路徑

  backup   #當文件內容發生改變後,在覆蓋以前把源文件備份,備份文件包含時間信息

  directory_mode    #遞歸設定目錄的權限,默認爲系統默認權限
  force    #當目標主機包含該文件,但內容不一樣時,設爲"yes",表示強制覆蓋;設爲"no",表示目標主機的目標位置不存在該文件才複製。默認爲"yes"
  others    #全部的 file 模塊中的選項能夠在這裏使用

 

示例:

  ansible web -m copy -a 'src=/mnt/hello dest=/data/hello'  ##將本機的 /mnt/hello 文件複製到遠程主機的 /data/hello 下

  ansible web -m copy -a 'content="I am keer\n" dest=/data/name mode=666'

  ansible web -m shell -a 'ls -l /data/'  ##能夠查看上面的文件的權限是不是設定的 666

  ansible web -m copy -a 'content="I am keerya\n" backup=yes dest=/data/name mode=666'   ##覆蓋源文件前,backup 備份一下

 

5.file模塊:

  該模塊主要用於設置文件的屬性,好比建立文件、建立連接文件、刪除文件等。

 

  下面是一些常見的命令:

  force  ##須要在兩種狀況下強制建立軟連接,一種是源文件不存在,但以後會創建的狀況下;另外一種是目標軟連接已存在,須要先取消以前的軟鏈,而後建立新的軟鏈,有兩個選項:yes|no
  group  ##定義文件/目錄的屬組。後面能夠加上mode:定義文件/目錄的權限
  owner  ##定義文件/目錄的屬主。後面必須跟上path:定義文件/目錄的路徑
  recurse  ##遞歸設置文件的屬性,只對目錄有效,後面跟上src:被連接的源文件路徑,只應用於state=link的狀況
  dest  ##被連接到的路徑,只應用於state=link的狀況


  state  ##狀態,有如下選項:

    directory:若是目錄不存在,就建立目錄
    file:即便文件不存在,也不會被建立
    link:建立軟連接
    hard:建立硬連接
    touch:若是文件不存在,則會建立一個新的文件,若是文件或目錄已存在,則更新其最後修改時間
    absent:刪除目錄、文件或者取消連接文件

 

示例:

  ansible web -m file -a 'path=/data/bbb.jpg src=aaa.jpg state=link'

  ansible web -m file -a 'path=/data/a state=absent'  ##刪除前面的文件

  

6.fetch模塊:

  該模塊用於從遠程某主機獲取(複製)文件到本地。

  dest:用來存放文件的目錄
  src:在遠程拉取的文件,而且必須是一個file,不能是目錄

 

示例:

  ansible web -m fetch -a 'src=/data/hello dest=/data'

相關文章
相關標籤/搜索