Ansible 常用的 Ansible Module

2020-09-15 16:56 更新

在上一章「Ansible查看Ansible Modules文件」學(xué)會(huì)怎么看文件以后,接著凍仁將介紹自己較常用的8個(gè)模組(Modules)。

automate_with_ansible_practice-17

(以下依英文字母排列)

易于

易于  模塊的英文給的Debian,Ubuntu的等作業(yè)系統(tǒng)(OS)使用的套件模組(包裝模塊),我們可以通過它管理易于套件。其類似Linux的指令有  apt ,  apt-get,  aptitude 和  dpkg 。

系統(tǒng)需求:需先安裝python-apt(python 2)或python3-apt(python 3)的apt套件。

  1. 更新套件索引(快?。?,等同于  apt-get update 指令。

    - name: Update repositories cache
     apt:
       update_cache: yes
    
  2. 安裝VIM套件。

    - name: Install the package "vim"
     apt:
       name: vim
       state: present
    
  3. 移除納米套件。

    - name: Remove "nano" package
     apt:
       name: nano
       state: absent
    

命令

命令  模塊是個(gè)可以在遠(yuǎn)端上執(zhí)行指令的指令模組(Commands Modules),剛?cè)腴TAnsible會(huì)用模塊不多?只要Linux Shell會(huì)通的指令都可以透過它使用。但它不支持變數(shù)(變量)和  < ,  >,  |,  ;  和  & 等運(yùn)算,若有這類請需求改用  外殼  模塊。

  1. 重新開機(jī)。

    - name: Reboot at now
     command: /sbin/shutdown -r now
    
  2. 當(dāng)某個(gè)檔案不存在時(shí)才執(zhí)行該指令。

    - name: create .ssh directory
     command: mkdir .ssh creates=.ssh/
    
  3. 先切換目錄再執(zhí)行指令。

    - name: cat /etc/passwd
     command: cat passwd
     args:
       chdir: /etc
    

復(fù)制

copy  module是從本地復(fù)制檔案到遠(yuǎn)端的檔案模組(Files Modules),若有使用變數(shù)需求者,可改用  模板  模塊,這部份凍仁會(huì)在第14章提到。其類似的Linux指令為  scp

  1. 復(fù)制ssh public key到遠(yuǎn)端( chmod 644 /target/file)。

    - name: copy ssh public key to remote node
     copy:
       src: files/id_rsa.pub
       dest: /home/docker/.ssh/authorized_keys
       owner: docker
       group: docker
       mode: 0644
    
  2. 復(fù)制ssh public key到遠(yuǎn)端( chmod u=rw,g=r,o=r /target/file)。

    - name: copy ssh public key to remote node
     copy:
       src: files/id_rsa.pub
       dest: /home/docker/.ssh/authorized_keys
       owner: docker
       group: docker
       mode: "u=rw,g=r,o=r"
    
  3. 復(fù)制nginx vhost設(shè)定檔到遠(yuǎn)端,并備份原有的檔案。

    - name: copy nginx vhost and backup the original
     copy:
       src: files/ironman.conf
       dest: /etc/nginx/sites-available/default
       owner: root
       group: root
       mode: 0644
       backup: yes
    

文件

文件  模塊的英文在遠(yuǎn)端建立和刪除檔案(文件),目錄(目錄),軟連結(jié)(符號(hào)連接)的檔案模組(文件的模塊)。其類似的Linux的的的指令為  chown ,  chown,  ln,  mkdir  和  touch

  1. 建立檔案( touch),并設(shè)定檔案權(quán)限為644。

    - name: touch a file, and set the permissions
     file:
       path: /etc/motd
       state: touch
       mode: "u=rw,g=r,o=r"
    
  2. 建立目錄( mkdir),并設(shè)定檔案擁有者為docker。

    - name: create a directory, and set the permissions
     file:
       path: /home/docker/.ssh/
       state: directory
       owner: docker
       mode: "700"
    
  3. 建立軟連結(jié)( ln)。

    - name: create a symlink file
     file:
       src: /tmp
       dest: /home/docker/tmp
       state: link
    

lineinfile

lineinfile  module是個(gè)可用正規(guī)表示式對檔案進(jìn)行插入或取代文字的檔案模組(Files Modules)。其類似的Linux指令為  sed

  1. 移除搬運(yùn)工使用者的須藤的權(quán)限。

    - name: remove sudo permission of docker
     lineinfile:
       dest: /etc/sudoers
       state: absent
       regexp: '^docker'
    
  2. 在  /etc/hosts 檔案里用  127.0.0.1 localhost  取代開頭和結(jié)尾結(jié)尾狀語從句:狀語結(jié)尾從句:為  127.0.0.1 的一行。

    - name: set localhost as 127.0.0.1
     lineinfile:
       dest: /etc/hosts
       regexp: '^127\.0\.0\.1'
       line: '127.0.0.1 localhost'
       owner: root
       group: root
       mode: 0644
    

服務(wù)

service  module是個(gè)用來管理遠(yuǎn)端系統(tǒng)服務(wù)的系統(tǒng)模組(System Modules)。其類似的Linux指令為  service 。

  1. 啟用nginx的的。

    - name: start nginx service
     service:
       name: nginx
       state: started
    
  2. 停止nginx的的。

    - name: stop nginx service
     service:
       name: nginx
       state: stopped
    
  3. 重開網(wǎng)路服務(wù)。

    - name: restart network service
     service:
       name: network
       state: restarted
       args: eth0
    

貝殼

外殼  模塊可以的英文在遠(yuǎn)端用  /bin/sh  執(zhí)行指令的指令模組(命令模塊),支持變數(shù)(變量)和  <,  >,  | ,  ; 和  & 等運(yùn)算。

  1. 借由  ls 狀語從句:  wc 檢查檔案數(shù)量。

    - name: check files number
     shell: ls /home/docker/ | wc -l
    
  2. 把所有的Python的中的行程給砍掉。

    - name: kill all python process
     shell: kill -9 $(ps aux | grep ssh | awk '{ print $2 }')
    

統(tǒng)計(jì)

stat  module是用來檢查檔案狀態(tài)的檔案模組(Files Modules)。其類似的Linux指令為  stat 。

  1. 檢查檔案是否存在,若不存在則建立它。

    - name: check the 'vimrc' target exists
     stat:
       path: /home/docker/.vimrc
     register: stat_vimrc
    
    - name: touch vimrc
     file:
       path: /home/docker/.vimrc
       state: touch
             mode: "u=rw,g=r,o=r"
     when: stat_vimrc.stat.exists == false
    
  2. 取得某檔案的md5sum。

    - name: Use md5sum to calculate checksum
     stat:
       path: /path/to/something
       checksum_algorithm: md5sum
    

后話

以上為凍仁較常用的8個(gè)模塊,大家可以先從以上的模塊入門Ansible喔!

參賽第12天的凍仁,一早騎車上班時(shí)出了點(diǎn)小小的車禍,也很幸運(yùn)的沒什么大礙。各位鐵人們在參賽的同時(shí)也要多加留意自身安全喔!

相關(guān)連結(jié)


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)