ansible批量管理(模塊)

1.ansible-doc

  • 幫助手冊,相當於shell的man
ansible-doc -l    #列出所有模塊
ansible-doc 模塊名   #查看該模塊的幫助手冊

2.ping模塊

  • 測試網絡連通性,沒有參數
ansible web -m ping

3.command模塊

  • 默認模塊,遠程執行命令
ansible web -m command -a 'uptime'    #對web組的主機執行uptime
  • 該模塊通過-a跟上要執行的命令可以直接執行,若命 令裏有如下字符則執行不成功
  • </>/|/&
  • command模塊不能解析系統變量
  • 該模塊不啓動 shell直接在ssh進程中執行,所有使用到shell解釋器的命令執行都會失敗

4.shell模塊

  • shell模塊用法基本和 command一樣,區別是shell模塊是通過/bin/sh進行執行命令,可以執行任意命令
  • 不能執行交互式的命令,例如 vim top等
ansible all -m shell -a 'uptime'    #查看所有機器的負載
ansible all -m shell -a 'chdir=/tmp touch testfile'   #在tmp目錄下創建文件,chdir:指定工作目錄

變量解析

  • ansible 執行命令是二次解析
  • 第一次在本機解析,第二次在執行機器解析
  • 需要第二次解析的變量要轉義

5.script模塊

  • 在本地寫腳本,然後使用script模塊批量執行
ansible web -m script -a '路徑/腳本名'
  • 注意:該腳本包含但不限於shell腳本,只要指定Sha-bang解釋器的腳本都可運行

6.yum模塊

  • 使用yum包管理器來管理軟件包
  • name:要進行操作的軟件包名字
  • state:動作( installed, removed)
ansible db -m yum -a 'name="mariadb-server" state=installed'   # 安裝mariadb,多個軟件時中間逗號隔開
ansible db -m yum -a 'name="lrzsz,mariadb" state=removed'   # 卸載lrzsz和Mariadb,多個軟件時中間逗號隔開

7.service模塊

  • name:必選項,服務名稱
  • enabled:是否開機啓動yes|no
  • sleep:執行restarted,會在stop和start之間沉睡幾秒鐘
  • state:對當前服務執行啓動,停止、重啓、重新加載等操作( started, stopped, restarted, reloaded)
ansible db -m service -a 'name="mariadb" state=started enabled=yes'  #啓動mariadb服務,設置爲開機自啓

8.copy模塊

  • 複製文件到遠程主機
  • src:複製本地文件到遠程主機,絕對路徑和相對路徑都可,路徑爲目錄時會遞歸複製。若路徑以"/“結尾,只複製目錄裏的內容,若不以”/"結尾,則複製包含目錄在內的整個內容,類似於rsync
  • dest:必選項。遠程主機的絕對路徑,如果源文件是一個目錄,那該路徑必須是目錄
  • backup:覆蓋前先備份原文件,備份文件包含時間信息。有兩個選項: yes|no
  • force:若目標主機包含該文件,但內容不同,如果設置爲yes,則強制覆蓋,設爲no,則只有當目標主機的目標位置不存在該文件時才複製。默認爲yes
ansible db -m copy -a 'src=/etc/resolv.conf dest=/etc/'
ansible db -m copy -a 'src=/etcyum.repos.d/ dest=/etc/yum.repos.d/'

9.lineinfile模塊(替換整行)

  • 類似sed的一種行編輯替換模塊
  • path目標文件文件
  • regexp正則表達式,要修改的行
  • line最終修改的結果
ansible db -m lineinfile -a 'path="/etc/my.cnf"  regexp="^binlog-format"  line="binlog-format  =  row"' #修改my.cnf,中bin-log的格式  mixed --> row

10.replace(替換匹配的字符串)

  • 類似sed的一種行編輯替換模塊
  • path目的文件
  • regexp正則表達式
  • replace替換後的結果
ansible db -m replace -a 'path="/etc/my.cnf"  regexp="row"  replace="mixed"'  #替換指定字符row-->mixed

11.setup模塊

  • 主要用於獲取主機信息,playbooks裏經常會用的另一個參數gather_facts與該模塊相關,setup模塊下經常用的是filter參數
  • filter過濾所需信息
ansible cache -m setup -a 'filter=ansible_distribution'
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章