1. 程式人生 > >ansible系列第二篇(模塊使用)

ansible系列第二篇(模塊使用)

dde 模塊 屬性。 images att 遠程執行命令 block mat sent

ansible系列第二篇(模塊使用)
  • 模塊使用

    • 設置ansible提權

    在hosts文件加入sudo提權的密碼:

    18.18.23.102  ansible_become_pass=‘passwd‘

    執行: ansible test -S -R root -m shell -a "ls -l /"

    • 查看ansible有那些模塊:

    ansible-doc -l

    • 獲取各個模塊詳細幫助信息

      ansible-doc -s ping

    • ping模塊:

    ansible test -m ping

    • 從受控主機拉取文件:

    調用模塊並傳入模塊所需要的參數

    ansible test -m fetch -a "src=/etc/passwd dest=/automation/matchine"

    ansible會自動在管控端創建各個主機對應的目錄。

  • 文件操作模塊

    查看模塊的幫助方式: ansible-doc -s modulename

    • copy模塊

    • 常用參數

      src參數: copy文件或目錄。

      dest參數: 指定文件被拷貝到遠程主機的哪個目錄中。

      content參數: 使用content直接指定文件內容。

      force參數: 默認值yes,覆蓋。為no時,不執行覆蓋操作。

      backup參數: yes,先備份,再拷貝文件到遠程主機。

      mode參數: 文件權限。

      owner參數: 文件屬主。

      group參數: 文件屬組。

    • file模塊

    • 常用參數:

      path參數: 指定文件或目錄。

      state參數: absent,刪除文件或目錄。touch文件,link創建軟鏈接文件。

      recurse參數: yes時可遞歸修改目錄中文件的屬性。

    例如:
      創建test.txt文件:
       ansible test -m file -a "path=/home/yuan/test.txt state=touch"
       ansible test -S -R root -m file -a "path=/opt/abc.txt state=touch"
      刪除test.txt文件:
       ansible test -m file -a "path=/home/yuan/test.txt state=absent"
       ansible test -S -R root -m file -a "path=/opt/abc.txt state=absent"
      創建目錄hello:
       ansible test -m file -a "path=/home/yuan/hello state=directory" 
    
      創建軟鏈接文件:
      軟鏈接名為go,
      ansible test -m file "path=/home/yuan/bin/linkfile state=link src=/home/yuan/services/go/bin/gofile"
    
      遞歸創建目錄並遞歸修改屬主和屬組:
       ansible test -S -R root -m file -a "path=/abc/test/aaa state=directory owner=yuan group=yuan recurse=yes"
    • blockinfile模塊

    在指定文件插入文本.

    • 常用參數:

      path:文件路徑

      block: 指定文本

      state: 執行插入,更新,刪除操作。

      backup: 是否在修改文件之前對文件進行備份。

      create: 文件不存在,是否創建文件。

    • lineinfile模塊

    查看一行文本是否存在於指定文件中或從文件中刪除指定文本。

    • find模塊:

    在被控機查找符合條件的文件。

    • 常用參數:

      paths: 在哪個目錄查找。

      recurse: 遞歸查找。

      hidden: yes時可查找隱藏文件。

      file_type: 指定文件類型。

      patterns:通配符或正則表達式匹配文件。

      contains: 根據文章內容查找文件。

      age: 根據時間範圍查找文件。

      size: 根據文件大小查找文件。

    • replace模塊:

    根據指定的正則表達式替換文件中的字符串。

  • 命令行模塊:

    • command模塊:

    在被控機上執行命令。

    • 參數:

      free_form:指定遠程執行命令

      chdir: 指定一個目錄。

      creates: 指定文件存在就不執行。

      removes: 指定文件不存在,就不執行對應命令。

    • shell模塊

    在被控機執行命令時,會經過被控機的/bin/sh程序處理。

    • script模塊

    在被控機上執行管控機上的腳本。

    參數和command模塊類似。

    例如: $ ansible test -m script -a "/home/yuan/abc.sh"

  • 系統類模塊

    • cron模塊

    管理被控機的計劃任務。

    • 參數:

      minute: 設定分鐘。

      hours: 設定小時。

      day: 設定天數

      month: 設定月

      weekday: 設定周幾

      special_time: @開頭的時間設定格式使用該參數設置。可用值:reboot,yearly或annually(每年),monthly(每月),weekly(每周),daily(每天),hourly(每小時).

      user: 設置計劃任務屬於哪個用戶。

      job: 指定任務中需要執行的命令或腳本。

      name: 設置計劃任務名稱。

      state: 根據任務名稱修改或刪除任務。

    例如:
      給普通用戶設置計劃任務:
       ansible test -m cron -a "name=‘echo‘ minute=1 hour=* job=‘echo xiao3 >> /home/yuan/abc.txt‘"
      配置重啟時執行該計劃任務:
       ansible test -S -R root -m cron -a "name=‘reboot‘ special_time=reboot job=‘echo reboot xiao3 >> /home/yuan/abc.txt‘"
      刪除計劃任務:
       ansible test -S -R root -m cron -a "name=‘reboot‘ state=absent"
    • service模塊

    管理被控機的服務。service模塊和systemd模塊類似。

    • 參數:

      name: 服務名稱

      state: 指定服務的狀態。started,stopped,restarted,reloaded.

      enabled: 指定是否將服務設置為開機自啟。

      例如:
      啟動mysql服務:
      ansible test -S -R root -m systemd -a "name=mysql state=started
      設置開機自啟:
      ansible test -S -R root -m systemd -a "name=mysql enabled=yes"
    • user模塊:
      管理被控機的用戶。
    • group模塊:
      管理被控機的組。
  • 包管理模塊:

    • yum_repository模塊
      管理被控機為centos系列的yum倉庫。
    • yum模塊:
      在被控機為centos系列通過yum源管理軟件包。
    • apt模塊:
      在被控機為debian系列通過apt源管理軟件包
      例如:
      安裝tree命令:
      ansible test -S -R root -m apt -a "name=tree state=latest update_cache=yes"

      微信公眾號: 技術分享圖片

    歡迎各位大佬投稿和關註,非常感謝,如對文章內容有什麽意見,也可以多多指出。

ansible系列第二篇(模塊使用)